X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F08helper.t;h=09ae5ebdfa1369faf6cb4ccb396d159bf7e00702;hb=4c7770ddf435bacaa6eae1a8debe3dacfefeddce;hp=c6e1e006d0efdeed4dd2b36036b9655caeb31dc9;hpb=5f9a34d7a46dbf7b4870820d2fe46a226a99b491;p=catagits%2FCatalyst-Model-DBIC-Schema.git diff --git a/t/08helper.t b/t/08helper.t index c6e1e00..09ae5eb 100644 --- a/t/08helper.t +++ b/t/08helper.t @@ -4,11 +4,11 @@ use warnings; use FindBin '$Bin'; use lib "$Bin/lib"; -use Test::More tests => 38; +use Test::More; use Test::Exception; use Catalyst::Helper::Model::DBIC::Schema; -use Catalyst::Helper; use Storable 'dclone'; +use Test::Requires qw(Catalyst::Helper DBIx::Class::Schema::Loader); my $helper = Catalyst::Helper->new; $helper->{base} = $Bin; @@ -24,13 +24,16 @@ my $i; $i = instance(schema_class => 'ASchemaClass'); is $i->old_schema, 1, '->load_classes detected correctly'; -$i = instance(args => ['roles=Caching']); -is_deeply $i->roles, ['Caching'], 'one role'; -is $i->helper->{roles}, "['Caching']", 'one role as string'; +throws_ok { $i = instance(args => [$static, 'DbI:SQLite:myapp.db']) } + qr/case matters/i, "wrong case for 'dbi:' DSN part"; -$i = instance(args => ['roles=Caching,Replicated']); -is_deeply $i->roles, ['Caching', 'Replicated'], 'two roles'; -is $i->helper->{roles}, "['Caching','Replicated']", 'two roles as string'; +$i = instance(args => ['traits=Caching']); +is_deeply $i->traits, ['Caching'], 'one trait'; +is $i->helper->{traits}, "['Caching']", 'one trait as string'; + +$i = instance(args => ['traits=Caching,Replicated']); +is_deeply $i->traits, ['Caching', 'Replicated'], 'two traits'; +is $i->helper->{traits}, "['Caching','Replicated']", 'two traits as string'; $i = instance(args => [$static]); is $i->create, 'static', 'create=static'; @@ -69,11 +72,12 @@ $i = instance(args => [$static, q{components=TimeStamp,Foo}]); is_deeply $i->components, ['InflateColumn::DateTime', 'TimeStamp', 'Foo'], 'two extra components'; +my $flags = qr// =~ /\^/ ? '^' : "-xism"; $i = instance(args => [$static, q{constraint=^(foo|bar)$}]); is $i->loader_args->{constraint}, qr/^(foo|bar)$/, 'constraint loader arg'; is $i->helper->{loader_args}{constraint}, - q{qr/(?-xism:^(foo|bar)$)/}, + qq{qr/(?$flags:^(foo|bar)\$)/}, 'constraint loader arg as string'; $i = instance(args => [$static, q{exclude=^(foo|bar)$}]); @@ -113,6 +117,16 @@ is $i->helper->{connect_info}{name_sep}, 'q{.}', 'connect_info name_sep as string'; $i = instance(args => [ + $static, $sqlite, 'on_connect_do=PRAGMA foreign_keys = ON' +]); + +is $i->connect_info->{on_connect_do}, + 'PRAGMA foreign_keys = ON', 'on_connect_do string'; + +is $i->helper->{connect_info}{on_connect_do}, + 'q{PRAGMA foreign_keys = ON}', 'on_connect_do string as string'; + +$i = instance(args => [ $static, 'components=TimeStamp', $sqlite, '', $on_connect_do, $quote_char, $name_sep ]); @@ -131,6 +145,15 @@ is $i->connect_info->{user}, 'user', 'user'; is $i->connect_info->{password}, 'pass', 'password'; $i = instance(args => [ + $static, $pg, 'user', 'pass', 'quote_char=[]', $name_sep +]); + +is_deeply $i->connect_info->{quote_char}, ['[', ']'], + '2 character quote_char'; +is $i->helper->{connect_info}{quote_char}, '["[","]"]', + '2 character quote_char as string'; + +$i = instance(args => [ $static, 'components=TimeStamp', $sqlite, $on_connect_do, $quote_char, $name_sep, '{ auto_savepoint => 1, AutoCommit => 0 }' ]); @@ -142,6 +165,20 @@ is $i->helper->{connect_info}{auto_savepoint}, 'q{1}', is $i->helper->{connect_info}{AutoCommit}, 'q{0}', 'connect_info arg from extra hash as string'; +$i = instance(args => [ + $static, 'components=TimeStamp', $sqlite, $on_connect_do, + $quote_char, $name_sep, 'auto_savepoint=1', 'AutoCommit=0', + 'db_schema=myschema', +]); + +is $i->loader_args->{db_schema}, 'myschema', + 'loader arg after connect_info'; + +ok ((not exists $i->helper->{connect_info}{db_schema}), + 'loader args removed from connect_info'); + +done_testing; + sub instance { Catalyst::Helper::Model::DBIC::Schema->new( schema_class => 'AnotherSchemaClass',