DBIx-TableLoader
view release on metacpan or search on metacpan
],
qr/^INSERT INTO "data"\s*\(\s*"a"\s*\)\s*VALUES\s*\(\s*\?\s*\)$/,
$default_drop,
);
test_all(constraint_suffix =>
new_ok($mod, [{%def_args, create_suffix => 'CONSTRAINT primary key a)'}]),
[
qr/CREATE\s+TABLE\s+"data"\s+\(/,
qr/\s*"a"\s+foo\s*/,
qr/CONSTRAINT primary key a\)/,
],
qr/^INSERT INTO "data"\s*\(\s*"a"\s*\)\s*VALUES\s*\(\s*\?\s*\)$/,
$default_drop,
);
test_all(create_prefix_suffix =>
new_ok($mod, [{%def_args, create_prefix => 'CREATE A TABLE FOR ME', create_suffix => ') NOT!'}]),
[
qr/CREATE A TABLE FOR ME/,
qr/\s*"a"\s+foo\s*/,
qr/\) NOT!/,
],
qr/^INSERT INTO "data"\s*\(\s*"a"\s*\)\s*VALUES\s*\(\s*\?\s*\)$/,
$default_drop,
);
test_all(multiple_columns =>
new_ok($mod, [{%def_args, columns => [[a => 'bar'], ['b'], 'c']}]),
[
qr/CREATE\s+TABLE\s+"data"\s+\(/,
qr/\s*"a"\s+bar,\s+"b"\s+foo,\s+"c"\s+foo\s*/,
qr/\)/,
],
qr/^INSERT INTO "data"\s*\(\s*"a", "b", "c"\s*\)\s*VALUES\s*\(\s*\?, \?, \?\s*\)$/,
$default_drop,
);
test_all(multi_word_name_type =>
new_ok($mod, [{%def_args, columns => [[a => 'bar foo'], ['b b', 'gri zz ly'], 'c']}]),
[
qr/CREATE\s+TABLE\s+"data"\s+\(/,
qr/\s*"a"\s+bar foo,\s+"b b"\s+gri zz ly,\s+"c"\s+foo\s*/,
qr/\)/,
],
qr/^INSERT INTO "data"\s*\(\s*"a", "b b", "c"\s*\)\s*VALUES\s*\(\s*\?, \?, \?\s*\)$/,
$default_drop,
);
test_all(table_type =>
new_ok($mod, [{%def_args, table_type => 'TEMP'}]),
[
qr/CREATE\s+TEMP\s+TABLE\s+"data"\s+\(/,
qr/\s*"a"\s+foo\s*/,
qr/\)/,
],
undef,
$default_drop
);
test_drop(cascade =>
new_ok($mod, [{%def_args, drop_suffix => 'CASCADE'}]),
qr/DROP\s+TABLE/,
qr/"data"/,
qr/CASCADE/,
);
test_drop(prefix_suffix_drop =>
new_ok($mod, [{%def_args, drop_prefix => 'DROP TABLE IF EXISTS', drop_suffix => 'CASCADE'}]),
qr/DROP TABLE IF EXISTS/,
qr/"data"/,
qr/CASCADE/,
);
# insert_all
foreach my $test (
[ [qw(a)], [1] ],
[ [qw(a b)], [1, 2], [3, 4] ],
[ [[a => 'A'], 'b'], ['a a', 'b b'], [3, 4] ],
){
my $data = $test;
my $rows = @$data - 1;
$dbh->reset;
$loader = new_ok($mod, [{%def_args, columns => undef, data => $data}]);
is($loader->insert_all, $rows, 'inserted all records');
is($dbh->{prepared}, 1, 'prepare called 1 time');
shift @$data; # remove columns from the top for comparison
is_deeply($dbh->{sth}->{execute}, $data, 'expectation executed')
or diag explain $data;
}
done_testing;
( run in 1.721 second using v1.01-cache-2.11-cpan-d06a3f9ecfd )