Remove silly DOCTYPE
[scpubgit/App-SCS.git] / t / 03config.t
CommitLineData
9a9eda29 1use strictures 1;
2use Test::More;
3use App::SCS;
4use IO::All;
5
6my $app = App::SCS->new(
7 config => { root_dir => 't/data' }
8);
9
10my $config1 = $app->pages->get({ path => 'config/1' });
11
12ok($config1, 'Got a page object');
13
14is(
15 $config1->html,
16 io->file('t/data/share/pages/config/1.html')->all,
17 "Correct file loaded"
18);
19
20my @page_plugins = @{$config1->_page_plugins};
21
22is(scalar(@page_plugins), 3, 'Three plugins applied');
23
24my ($tp, $pdp, $tp2) = @page_plugins;
25
26ok(
27 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
28 'Template plugin'
29);
30
31is($tp->name, 'layout', 'Template name');
32
33ok(
34 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
35 'PageData plugin'
36);
37
38ok(
39 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
40 'Alternate template plugin plugin'
41);
42
43is ($tp2->name, 'alternate', 'alternate template');
44
45like(
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'
49);
50
51my $config2 = $app->pages->get({ path => 'config/2' });
52
53ok($config2, 'Got a page object');
54
55is(
56 $config2->html,
57 io->file('t/data/share/pages/config/2.html')->all,
58 "Correct file loaded"
59);
60
61@page_plugins = @{$config2->_page_plugins};
62
63is(scalar(@page_plugins), 4, 'Four plugins applied');
64
65my $tp3;
66
67($tp, $pdp, $tp2, $tp3) = @page_plugins;
68
69ok(
70 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
71 'Template plugin'
72);
73
74is($tp->name, 'layout', 'Template name');
75
76ok(
77 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
78 'PageData plugin'
79);
80
81ok(
82 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
83 'Plugin from metadata'
84);
85
86is ($tp2->name, 'third', 'plugin from metadata');
87
88ok(
89 $tp3->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
90 'plugin from config'
91);
92
93is ($tp3->name, 'alternate', 'plugin from config');
94
95like(
96 $config2->_html_zoom->to_html,
97 qr{<h1>Alternate layout</h1>.*<h3>A third layout</h3>}s,
98 'Layout woven correctly'
99);
100
101my $config3 = $app->pages->get({ path => 'config2/1' });
102
103ok($config3, 'Got a page object');
104
105is(
106 $config3->html,
107 io->file('t/data/share/pages/config2/1.html')->all,
108 "Correct file loaded"
109);
110
111@page_plugins = @{$config3->_page_plugins};
112
113is(scalar(@page_plugins), 3, 'Three plugins applied');
114
115($tp, $pdp, $tp2) = @page_plugins;
116
117ok(
118 $tp->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
119 'Template plugin'
120);
121
122is($tp->name, 'layout', 'Template name');
123
124ok(
125 $pdp->isa('App::SCS::Plugin::Core::PagePlugin::PageData'),
126 'PageData plugin'
127);
128
129ok(
130 $tp2->isa('App::SCS::Plugin::Core::PagePlugin::Template'),
131 'Alternate template plugin plugin'
132);
133
134is ($tp2->name, 'third', 'metadata template');
135
136like ($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'
139);
140
141done_testing;