App-MtAws
view release on metacpan or search on metacpan
t/unit/journal_add_delete.t view on Meta::CPAN
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
my $obj2 = { relfilename => 'file2', archive_id => 'a2', time => 42, mtime => undef };
my $obj3 = { relfilename => 'file2', archive_id => 'a3', time => 43, mtime => undef };
$j->_add_filename($obj2);
$j->_add_filename($obj3);
no warnings 'redefine';
my $saved = undef;
local *App::MtAws::FileVersions::latest = sub { $saved = shift; "TEST" };
is $j->latest('file2'), 'TEST', "latest call FileVersions latest()";
ok $saved->isa('App::MtAws::FileVersions'), 'latest call FileVersions latest() right';
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
my $obj2 = { relfilename => 'file2', archive_id => 'a2', time => 42, mtime => undef };
$j->_add_filename($obj2);
ok ! defined eval { $j->latest('not-a-file'); 1 }, "should confess if file not found";
}
# _add_archive
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
cmp_deeply $j->{archive_h}, {'abc123' => { relfilename => 'file1', archive_id => 'abc123' }}, "_add_archive should work";
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
$j->_add_archive({ relfilename => 'file1', archive_id => 'def123' });
cmp_deeply $j->{archive_h}, {
'abc123' => { relfilename => 'file1', archive_id => 'abc123' },
'def123' => { relfilename => 'file1', archive_id => 'def123' }
}, "_add_archive should work with two archives";
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
ok ! defined eval { $j->_add_archive({ relfilename => 'file2', archive_id => 'abc123' }); 1 }, "_add_archive should confess";
}
# _delete_archive
{
for my $f ('abc123', 0) {
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => $f, archive_id => 'abc123' });
$j->_delete_archive('abc123', $f);
cmp_deeply $j->{archive_h}, {}, "_delete_archive should work";
}
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
ok ! eval { $j->_delete_archive('abc123'); 1 }, "_delete_archive should validate arguments";
ok ! eval { $j->_delete_archive(); 1 }, "_delete_archive should validate arguments";
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
$j->_add_archive({ relfilename => 'file1', archive_id => 'fff123' });
$j->_delete_archive('abc123', 'file1');
cmp_deeply $j->{archive_h}, { fff123 => { relfilename => 'file1', archive_id => 'fff123' }}, "_delete_archive should work with two archives";
}
{
my $j = App::MtAws::Journal->new('journal_file' => '.');
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
ok ! defined eval { $j->_delete_archive('zzzz', 'file1'); 1 }, "_delete_archive should confess";
}
{
my $filter = App::MtAws::Filter->new();
$filter->parse_filters('-file1');
my $j = App::MtAws::Journal->new('journal_file' => '.', filter => $filter);
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
cmp_deeply $j->{archive_h}, {}, "assume filter works";
$j->_delete_archive('abc123', 'file1');
ok 1, "delete archive should not die if arhive was previously excluded by filter";
}
{
my $filter = App::MtAws::Filter->new();
$filter->parse_filters('-wrongfilter');
my $j = App::MtAws::Journal->new('journal_file' => '.', filter => $filter);
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
cmp_deeply $j->{archive_h}, { abc123 => { 'archive_id' => 'abc123', 'relfilename' => 'file1' } }, "assume filter works";
no warnings 'redefine';
my $called = 0;
local *App::MtAws::Filter::check_filenames = sub { $called = 1};
$j->_delete_archive('abc123', 'fileZZZ');
cmp_deeply $j->{archive_h}, {}, "deletion works";
ok ! $called, "if archive found by id - filter routines should not be called (for perf. reasons)";
}
{
my $filter = App::MtAws::Filter->new();
$filter->parse_filters('-wrongfilter');
my $j = App::MtAws::Journal->new('journal_file' => '.', filter => $filter);
$j->_add_archive({ relfilename => 'file1', archive_id => 'abc123' });
cmp_deeply $j->{archive_h}, { abc123 => { 'archive_id' => 'abc123', 'relfilename' => 'file1' } }, "assume filter works";
ok ! eval { $j->_delete_archive('wrongarchive', 'file1'); 1}, "_delete_archive should confess even if filter exists";
}
# _add_archive - working with filter
{
my $filter= App::MtAws::Filter->new();
my $j = App::MtAws::Journal->new('journal_file' => '.', filter => $filter);
my $called = 0;
no warnings 'redefine';
local *App::MtAws::Filter::check_filenames = sub {
my ($self, $relfilename) = @_;
++$called;
is $self, $filter, "should filter usign right object";
is $relfilename, 'file1', "should call filter with correct filename";
( run in 1.375 second using v1.01-cache-2.11-cpan-437f7b0c052 )