Mojar-Mysql
view release on metacpan or search on metacpan
test/30-mysql-connector.t view on Meta::CPAN
use Mojo::Base -strict;
use Test::More;
use Mojar::Mysql::Connector (
RaiseError => 0,
AutoCommit => 0
);
subtest q{Class defaults} => sub {
is_deeply [sort keys %{ Mojar::Mysql::Connector->Defaults }],
[qw(AutoCommit RaiseError)], 'keys';
is +(Mojar::Mysql::Connector->Defaults->{AutoCommit}), 0, '->{AutoCommit}';
is +(Mojar::Mysql::Connector->Defaults->{RaiseError}), 0, '->{RaiseError}';
ok +(Mojar::Mysql::Connector->Defaults->{RaiseError} = 1),
'->{RaiseError} = 1';
is +(Mojar::Mysql::Connector->Defaults->{RaiseError}), 1, '->{RaiseError}';
ok +(Mojar::Mysql::Connector->Defaults({RaiseError => 0, AutoCommit => 1})),
'complete assignment';
is +(Mojar::Mysql::Connector->Defaults->{RaiseError}), 0, '->{RaiseError}';
is +(Mojar::Mysql::Connector->Defaults->{AutoCommit}), 1, '->{AutoCommit}';
};
my $mc;
subtest q{Object defaults} => sub {
ok $mc = Mojar::Mysql::Connector->new, 'new';
is_deeply [sort keys %$mc],
[qw(AutoCommit RaiseError)], 'keys';
is $mc->RaiseError, 0, 'RaiseError';
is $mc->AutoCommit, 1, 'AutoCommit';
is $mc->PrintWarn, 0, 'PrintWarn';
is_deeply [sort keys %$mc],
[qw(AutoCommit PrintWarn RaiseError)], 'keys';
is +(Mojar::Mysql::Connector->Defaults->{RaiseError}), 0, 'class defaults';
delete $mc->{Defaults};
};
subtest q{Cloned object} => sub {
ok $mc->user('tester'), '->user()';
is $mc->user, 'tester', '->user';
ok +(Mojar::Mysql::Connector->Defaults->{port} = 123), '->{port} =';
ok my $mc0 = $mc->new, 'clone';
is_deeply [sort keys %$mc0],
[qw(AutoCommit PrintWarn RaiseError port user)], 'keys';
is $mc0->user, 'tester', 'clone:user';
is $mc0->port, 123, 'clone:port';
ok $mc0->user('bart'), '->user()';
is $mc0->user, 'bart', 'clone:user';
is $mc->user, 'tester', 'orig:user';
};
subtest q{dsn} => sub {
ok my $p = [ $mc->dsn ], 'object ->dsn';
is_deeply $p, ['DBI:mysql:;port=123', 'tester', undef,
{AutoCommit => 1, PrintError => 0, PrintWarn => 0,
RaiseError => 0, TraceLevel => 0, mysql_enable_utf8 => 1,
mysql_auto_reconnect => 0}],
'expected values';
ok @$p = $mc->dsn(TraceLevel => 2), 'object ->dsn';
is_deeply $p, ['DBI:mysql:;port=123', 'tester', undef,
{AutoCommit => 1, PrintError => 0, PrintWarn => 0,
RaiseError => 0, TraceLevel => 2, mysql_enable_utf8 => 1,
mysql_auto_reconnect => 0}],
'expected values';
is $mc->TraceLevel, 0, 'TraceLevel';
};
SKIP: {
skip 'set TEST_MYSQL to enable this test (developer only!)', 2
unless $ENV{TEST_MYSQL} || $ENV{TRAVIS};
my $dbh;
subtest q{connect} => sub {
ok $dbh = DBI->connect(
q{DBI:mysql:test_myapp;host=localhost;port=3306},
'testmyappro', 'x8UUgrr_r',
{ RaiseError => 1 }
), 'DBI dsn connect';
ok $dbh->ping, 'ping';
ok $dbh = Mojar::Mysql::Connector->connect(
q{DBI:mysql:test_myapp;host=localhost;port=3306},
'testmyappro', 'x8UUgrr_r',
{ RaiseError => 1 }
), 'M::M::C dsn connect';
ok $dbh->ping, 'ping';
ok $dbh = Mojar::Mysql::Connector->connect(
q{DBI:mysql:;host=localhost;port=3306},
'testmyappro', 'x8UUgrr_r',
{ RaiseError => 1 }
), 'M::M::C dsn connect without schema';
ok $dbh->ping, 'ping';
ok $dbh = Mojar::Mysql::Connector->connect(
schema => 'test_myapp',
user => 'testmyappro',
password => 'x8UUgrr_r'), 'param connect';
ok $dbh->ping, 'ping';
ok $dbh = Mojar::Mysql::Connector->connect(
user => 'testmyappro',
password => 'x8UUgrr_r'), 'param connect without schema';
ok $dbh->ping, 'ping';
ok $dbh = Mojar::Mysql::Connector->connect(
cnfdir => 'data',
cnf => 'testmyappro_localhost',
schema => 'test_myapp'), 'param connect via credentials file';
ok $dbh->ping, 'ping';
};
subtest q{Shorthands} => sub {
ok @{$dbh->schemata} > 1, 'found multiple schemata';
is scalar(@{ $dbh->schemata('test_myapp') }), 1, 'found expected schema';
ok $dbh->tables_and_views('test_myapp'), 'got something for tables & views';
ok @{$dbh->real_tables} > 1, 'found multiple tables';
ok @{ $dbh->real_tables('test_myapp') } > 1, 'found multiple tables';
is scalar(@{ $dbh->real_tables('test_myapp', 'f%') }), 1, 'found one table';
( run in 1.165 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )