remove Dwarn calls
[dbsrgits/DBIx-Data-Store-old.git] / t / dbix-data-set / 02indexed_by.t
1 use strict;
2 use warnings FATAL => 'all';
3 use Test::More;
4 use DBIx::Data::Collection::Set::IndexableBy;
5
6 BEGIN {
7   package BasicCollection;
8   require 't/dbix-data-set/01basic_collection.t'
9 }
10
11 sub setup_db { BasicCollection::setup_db @_ }
12
13 sub make_store { BasicCollection::make_store @_ }
14
15 sub sort_set { BasicCollection::sort_set @_ }
16
17 sub 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
38 sub run_tests {
39   my @expect = setup_db;
40   my $by_id = make_set;
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   );
73   done_testing;
74 }
75
76 run_tests unless caller;