Cache test
[scpubgit/App-SCS.git] / t / 04cache.t
1 use warnings;
2 use strict;
3 use Test::More;
4 use App::SCS;
5 use IO::All;
6
7 use File::Tempdir;
8
9 my $tmpdir = File::Tempdir->new();
10 my $dir = io($tmpdir->name);
11
12 $dir->catdir('share/pages/cachetest')->mkpath;
13 $dir->catdir('share/templates')->mkpath;
14
15 io('t/data/cachetest/share/pages/cachetest/1.html') > io($dir->catfile('share/pages/cachetest/1.html'));
16 io('t/data/cachetest/share/pages/cachetest.conf') > io($dir->catfile('share/pages/cachetest.conf'));
17 io('t/data/cachetest/share/templates/layout.html') > io($dir->catfile('share/templates/layout.html'));
18 io('t/data/cachetest/share/templates/alternate.html') > io($dir->catfile('share/templates/alternate.html'));
19 io('t/data/cachetest/share/templates/third.html') > io($dir->catfile('share/templates/third.html'));
20
21 my $app = App::SCS->new(
22   root_dir => $dir
23 );
24
25 my $cachetest1 = $app->pages->get({ path => 'cachetest/1' });
26
27 ok($cachetest1, 'Got a page object');
28
29 is(
30   $cachetest1->html,
31   io->file('t/data/cachetest/share/pages/cachetest/1.html')->all,
32   "Correct file loaded"
33 );
34
35 like ($cachetest1->_html_zoom->to_html,
36   qr{<body>.*<h2>Heading 2</h2>.*</body>}s,
37   'First layout used'
38 );
39
40 # We want to make sure our config is newer than the cached version
41 sleep 1;
42
43 io('t/data/cachetest/share/pages/cachetest2.conf') > io($dir->catfile('share/pages/cachetest.conf'));
44
45 $cachetest1 = $app->pages->get({ path => 'cachetest/1' });
46
47 like ($cachetest1->_html_zoom->to_html,
48   qr{<body>.*<h3>Heading 3</h3>.*</body>}s,
49   'Changing the config invalidates cache, updates content'
50 );
51
52 done_testing;