use strict; use warnings; use DBIx::Connection; use Test::More tests => 10; use Test::DBUnit connection_name => 'test'; SKIP: { skip('missing env varaibles DB_TEST_CONNECTION, DB_TEST_USERNAME DB_TEST_PASSWORD', 10) unless $ENV{DB_TEST_CONNECTION}; my $connection = DBIx::Connection->new( name => 'test', dsn => $ENV{DB_TEST_CONNECTION}, username => $ENV{DB_TEST_USERNAME}, password => $ENV{DB_TEST_PASSWORD}, ); SKIP: { my $dbms_name = $connection->dbms_name; skip('Tests are not prepared for ' . $dbms_name , 10) unless -d "t/sql/". $connection->dbms_name; reset_schema_ok("t/sql/". $connection->dbms_name . "/create_schema.sql"); populate_schema_ok("t/sql/". $connection->dbms_name . "/populate_schema.sql"); { xml_dataset_ok('test1'); is($connection, test_connection(), 'should have connection object'); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'Scott', 1); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'John', 2); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'Mark', 3); expected_xml_dataset_ok('test1'); } set_refresh_load_strategy; { dataset_ok( emp => [empno => "1", ename => "scott", deptno => "10", job => "project manager"], emp => [empno => "2", ename => "john", deptno => "10", job => "engineer"], emp => [empno => "3", ename => "mark", deptno => "10", job => "sales assistant"], bonus => [ename => "scott", job => "project manager", sal => "20"], ); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'Scott', 1); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'John', 2); $connection->execute_statement("UPDATE emp SET ename = ? WHERE empno = ?", 'Mark', 3); expected_dataset_ok( emp => [empno => "1", ename => "Scott", deptno => "10", job => "project manager"], emp => [empno => "2", ename => "John", deptno => "10", job => "engineer"], emp => [empno => "3", ename => "Mark", deptno => "10", job => "sales assistant"], bonus => [ename => "scott", job => "project manager", sal => "20"], ) } set_insert_load_strategy; SKIP: { skip('Tests are not prepared for ' . $dbms_name , 3) if($dbms_name ne 'PostgreSQL' && $dbms_name ne 'Oracle' && $dbms_name ne 'MySQL'); $connection->execute_statement("DELETE FROM emp"); reset_sequence_ok($dbms_name ne 'MySQL' ? 'emp_seq' : 'emp'); dataset_ok( emp => [ename => "John", deptno => "10", job => "project manager"], emp => [ename => "Scott", deptno => "10", job => "project manager"] ); expected_dataset_ok( emp => [empno => 1, ename => "John", deptno => "10", job => "project manager"], emp => [empno => 2, ename => "Scott", deptno => "10", job => "project manager"] ) } } }