package tests::ReportMergerTest;
use strict;
use base qw/ Lire::Test::TestCase /;
use Lire::ReportConfig;
use Lire::ReportParser::ReportBuilder;
use File::Basename qw/dirname/;
use Cwd qw/realpath/;
sub new {
my $self = shift()->SUPER::new( @_ );
$self->{'dir'} = realpath( dirname( __FILE__ ));
return $self;
}
sub set_up {
my $self = $_[0];
$self->SUPER::set_up();
$self->set_up_tz( 'EST' );
$self->{'cfg'}{'lr_reports_path'} = [ $self->{'dir'} . "/reports" ];
$self->{'cfg'}{'lr_filters_path'} = [ $self->{'dir'} . "/filters" ];
$self->{'cfg'}{'lr_schemas_path'} = [ $self->{'dir'} . "/schemas" ];
$self->{'cfg'}{'lr_scale_numbers'} = 0;
$self->{'cfg'}{'lr_scale_bytes'} = 1;
$self->{'cfg'}{'lr_scale_seconds'} = 1;
$self->{'report_cfg'} =
new_from_file Lire::ReportConfig( "test", $self->{'dir'} . "/data/test.cfg" );
return;
}
sub tear_down {
my $self = $_[0];
$self->SUPER::tear_down();
return;
}
sub test_self_merge_report {
my $self = $_[0];
my $parser = new Lire::ReportParser::ReportBuilder();
my $report_e = $parser->parsefile( "$self->{'dir'}/data/test-merge.xml" );
my $report_t =
$self->{'report_cfg'}->merge_report_files( $self->{'dir'} . "/data/test-sqlite.xml");
# The difference in these fields are normal
$report_t->date( $report_e->date() );
$report_t->generator( $report_e->generator() );
delete $report_e->{'_id_cache'};
$self->assert_deep_equals( $report_e, $report_t );
}
sub test_doublemerge_report {
my $self = $_[0];
my $parser = new Lire::ReportParser::ReportBuilder();
my $report_e = $parser->parsefile( "$self->{'dir'}/data/test-doublemerge.xml" );
my $report_t =
$self->{'report_cfg'}->merge_report_files( $self->{'dir'} . "/data/test-sqlite.xml",
$self->{'dir'} . "/data/test-sqlite.xml",);
# The difference in these fields are normal
$report_t->date( $report_e->date() );
$report_t->generator( $report_e->generator() );
delete $report_e->{'_id_cache'};
$self->assert_deep_equals( $report_e, $report_t );
}
sub test_merge_with_empty_report {
my $self = $_[0];
my $warnings = "";
local $SIG{'__WARN__'} = sub { $warnings .= join "", @_ };
my $parser = new Lire::ReportParser::ReportBuilder();
my $report_e = $parser->parsefile( "$self->{'dir'}/data/test-merge.xml" );
my $report_t =
$self->{'report_cfg'}->merge_report_files( $self->{'dir'} . "/data/test-sqlite.xml",
$self->{'dir'} . "/data/test-empty-sqlite.xml" );
$self->annotate( $warnings );
$self->assert( !$warnings, "There were warnings" );
# The difference in these fields are normal
$report_t->date( $report_e->date() );
$report_t->generator( $report_e->generator() );
delete $report_e->{'_id_cache'};
$self->assert_deep_equals( $report_e, $report_t );
}
sub test_two_empty_report {
my $self = $_[0];
my $warnings = "";
local $SIG{'__WARN__'} = sub { $warnings .= join "", @_ };
my $parser = new Lire::ReportParser::ReportBuilder();
my $report_e = $parser->parsefile( "$self->{'dir'}/data/test-empty-merge.xml" );
my $report_t =
$self->{'report_cfg'}->merge_report_files( $self->{'dir'} . "/data/test-empty-sqlite.xml",
$self->{'dir'} . "/data/test-empty-sqlite.xml" );
$self->annotate( $warnings );
$self->assert( !$warnings, "There were warnings" );
# The difference in these fields are normal
$report_t->date( $report_e->date() );
$report_t->generator( $report_e->generator() );
delete $report_e->{'_id_cache'};
$self->assert_deep_equals( $report_e, $report_t );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1