Revision history for Perl extension Catalyst::Model::DBIC::Schema
0.26 As yet unreleased
+ - fix loading connect_info from schema-defined connection (RT 48084)
- Fix missing dep on Catalyst::Helper that made tests fail (RT 47449)
0.25 Fri Jun 19 08:35:38 PDT 2009
$helper->{loader_args} = $self->_build_helper_loader_args;
- if (first { /^dbi:/i } @args) {
+ my $dbi_dsn_part;
+ if (first { ($dbi_dsn_part) = /^(dbi):/i } @args) {
+ die
+qq{DSN must start with 'dbi:' not '$dbi_dsn_part' (case matters!)}
+ if $dbi_dsn_part ne 'dbi';
+
$helper->{setup_connect_info} = 1;
$helper->{connect_info} =
my %loader_args;
- while (@$args && $args->[0] !~ /^dbi:/) {
+ while (@$args && $args->[0] !~ /^dbi:/i) {
my ($key, $val) = split /=/, shift(@$args), 2;
if ($self->_is_struct($val)) {
has storage_type => (is => 'rw', isa => Str);
-has connect_info => (is => 'ro', isa => ConnectInfo, coerce => 1);
+has connect_info => (is => 'rw', isa => ConnectInfo, coerce => 1);
has model_name => (
is => 'ro',
{ pg_enable_utf8 => 1 }, { AutoCommit => 1 }, { auto_savepoint => 1 }],
);
-plan tests => @tests / 2 + @invalid + 1;
+plan tests => @tests / 2 + @invalid + 1 + 1;
# ignore redefined warnings, and uninitialized warnings from old
# ::Storage::DBI::Replicated
map $tests[$_], grep $_ % 2, 0 .. $#tests
], 'replicant connect_infos coerced correctly';
+{
+ ASchemaClass->connection( @{$tests[0]} );
+ my $m = instance();
+
+ is_deeply $m->connect_info, $tests[1],
+ 'connect_info coerced correctly when defining connection in the schema class';
+}
+
sub instance {
Catalyst::Model::DBIC::Schema->new({
schema_class => 'ASchemaClass',
use Storable 'dclone';
eval "use Catalyst::Helper";
plan skip_all => 'Catalyst::Helper required for tests' if $@;
-plan tests => 40;
+plan tests => 41;
my $helper = Catalyst::Helper->new;
$helper->{base} = $Bin;
$i = instance(schema_class => 'ASchemaClass');
is $i->old_schema, 1, '->load_classes detected correctly';
+throws_ok { $i = instance(args => [$static, 'DbI:SQLite:myapp.db']) }
+ qr/case matters/i, "wrong case for 'dbi:' DSN part";
+
$i = instance(args => ['traits=Caching']);
is_deeply $i->traits, ['Caching'], 'one trait';
is $i->helper->{traits}, "['Caching']", 'one trait as string';