add a simple summary to mediawiki edits
[scpubgit/System-Introspector-Report.git] / t / builder_packages-apt-byhost.t
CommitLineData
0331d9cd 1use strictures 1;
2use Test::More;
3use FindBin;
4use aliased 'System::Introspector::Report::Source';
5
6my $source = Source->new(root => "$FindBin::Bin/data/json/");
7my @reports = $source->generate(['Packages::Apt::ByHost', {}]);
8
9is scalar(@reports), 2, 'two reports received';
10
11my $_test_columns = sub {
12 my ($rep, @columns) = @_;
13 my %cols = map { ($_->{key}, 1) } @{$rep->{columns}};
14 ok $cols{$_}, "$_ column exists"
15 for @columns;
16};
17
18my $_test_rows = sub {
19 my ($rep, @rows) = @_;
20 is scalar(@{$rep->{rows}}), scalar(@rows), 'matching number of rows';
21 for my $idx (0 .. $#rows) {
22 is $rep->{rows}[$idx]{$_}, $rows[$idx]{$_}, "row $idx $_ value"
23 for sort keys %{$rows[$idx]};
24 }
25};
26
27subtest "first report" => sub {
28 my $rep = $reports[0];
29 is_deeply $rep->{id}, ['packages-apt-by-remote', 'hostA'], 'report id';
30 like $rep->{title}, qr{hostA}, 'report title contains remote';
31 is_deeply $rep->{meta}, { remote => 'hostA' }, 'meta data';
32 is_deeply $rep->{rowid}, ['package'], 'correct rowid';
33 $rep->$_test_columns(qw( package version upgrade ));
34 $rep->$_test_rows(
35 { package => 'bar', version => 17, upgrade => '18' },
36 { package => 'baz', version => undef, upgrade => undef, },
37 { package => 'foo', version => 23, upgrade => undef },
38 { package => 'qux', version => 77, upgrade => '80' },
39 );
40};
41
42subtest "second report" => sub {
43 my $rep = $reports[1];
44 is_deeply $rep->{id}, ['packages-apt-by-remote', 'hostB'], 'report id';
45 like $rep->{title}, qr{hostB}, 'report title contains remote';
46 is_deeply $rep->{meta}, { remote => 'hostB' }, 'meta data';
47 is_deeply $rep->{rowid}, ['package'], 'correct rowid';
48 $rep->$_test_columns(qw( package version upgrade ));
49 $rep->$_test_rows(
50 { package => 'bar', version => 18, upgrade => undef },
51 { package => 'baz', version => 99, upgrade => undef, },
52 { package => 'foo', version => 23, upgrade => 'unparsable' },
53 { package => 'qux', version => undef, upgrade => undef },
54 );
55};
56
57done_testing;