remove Dwarn calls
[dbsrgits/DBIx-Data-Store-old.git] / t / dbix-data-set / 02indexed_by.t
CommitLineData
9f2b6cc8 1use strict;
2use warnings FATAL => 'all';
3use Test::More;
4use DBIx::Data::Collection::Set::IndexableBy;
5
6BEGIN {
7 package BasicCollection;
330d0949 8 require 't/dbix-data-set/01basic_collection.t'
9f2b6cc8 9}
10
11sub setup_db { BasicCollection::setup_db @_ }
12
13sub make_store { BasicCollection::make_store @_ }
14
50166086 15sub sort_set { BasicCollection::sort_set @_ }
16
9f2b6cc8 17sub make_set {
18 BasicCollection::make_set({
19 indexable_by => {
20 name => {
21 set_over => [ 'name' ],
22 store => make_store({
23 select_single_sql => q{SELECT id, name FROM person WHERE name = ?},
24 select_single_argument_order => [ qw(name) ],
25 }),
26 },
27 },
28 },
29 {
30 select_single_sql => q{SELECT id, name FROM person WHERE id = ?},
31 select_single_argument_order => [ qw(id) ],
32 },
33 'DBIx::Data::Collection::Set::IndexableBy'
34 )
35}
36
37
38sub run_tests {
39 my @expect = setup_db;
50166086 40 my $by_id = make_set;
50166086 41 my $id_1 = $by_id->get({ id => 1 });
42 my $by_name = $by_id->indexed_by('name');
43 ok(scalar($by_name->_key_cache_get_object($id_1), 'key cache transfer'));
44 cmp_ok(
45 $id_1, '==', $by_name->get({ name => $id_1->{name} }),
46 'get returns same object'
47 );
48 my $name_pterry = $by_name->get({ name => 'Pterry' });
49 ok(
50 scalar($by_id->_key_cache_get_object($name_pterry)),
51 'key cache reverse transfer'
52 );
53 cmp_ok(
54 $name_pterry, '==', $by_id->get({ id => $name_pterry->{id} }),
55 'get returns same object'
56 );
57 ok(
58 !$by_id->_member_cache_built && !$by_name->_member_cache_built,
59 'No caches yet'
60 );
61 is_deeply(
62 [ sort_set $by_id->flatten ], \@expect,
63 'flatten set',
64 );
65 ok(
66 $by_id->_member_cache_built && $by_name->_member_cache_built,
67 'Both caches filled'
68 );
69 ok(
70 $by_id->_member_cache != $by_name->_member_cache,
71 'Caches are separate arrayrefs'
72 );
9f2b6cc8 73 done_testing;
74}
75
76run_tests unless caller;