summaryrefslogtreecommitdiffstats
path: root/t/handle_added_archives.t
diff options
context:
space:
mode:
Diffstat (limited to 't/handle_added_archives.t')
-rw-r--r--t/handle_added_archives.t53
1 files changed, 53 insertions, 0 deletions
diff --git a/t/handle_added_archives.t b/t/handle_added_archives.t
new file mode 100644
index 0000000..c2b8e78
--- /dev/null
+++ b/t/handle_added_archives.t
@@ -0,0 +1,53 @@
+use strict;
+use warnings;
+
+use POSIX qw(tzset);
+use Test::Differences;
+use Test::MockObject;
+use Test::More;
+
+use App::BorgRestore;
+
+# Only log calls to $db->add_path
+my $db = Test::MockObject->new();
+$db->set_true(qw(add_path -begin_work -commit -vacuum -add_archive_name -verify_cache_fill_rate_ok));
+$db->mock('-get_archive_id', sub {return 'prefix-archive-1' if $_[1] eq 'archive-1';});
+$db->mock('-get_archive_names', sub {return []});
+
+$ENV{TZ} = 'UTC';
+tzset;
+
+my $borg = Test::MockObject->new();
+$borg->set_list('borg_list', ['archive-1']);
+$borg->mock('list_archive', sub {
+ my ($self, $archive, $cb) = @_;
+ $cb->("XXX, 1970-01-01 00:00:05 .");
+ $cb->("XXX, 1970-01-01 00:00:10 boot");
+ $cb->("XXX, 1970-01-01 00:00:20 boot/grub");
+ $cb->("XXX, 1970-01-01 00:00:08 boot/grub/grub.cfg");
+ $cb->("XXX, 1970-01-01 00:00:13 boot/foo");
+ $cb->("XXX, 1970-01-01 00:00:13 boot/foo/blub");
+ $cb->("XXX, 1970-01-01 00:00:19 boot/foo/bar");
+ } );
+
+# Call the actual function we want to test
+my $app = App::BorgRestore->new({borg => $borg, db => $db});
+$app->_handle_added_archives(['archive-1']);
+
+# Check if $db->add_path has been called properly
+my (@calls, @a);
+push @calls, [@a] while @a = $db->next_call();
+
+# sort by path
+@calls = sort {$a->[1][2] cmp $b->[1][2];} @calls;
+
+eq_or_diff(\@calls, [
+ ['add_path', [$db, 'prefix-archive-1', 'boot', 20]],
+ ['add_path', [$db, 'prefix-archive-1', 'boot/foo', 19]],
+ ['add_path', [$db, 'prefix-archive-1', 'boot/foo/bar', 19]],
+ ['add_path', [$db, 'prefix-archive-1', 'boot/foo/blub', 13]],
+ ['add_path', [$db, 'prefix-archive-1', 'boot/grub', 20]],
+ ['add_path', [$db, 'prefix-archive-1', 'boot/grub/grub.cfg', 8]],
+ ], "Database is populated with the correct timestamps");
+
+done_testing;