insert_one => sub {
my ($store, undef, $dbh, $args) = @_;
$store->_sth_for($dbh, 'INSERT INTO names (name) VALUES (?)', $args);
- [ $dbh->last_insert_id(undef,undef,undef,undef) ];
+ [ $dbh->last_insert_id(undef,undef,undef,undef), @$args ];
},
update_one => 'UPDATE names SET name = ? WHERE id = ?',
delete_one => 'DELETE FROM names WHERE id = ?',
});
}
-setup_db;
+sub run_tests {
+ setup_db;
-my $store = make_store;
+ my $store = make_store;
-is_deeply([$store->flatten], [], 'Empty set');
+ is_deeply([$store->flatten], [], 'Empty set');
-is_deeply($store->add(['Bob']), [1], 'Add record');
+ is_deeply($store->add(['Bob']), [1,'Bob'], 'Add record');
-is_deeply([$store->flatten], [[1,'Bob']], 'One member');
+ is_deeply([$store->flatten], [[1,'Bob']], 'One member');
-is_deeply($store->get([1]), [1,'Bob'], 'Retrieve by key');
+ is_deeply($store->get([1]), [1,'Bob'], 'Retrieve by key');
-$store->replace([1],['Robert']);
+ $store->replace([1],['Robert']);
-is_deeply([$store->flatten], [[1,'Robert']], 'Name changed (all)');
+ is_deeply([$store->flatten], [[1,'Robert']], 'Name changed (all)');
-is_deeply($store->get([1]), [1,'Robert'], 'Retrieve by key');
+ is_deeply($store->get([1]), [1,'Robert'], 'Retrieve by key');
-$store->add([$_]) for qw(Joe James Jim);
+ $store->add([$_]) for qw(Joe James Jim);
-my $flatsort = sub {
- [ sort { $a->[0] <=> $b->[0] } $store->flatten ]
-};
+ my $flatsort = sub {
+ [ sort { $a->[0] <=> $b->[0] } $store->flatten ]
+ };
-is_deeply($flatsort->(), [
- [1,'Robert'],[2,'Joe'],[3,'James'],[4,'Jim']
-], 'Four members');
+ is_deeply($flatsort->(), [
+ [1,'Robert'],[2,'Joe'],[3,'James'],[4,'Jim']
+ ], 'Four members');
-is_deeply($store->get([3]),[3,'James'], 'Retrieve by key');
+ is_deeply($store->get([3]),[3,'James'], 'Retrieve by key');
-$store->remove([3]);
+ $store->remove([3]);
-is_deeply($flatsort->(), [
- [1,'Robert'],[2,'Joe'],[4,'Jim']
-], 'Three members left');
+ is_deeply($flatsort->(), [
+ [1,'Robert'],[2,'Joe'],[4,'Jim']
+ ], 'Three members left');
-done_testing;
+ done_testing;
+}
+
+run_tests unless caller;