use t::Utils; use Mock::Basic; use Test::More; for (qw/other main/) { unlink "./t/$_.db" if -f "./t/$_.db"; } my $db = Mock::Basic->new( { connect_info => [ 'dbi:SQLite:./t/main.db', '','' ], } ); $db->setup_test_db; $db->insert('mock_basic',{ id => 1, name => 'perl', }); $db->insert('mock_basic',{ id => 2, name => 'python', }); subtest 'search' => sub { my $itr = $db->search('mock_basic',{id => 1}); isa_ok $itr, 'Teng::Iterator'; my $row = $itr->next; isa_ok $row, 'Teng::Row'; is $row->id, 1; is $row->name, 'perl'; }; subtest 'do new' => sub { my $model = Mock::Basic->new( { connect_info => [ 'dbi:SQLite:./t/main.db', '', '', ] } ); my $itr = $model->search('mock_basic'); isa_ok $itr, 'Teng::Iterator'; my $row = $itr->next; isa_ok $row, 'Teng::Row'; is $row->id, 1; is $row->name, 'perl'; }; subtest 'do new other connection' => sub { my $model = Mock::Basic->new( { connect_info => [ 'dbi:SQLite:./t/other.db', '', '', ] } ); $model->setup_test_db; $model->insert('mock_basic',{ id => 1, name => 'perl', }); my $itr = $model->search('mock_basic'); isa_ok $itr, 'Teng::Iterator'; my $row = $itr->next; isa_ok $row, 'Teng::Row'; is $row->id, 1; is $row->name, 'perl'; is +$db->count('mock_basic', 'id'), 2; is $model->count('mock_basic', 'id'), 1; }; subtest 'do new with dbh' => sub { my $dbh = DBI->connect('dbi:SQLite::memory:', '', '') or die "cannot connect to t/main.db"; my $model = Mock::Basic->new({ dbh => $dbh, }); $model->setup_test_db(); $model->insert('mock_basic',{ id => 1, name => 'perl', }); my $itr = $model->search('mock_basic'); isa_ok $itr, 'Teng::Iterator'; my $row = $itr->next; isa_ok $row, 'Teng::Row'; is $row->id, 1; is $row->name, 'perl'; }; unlink './t/other.db', './t/main.db'; done_testing;