3 use DBIx::Data::Store::Inflator::Simple;
4 use DBIx::Data::Collection::Set::Wrapper::Inflate;
6 BEGIN { require 't/crud.t' }
8 { package My::Name; sub id { shift->{id} } sub name { shift->{name} } }
10 sub mkobj { bless({ id => $_[0][0], name => $_[0][1] }, 'My::Name') }
12 sub run_tests_crud_wrapped {
15 my $unwrapped = make_store;
16 my $store = DBIx::Data::Collection::Set::Wrapper::Inflate->new({
18 inflator => DBIx::Data::Store::Inflator::Simple->new({
19 spec_columns => [ 'id' ], body_columns => [ 'name' ],
20 all_columns => [ 'id', 'name' ], class => 'My::Name'
24 my $bob = mkobj([1,'Bob']);
26 is_deeply([$store->flatten], [], 'Empty set');
28 is_deeply($store->add({ name => 'Bob' }), $bob, 'Add record');
30 is_deeply([$store->flatten], [$bob], 'One member');
32 is_deeply($store->get({ id => 1 }), $bob, 'Retrieve by key');
34 $bob = mkobj([1,'Robert']);
36 $store->replace($bob,$bob);
38 is_deeply([$store->flatten], [$bob], 'Name changed (all)');
40 is_deeply($store->get({ id => 1 }), $bob, 'Retrieve by key');
42 $store->add({ name => $_ }) for qw(Joe James Jim);
45 [ sort { $a->id <=> $b->id } $store->flatten ]
48 is_deeply($flatsort->(), [
49 map mkobj($_), [1,'Robert'],[2,'Joe'],[3,'James'],[4,'Jim']
52 my $james = mkobj([3,'James']);
54 is_deeply($store->get({ id => 3 }), $james, 'Retrieve by key');
56 $store->remove($james);
58 is_deeply($flatsort->(), [
59 map mkobj($_), [1,'Robert'],[2,'Joe'],[4,'Jim']
60 ], 'Three members left');
65 run_tests_crud_wrapped unless caller;