#!/usr/bin/perl package KiokuDB::Test::Fixture::Scan; 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__