make reporting of known but uninstalled packages optional
[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/");
576b4278 7my @reports = $source->generate(['Packages::Apt::ByHost', {
8 include_uninstalled => 1,
9}]);
0331d9cd 10
11is scalar(@reports), 2, 'two reports received';
12
13my $_test_columns = sub {
14 my ($rep, @columns) = @_;
15 my %cols = map { ($_->{key}, 1) } @{$rep->{columns}};
16 ok $cols{$_}, "$_ column exists"
17 for @columns;
18};
19
20my $_test_rows = sub {
21 my ($rep, @rows) = @_;
22 is scalar(@{$rep->{rows}}), scalar(@rows), 'matching number of rows';
23 for my $idx (0 .. $#rows) {
24 is $rep->{rows}[$idx]{$_}, $rows[$idx]{$_}, "row $idx $_ value"
25 for sort keys %{$rows[$idx]};
26 }
27};
28
29subtest "first report" => sub {
30 my $rep = $reports[0];
31 is_deeply $rep->{id}, ['packages-apt-by-remote', 'hostA'], 'report id';
32 like $rep->{title}, qr{hostA}, 'report title contains remote';
33 is_deeply $rep->{meta}, { remote => 'hostA' }, 'meta data';
34 is_deeply $rep->{rowid}, ['package'], 'correct rowid';
35 $rep->$_test_columns(qw( package version upgrade ));
36 $rep->$_test_rows(
37 { package => 'bar', version => 17, upgrade => '18' },
38 { package => 'baz', version => undef, upgrade => undef, },
39 { package => 'foo', version => 23, upgrade => undef },
40 { package => 'qux', version => 77, upgrade => '80' },
41 );
42};
43
44subtest "second report" => sub {
45 my $rep = $reports[1];
46 is_deeply $rep->{id}, ['packages-apt-by-remote', 'hostB'], 'report id';
47 like $rep->{title}, qr{hostB}, 'report title contains remote';
48 is_deeply $rep->{meta}, { remote => 'hostB' }, 'meta data';
49 is_deeply $rep->{rowid}, ['package'], 'correct rowid';
50 $rep->$_test_columns(qw( package version upgrade ));
51 $rep->$_test_rows(
52 { package => 'bar', version => 18, upgrade => undef },
53 { package => 'baz', version => 99, upgrade => undef, },
54 { package => 'foo', version => 23, upgrade => 'unparsable' },
55 { package => 'qux', version => undef, upgrade => undef },
56 );
57};
58
59done_testing;