fix dynamic generation skip bug
[scpubgit/System-Introspector-Report.git] / t / publish_mediawiki_parser.t
CommitLineData
499ebcdd 1use strictures 1;
2use Test::More;
3
4use aliased 'System::Introspector::Report::Publish::MediaWiki::Parser';
5
6my $parser = Parser->new;
7my $stream = $parser->parse(<<'EOR');
8
9= Heading =
10
11<!-- SI:TITLE begin foo -->
12== Foo ==
13<!-- SI:TITLE end foo -->
14
15User description
16
17<!-- SI:TABLE begin foo -->
18<table class="si-report">
19 <tr>
20 <th class="si-colhead-bar">Bar</th>
21 <th class="si-colhead-baz">Baz</th>
22 <th>
23 Qux
24 </th>
25 </tr>
26 <tr>
27 <td class="si-column-bar">231</td>
28 <td class="si-column-baz">421</td>
29 <td>171</td>
30 </tr>
31 <tr>
32 <td class="si-column-bar">232</td>
33 <td class="si-column-baz">422</td>
34 <td>172</td>
35 <td>173</td>
36 </tr>
a57e8790 37 <tr>
38 <td class="si-column-bar">foo<br/>bar</td>
39 <td class="si-column-baz">bar<br/>baz</td>
40 <td>199</td>
41 </tr>
499ebcdd 42</table>
43<!-- SI:TABLE end foo -->
44
45End Text
46
47EOR
48
49is shift(@$stream), '', 'empty line';
50is shift(@$stream), '= Heading =', 'heading';
51is shift(@$stream), '', 'empty line';
52
53do {
54 my $report = shift @$stream;
55 is ref($report), 'HASH', 'report structure';
56
57 is_deeply $report->{id}, ['foo'], 'report id';
58 is $report->{title}, 'Foo', 'report title';
59
60 is $report->{columns}[0]{key}, 'bar', 'first column key';
61 is $report->{columns}[0]{label}, 'Bar', 'first column label';
62 ok not($report->{columns}[0]{user}), 'first column not user supplied';
63
64 is $report->{columns}[1]{key}, 'baz', 'second column key';
65 is $report->{columns}[1]{label}, 'Baz', 'second column label';
66 ok not($report->{columns}[1]{user}), 'second column not user supplied';
67
68 is $report->{columns}[2]{key}, '__usercol_0', 'first user supplied column key';
69 like $report->{columns}[2]{label}, qr{^\s+Qux\s+$}, 'first user supplied column label';
70 ok $report->{columns}[2]{user}, 'third column is user supplied';
71
72 is $report->{columns}[3]{key}, '__usercol_orph_0', 'second user supplied column key';
73 is $report->{columns}[3]{label}, undef, 'second user supplied column label is empty';
74 ok $report->{columns}[3]{user}, 'fourth column is user supplied';
75
76 is_deeply $report->{rows}[0], {
77 bar => 231, baz => 421, __usercol_0 => 171,
78 }, 'first row';
79 is_deeply $report->{rows}[1], {
80 bar => 232, baz => 422, __usercol_0 => 172, __usercol_orph_0 => 173,
81 }, 'second row';
a57e8790 82 is_deeply $report->{rows}[2], {
83 bar => "foo\nbar", baz => "bar\nbaz", __usercol_0 => 199,
84 }, 'third row';
499ebcdd 85};
86
87is shift(@$stream), '', 'empty line';
88is shift(@$stream), 'End Text', 'end text';
89is shift(@$stream), '', 'empty line'
90 while @$stream;
91
92done_testing;