6 my $app = App::SCS->new(
7 config => { root_dir => 't/data' }
10 my $config1 = $app->pages->get({ path => 'config/1' });
12 ok($config1, 'Got a page object');
16 io->file('t/data/share/pages/config/1.html')->all,
20 my @page_plugins = @{$config1->_page_plugins};
22 is(scalar(@page_plugins), 3, 'Three plugins applied');
24 my ($tp, $pdp, $tp2) = @page_plugins;
27 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
31 is($tp->name, 'layout', 'Template name');
34 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
39 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
40 'Alternate template plugin plugin'
43 is ($tp2->name, 'alternate', 'alternate template');
46 $config1->_html_zoom->to_html,
47 qr{<h1>Alternate layout</h1>.*<h2>A different layout should be used\.</h2>}s,
48 'Layout woven correctly'
51 my $config2 = $app->pages->get({ path => 'config/2' });
53 ok($config2, 'Got a page object');
57 io->file('t/data/share/pages/config/2.html')->all,
61 @page_plugins = @{$config2->_page_plugins};
63 is(scalar(@page_plugins), 4, 'Four plugins applied');
67 ($tp, $pdp, $tp2, $tp3) = @page_plugins;
70 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
74 is($tp->name, 'layout', 'Template name');
77 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
82 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
83 'Plugin from metadata'
86 is ($tp2->name, 'third', 'plugin from metadata');
89 $tp3->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
93 is ($tp3->name, 'alternate', 'plugin from config');
96 $config2->_html_zoom->to_html,
97 qr{<h1>Alternate layout</h1>.*<h3>A third layout</h3>}s,
98 'Layout woven correctly'
101 my $config3 = $app->pages->get({ path => 'config2/1' });
103 ok($config3, 'Got a page object');
107 io->file('t/data/share/pages/config2/1.html')->all,
108 "Correct file loaded"
111 @page_plugins = @{$config3->_page_plugins};
113 is(scalar(@page_plugins), 3, 'Three plugins applied');
115 ($tp, $pdp, $tp2) = @page_plugins;
118 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
122 is($tp->name, 'layout', 'Template name');
125 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
130 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
131 'Alternate template plugin plugin'
134 is ($tp2->name, 'third', 'metadata template');
136 like ($config3->_html_zoom->to_html,
137 qr{<h3>A third layout</h3>.*<p>Only the third layout should be used</p>}s,
138 'Layout woven correctly'