package KiokuDB::Test::Fixture::Scan;
BEGIN {
$KiokuDB::Test::Fixture::Scan::AUTHORITY = 'cpan:NUFFIN';
}
$KiokuDB::Test::Fixture::Scan::VERSION = '0.57';
use Moose;
use Test::More;
use Test::Moose;
use KiokuDB::Test::Person;
use namespace::clean -except => 'meta';
with qw(KiokuDB::Test::Fixture) => { -excludes => 'required_backend_roles' };
use constant required_backend_roles => qw(Clear Scan);
sub create {
my $self = shift;
( map { KiokuDB::Test::Person->new(%$_) }
{ name => "foo", age => 3 },
{ name => "bar", age => 3 },
{ name => "gorch", age => 5, friends => [ KiokuDB::Test::Person->new( name => "quxx", age => 6 ) ] },
);
}
before populate => sub {
my $self = shift;
$self->backend->clear;
};
sub verify {
my $self = shift;
$self->txn_lives(sub {
my $root = $self->root_set;
does_ok( $root, "Data::Stream::Bulk" );
my @objs = $root->all;
my @ids = $self->objects_to_ids(@objs);
is_deeply(
[ sort map { $_->name } @objs ],
[ sort qw(foo bar gorch) ],
"root set",
);
is_deeply(
[ sort $self->backend->root_entry_ids->all ],
[ sort @ids ],
"root set IDs",
);
});
$self->txn_lives(sub {
my $child_entries = $self->backend->child_entries;
does_ok( $child_entries, "Data::Stream::Bulk" );
my $children = $child_entries->filter(sub {[ $self->directory->linker->register_and_expand_entries(@$_) ]});
my @objs = $children->all;
my @ids = $self->objects_to_ids(@objs);
is_deeply(
[ sort map { $_->name } @objs ],
[ sort qw(quxx) ],
"nonroot entries",
);
is_deeply(
[ sort $self->backend->child_entry_ids->all ],
[ sort @ids ],
"nonroot IDs",
);
});
$self->txn_lives(sub {
my $all_entries = $self->backend->all_entries;
does_ok( $all_entries, "Data::Stream::Bulk" );
my $all = $all_entries->filter(sub {[ $self->directory->linker->register_and_expand_entries(@$_) ]});
my @objs = $all->all;
my @ids = $self->objects_to_ids(@objs);
is_deeply(
[ sort map { $_->name } @objs ],
[ sort qw(foo bar gorch quxx) ],
"all entries",
);
is_deeply(
[ sort $self->backend->all_entry_ids->all ],
[ sort @ids ],
"all IDs",
);
});
}
__PACKAGE__->meta->make_immutable;
__PACKAGE__
__END__
=pod
=encoding UTF-8
=head1 NAME
KiokuDB::Test::Fixture::Scan
=head1 VERSION
version 0.57
=head1 AUTHOR
Yuval Kogman <nothingmuch@woobling.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Yuval Kogman, Infinity Interactive.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut