sub run_tests {
my $self = shift;
- plan tests => 32;
+ plan tests => 42;
$self->create();
my $debug = ($self->{verbose} > 1) ? 1 : 0;
my %loader_opts = (
- dsn => $self->{dsn},
- user => $self->{user},
- password => $self->{password},
- constraint => '^(?:\S+\.)?(?i:loader_test)[0-9]+$',
- relationships => 1,
- debug => $debug,
+ dsn => $self->{dsn},
+ user => $self->{user},
+ password => $self->{password},
+ constraint => '^(?:\S+\.)?(?i:loader_test)[0-9]+$',
+ relationships => 1,
+ additional_classes => 'TestAdditional',
+ additional_base_classes => 'TestAdditionalBase',
+ left_base_classes => [ qw/TestLeftBase/ ],
+ debug => $debug,
);
$loader_opts{db_schema} = $self->{db_schema} if $self->{db_schema};
__PACKAGE__->load_from_connection(\%loader_opts);
};
- ok(!$@, "Loader initialization failed: $@");
+ ok(!$@, "Loader initialization") or diag $@;
my $conn = $schema_class->connect($self->{dsn},$self->{user},$self->{password});
my $monikers = $schema_class->loader->monikers;
isa_ok( $rsobj1, "DBIx::Class::ResultSet" );
isa_ok( $rsobj2, "DBIx::Class::ResultSet" );
+ can_ok( $class1, 'test_additional_base' );
+ can_ok( $class1, 'test_additional_base_override' );
+ can_ok( $class1, 'test_additional_base_additional' );
+
+ is( $class1->test_additional_base, "test_additional_base",
+ "Additional Base method" );
+
+ is( $class1->test_additional_base_override, "test_left_base_override",
+ "Left Base overrides Additional Base method" );
+
+ is( $class1->test_additional_base_additional, "test_additional",
+ "Additional Base can use Additional package method" );
+
my $obj = $rsobj1->find(1);
is( $obj->id, 1 );
is( $obj->dat, "foo" );
is( $obj2->id, 2 );
SKIP: {
- skip $self->{skip_rels}, 25 if $self->{skip_rels};
+ skip $self->{skip_rels}, 29 if $self->{skip_rels};
my $moniker3 = $monikers->{loader_test3};
my $class3 = $classes->{loader_test3};
my $obj4 = $rsobj4->find(123);
isa_ok( $obj4->fkid, $class3);
+ my $obj3 = $rsobj3->find(1);
+ my $rs_rel4 = $obj3->search_related('loader_test4s');
+ isa_ok( $rs_rel4->first, $class4);
+
# fk def in comments should not be parsed
my $obj5 = $rsobj5->find( id1 => 1, id2 => 1 );
is( ref( $obj5->id2 ), '' );
isa_ok( $obj13->loader_test12, $class12);
isa_ok( $obj13->dat, $class12);
}
+
+ SKIP: {
+ skip 'This vendor cannot do out-of-line implicit rel defs', 3
+ if $self->{no_implicit_rels};
+ my $moniker14 = $monikers->{loader_test14};
+ my $class14 = $classes->{loader_test14};
+ my $rsobj14 = $conn->resultset($moniker14);
+
+ my $moniker15 = $monikers->{loader_test15};
+ my $class15 = $classes->{loader_test15};
+ my $rsobj15 = $conn->resultset($moniker15);
+
+ isa_ok( $rsobj14, "DBIx::Class::ResultSet" );
+ isa_ok( $rsobj15, "DBIx::Class::ResultSet" );
+
+ my $obj15 = $rsobj15->find(1);
+ isa_ok( $obj15->loader_test14, $class14 );
+ }
}
}
);
+ my @statements_implicit_rels = (
+ qq{
+ CREATE TABLE loader_test14 (
+ id INTEGER NOT NULL PRIMARY KEY,
+ dat VARCHAR(8)
+ ) $self->{innodb}
+ },
+
+ q{ INSERT INTO loader_test14 (id,dat) VALUES (123,'aaa') },
+
+ qq{
+ CREATE TABLE loader_test15 (
+ id INTEGER NOT NULL PRIMARY KEY,
+ loader_test14 INTEGER NOT NULL,
+ FOREIGN KEY (loader_test14) REFERENCES loader_test14
+ ) $self->{innodb}
+ },
+
+ q{ INSERT INTO loader_test15 (id,loader_test14) VALUES (1,123) },
+ );
+
$self->drop_tables;
$self->{created} = 1;
my $dbh = $self->dbconnect(1);
+
+ # Silence annoying but harmless postgres "NOTICE: CREATE TABLE..."
+ local $SIG{__WARN__} = sub {
+ my $msg = shift;
+ print STDERR $msg unless $msg =~ m{^NOTICE:\s+CREATE TABLE};
+ };
+
$dbh->do($_) for (@statements);
unless($self->{skip_rels}) {
# hack for now, since DB2 doesn't like inline comments, and we need
unless($self->{no_inline_rels}) {
$dbh->do($_) for (@statements_inline_rels);
}
+ unless($self->{no_implicit_rels}) {
+ $dbh->do($_) for (@statements_implicit_rels);
+ }
}
$dbh->disconnect();
}
loader_test12
/;
+ my @tables_implicit_rels = qw/
+ loader_test15
+ loader_test14
+ /;
+
my $drop_fk_mysql =
q{ALTER TABLE loader_test10 DROP FOREIGN KEY loader_test11_fk;};
unless($self->{no_inline_rels}) {
$dbh->do("DROP TABLE $_") for (@tables_inline_rels);
}
+ unless($self->{no_implicit_rels}) {
+ $dbh->do("DROP TABLE $_") for (@tables_implicit_rels);
+ }
}
$dbh->do("DROP TABLE $_") for (@tables);
$dbh->disconnect;