sub run_tests {
my $self = shift;
- plan tests => 73;
+ plan tests => 80;
$self->create();
}
my $conn = $schema_class->clone;
- my $monikers = $schema_class->loader->monikers;
- my $classes = $schema_class->loader->classes;
+ my $monikers = {};
+ my $classes = {};
+ foreach my $source_name ($schema_class->sources) {
+ my $table_name = $schema_class->source($source_name)->from;
+ $monikers->{$table_name} = $source_name;
+ $classes->{$table_name} = $schema_class . q{::} . $source_name;
+ }
my $moniker1 = $monikers->{loader_test1};
my $class1 = $classes->{loader_test1};
isa_ok( $rsobj23, "DBIx::Class::ResultSet" );
isa_ok( $rsobj24, "DBIx::Class::ResultSet" );
+ my @columns_lt2 = $class2->columns;
+ is($columns_lt2[0], 'id', "Column Ordering 0");
+ is($columns_lt2[1], 'dat', "Column Ordering 1");
+ is($columns_lt2[2], 'dat2', "Column Ordering 2");
+
my %uniq1 = $class1->unique_constraints;
my $uniq1_test = 0;
foreach my $ucname (keys %uniq1) {
foreach my $ucname (keys %uniq2) {
my $cols_arrayref = $uniq2{$ucname};
if(@$cols_arrayref == 2
- && $cols_arrayref->[0] eq 'dat'
- && $cols_arrayref->[1] eq 'dat2') {
+ && $cols_arrayref->[0] eq 'dat2'
+ && $cols_arrayref->[1] eq 'dat') {
$uniq2_test = 2;
last;
}
ok($new_obj1) or diag "Cannot find newly inserted PK::Auto record";
is($new_obj1->id, $saved_id);
- my ($obj2) = $rsobj2->find( dat => 'bbb' );
+ my ($obj2) = $rsobj2->search({ dat => 'bbb' })->first;
is( $obj2->id, 2 );
SKIP: {
isa_ok( $rs_rel4->first, $class4);
# find on multi-col pk
- my $obj5 = $rsobj5->find( id1 => 1, id2 => 1 );
+ my $obj5 = $rsobj5->find({id1 => 1, id2 => 1});
is( $obj5->id2, 1 );
# mulit-col fk def
my $obj15 = $rsobj15->find(1);
isa_ok( $obj15->loader_test14, $class14 );
}
+
+ # rescan test
+ SKIP: {
+ skip 'SQLite does not like schema changes while connected', 4
+ if $self->{vendor} =~ /sqlite/i;
+
+ my @statements_rescan = (
+ qq{
+ CREATE TABLE loader_test25 (
+ id INTEGER NOT NULL PRIMARY KEY,
+ loader_test2 INTEGER NOT NULL,
+ FOREIGN KEY (loader_test2) REFERENCES loader_test2 (id)
+ ) $self->{innodb}
+ },
+ q{ INSERT INTO loader_test25 (id,loader_test2) VALUES(123, 1) },
+ q{ INSERT INTO loader_test25 (id,loader_test2) VALUES(321, 2) },
+ );
+
+ my $dbh = $self->dbconnect(1);
+ $dbh->do($_) for @statements_rescan;
+ $dbh->disconnect;
+
+ my @new = $conn->rescan;
+ is(scalar(@new), 1);
+ is($new[0], 'LoaderTest25');
+
+ my $rsobj25 = $conn->resultset('LoaderTest25');
+ isa_ok($rsobj25, 'DBIx::Class::ResultSet');
+ my $obj25 = $rsobj25->find(123);
+ isa_ok( $obj25->loader_test2, $class2);
+ }
+
}
}
id $self->{auto_inc_pk},
dat VARCHAR(32) NOT NULL,
dat2 VARCHAR(32) NOT NULL,
- UNIQUE (dat, dat2)
+ UNIQUE (dat2, dat)
) $self->{innodb}
},
id INTEGER NOT NULL PRIMARY KEY,
fkid INTEGER NOT NULL,
dat VARCHAR(32),
- FOREIGN KEY (fkid) REFERENCES loader_test3 (id)
+ FOREIGN KEY( fkid ) REFERENCES loader_test3 (id)
) $self->{innodb}
},
Id2 INTEGER,
loader_test2 INTEGER,
dat VARCHAR(8),
- FOREIGN KEY (loader_test2) REFERENCES loader_test2 (id),
- FOREIGN KEY (id, Id2 ) REFERENCES loader_test5 (id1,iD2)
+ FOREIGN KEY (loader_test2) REFERENCES loader_test2 (id),
+ FOREIGN KEY(id,Id2) REFERENCES loader_test5 (id1,iD2)
) $self->{innodb}
},
},
q{ INSERT INTO loader_test15 (id,loader_test14) VALUES (1,123) },
- );
+ );
$self->drop_tables;
loader_test14
/;
+ my @tables_rescan = qw/ loader_test25 /;
+
my $drop_fk_mysql =
q{ALTER TABLE loader_test10 DROP FOREIGN KEY loader_test11_fk;};
$dbh->do("DROP TABLE $_") for (@tables_implicit_rels);
}
}
+ unless($self->{vendor} =~ /sqlite/i) {
+ $dbh->do("DROP TABLE $_") for (@tables_rescan);
+ }
$dbh->do("DROP TABLE $_") for (@tables);
$dbh->disconnect;
}