column name fix for remote column
[scpubgit/System-Introspector-Report.git] / t / publish_mediawiki_parser.t
1 use strictures 1;
2 use Test::More;
3
4 use aliased 'System::Introspector::Report::Publish::MediaWiki::Parser';
5
6 my $parser = Parser->new;
7 my $stream = $parser->parse(<<'EOR');
8
9 = Heading =
10
11 <!-- SI:TITLE begin foo -->
12 == Foo ==
13 <!-- SI:TITLE end foo -->
14
15 User 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>
37 </table>
38 <!-- SI:TABLE end foo -->
39
40 End Text
41
42 EOR
43
44 is shift(@$stream), '', 'empty line';
45 is shift(@$stream), '= Heading =', 'heading';
46 is shift(@$stream), '', 'empty line';
47
48 do {
49   my $report = shift @$stream;
50   is ref($report), 'HASH', 'report structure';
51
52   is_deeply $report->{id}, ['foo'], 'report id';
53   is $report->{title}, 'Foo', 'report title';
54
55   is $report->{columns}[0]{key}, 'bar', 'first column key';
56   is $report->{columns}[0]{label}, 'Bar', 'first column label';
57   ok not($report->{columns}[0]{user}), 'first column not user supplied';
58
59   is $report->{columns}[1]{key}, 'baz', 'second column key';
60   is $report->{columns}[1]{label}, 'Baz', 'second column label';
61   ok not($report->{columns}[1]{user}), 'second column not user supplied';
62
63   is $report->{columns}[2]{key}, '__usercol_0', 'first user supplied column key';
64   like $report->{columns}[2]{label}, qr{^\s+Qux\s+$}, 'first user supplied column label';
65   ok $report->{columns}[2]{user}, 'third column is user supplied';
66
67   is $report->{columns}[3]{key}, '__usercol_orph_0', 'second user supplied column key';
68   is $report->{columns}[3]{label}, undef, 'second user supplied column label is empty';
69   ok $report->{columns}[3]{user}, 'fourth column is user supplied';
70
71   is_deeply $report->{rows}[0], {
72     bar => 231, baz => 421, __usercol_0 => 171,
73   }, 'first row';
74   is_deeply $report->{rows}[1], {
75     bar => 232, baz => 422, __usercol_0 => 172, __usercol_orph_0 => 173,
76   }, 'second row';
77 };
78
79 is shift(@$stream), '', 'empty line';
80 is shift(@$stream), 'End Text', 'end text';
81 is shift(@$stream), '', 'empty line'
82   while @$stream;
83
84 done_testing;