9 use Catalyst::Model::DBIC::Schema;
12 # execise the connect_info coercion
17 ['dbi:SQLite:foo.db', '', ''],
18 { dsn => 'dbi:SQLite:foo.db', user => '', password => '' },
20 ['dbi:SQLite:foo.db', ''],
21 { dsn => 'dbi:SQLite:foo.db', user => '', password => '' },
23 ['dbi:SQLite:foo.db'],
24 { dsn => 'dbi:SQLite:foo.db', user => '', password => '' },
27 { dsn => 'dbi:SQLite:foo.db', user => '', password => '' },
29 ['dbi:Pg:dbname=foo', 'user', 'pass',
30 { pg_enable_utf8 => 1, auto_savepoint => 1 }],
31 { dsn => 'dbi:Pg:dbname=foo', user => 'user', password => 'pass',
32 pg_enable_utf8 => 1, auto_savepoint => 1 },
34 ['dbi:Pg:dbname=foo', 'user', 'pass',
35 { pg_enable_utf8 => 1 }, { auto_savepoint => 1 }],
36 { dsn => 'dbi:Pg:dbname=foo', user => 'user', password => 'pass',
37 pg_enable_utf8 => 1, auto_savepoint => 1 },
39 [ { dsn => 'dbi:Pg:dbname=foo', user => 'user', password => 'pass',
40 pg_enable_utf8 => 1, auto_savepoint => 1 } ],
41 { dsn => 'dbi:Pg:dbname=foo', user => 'user', password => 'pass',
42 pg_enable_utf8 => 1, auto_savepoint => 1 },
44 [$coderef, { pg_enable_utf8 => 1, auto_savepoint => 1 }],
45 { dbh_maker => $coderef, pg_enable_utf8 => 1, auto_savepoint => 1 },
51 ['dbi:Pg:dbname=foo', 'user', 'pass',
52 { pg_enable_utf8 => 1 }, { AutoCommit => 1 }, { auto_savepoint => 1 }],
55 plan tests => @tests / 2 + @invalid + 1 + 1;
57 # ignore redefined warnings, and uninitialized warnings from old
58 # ::Storage::DBI::Replicated
59 local $SIG{__WARN__} = sub {
60 $_[0] !~ /(?:redefined|uninitialized)/i && warn @_
63 for (my $i = 0; $i < @tests; $i += 2) {
65 connect_info => $tests[$i]
68 is_deeply $m->connect_info, $tests[$i+1],
69 'connect_info coerced correctly';
72 throws_ok { instance(connect_info => $_) } qr/valid connect_info/i,
73 'invalid connect_info throws exception'
76 # try as ConnectInfos (e.g.: replicants)
77 my @replicants = map $tests[$_], grep $_ % 2 == 0, 0..$#tests;
80 package TryConnectInfos;
83 use Catalyst::Model::DBIC::Schema::Types 'ConnectInfos';
85 has replicants => (is => 'ro', isa => ConnectInfos, coerce => 1);
88 my $m = TryConnectInfos->new(
89 replicants => \@replicants
92 is_deeply $m->replicants, [
93 map $tests[$_], grep $_ % 2, 0 .. $#tests
94 ], 'replicant connect_infos coerced correctly';
97 ASchemaClass->connection( @{$tests[0]} );
100 is_deeply $m->connect_info, $tests[1],
101 'connect_info coerced correctly when defining connection in the schema class';
105 Catalyst::Model::DBIC::Schema->new({
106 schema_class => 'ASchemaClass',