#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 13; use File::Spec::Functions ':ALL'; use SQL::Script; use t::lib::MockDBI; my $simple = catfile( 't', 'data', 'simple.sql' ); ok( -f $simple, "$simple exists" ); ##################################################################### # Create and work with simple scripts SCOPE: { # Create the object my $script = SQL::Script->new; isa_ok( $script, 'SQL::Script' ); is( $script->split_by, ";\n", '->split_by default ok' ); is_deeply( [ $script->statements ], [], '->statements returns empty list by default' ); is( scalar($script->statements), 0, 'scalar ->statements returns 0' ); # Read a script ok( $script->read($simple), '->read ok' ); is_deeply( [ $script->statements ], [ "create table foo ( id integer not null primary key, foo varchar(32) )", "insert foo values ( 1, 'Hello World\\n' )", ], '->statements returns two statements' ); is( scalar($script->statements), 2, '->statements ok' ); # Execute it my $dbh = t::lib::MockDBI->new; ok( $script->run($dbh), '->run returns true' ); is_deeply( [ @t::lib::MockDBI::SQL ], [ [ "create table foo ( id integer not null primary key, foo varchar(32) )" ], [ "insert foo values ( 1, 'Hello World\\n' )" ], ], '->run executed two statements' ); } ###################################################################### # Prepopulated SCOPE: { my $script = SQL::Script->new( statements => [ 'Hello', 'World!' ], ); isa_ok( $script, 'SQL::Script' ); is( scalar($script->statements), 2, '->statements ok' ); is_deeply( [ $script->statements ], [ 'Hello', 'World!' ], '->statements ok' ); }