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