use DBIx::Data::Store::CRUD;
use DBIx::Data::Collection::Set;
use DBI;
+use Scalar::Util qw(refaddr);
+
+use Devel::Dwarn;
use strict;
use warnings FATAL => 'all';
raw_store => $self->raw_store,
insert_call_command => $self->raw_store->new_call_command(@_)
);
- }
+ },
+ delete_sql => q{DELETE FROM person WHERE id = ?},
+ delete_argument_order => [ 'id' ],
};
my $doug = $set->add({ name => 'Doug' });
-use Devel::Dwarn;
+ok($doug->{id}, 'id filled out in new row');
+
+my ($set_doug) = grep $_->{name} eq 'Doug', $set->flatten;
+
+ok($set_doug, 'new row exists in flatten');
+
+cmp_ok(refaddr($doug), '==', refaddr($set_doug), 'Same hashref returned');
+
+$set->remove($doug);
+
+is_deeply([ sort_set $set->flatten ], \@expect, 'new row gone after remove');
+
+$set = make_set;
+
+is_deeply([ sort_set $set->flatten ], \@expect, 'new row still gone on reload');
+
+$set = make_set {}, {
+ update_sql => q{UPDATE person SET name = ? WHERE id = ?},
+ update_argument_order => [ qw(name id) ]
+};
+
+my ($pterry) = grep $_->{name} eq 'Pterry', $set->flatten;
+
+$pterry->{name} = 'Sir Pterry'; # http://xrl.us/bgse8s
+
+$set->_update_in_store($pterry);
+
+$set = make_set;
+
+my ($fresh_pterry) = grep $_->{name} =~ /Pterry/, $set->flatten;
+
+is($fresh_pterry->{name}, 'Sir Pterry', 'Update persisted correctly');
+
+$set = make_set {}, {
+ select_single_sql => q{SELECT id, name FROM person WHERE id = ?},
+ select_single_argument_order => [ qw(id) ],
+};
+
+my $pterry_id = (grep $_->{name} eq 'Pterry', @expect)[0]->{id};
+
+$pterry = $set->get({ id => $pterry_id });
+
+is($pterry->{name}, 'Sir Pterry', 'Pterry retrieved by id');
-Dwarn $doug;
+ok(!defined($set->get({ id => -1 })), 'undef on missing id');
done_testing;