X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fdbixcsl_common_tests.pm;h=2e4143cefca2b3072dc50b14ebaf4710095a947c;hb=a60b5b8dba39bf151b904b4fa5b53d65117b2801;hp=8e9800c214a1fcc249b81c5038e666809fb8e7a8;hpb=5223f24a6662ce33f7b60d2a3f6f83e83f5373cc;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_common_tests.pm b/t/lib/dbixcsl_common_tests.pm index 8e9800c..2e4143c 100644 --- a/t/lib/dbixcsl_common_tests.pm +++ b/t/lib/dbixcsl_common_tests.pm @@ -43,7 +43,7 @@ sub _monikerize { sub run_tests { my $self = shift; - plan tests => 73; + plan tests => 80; $self->create(); @@ -100,8 +100,13 @@ sub run_tests { } 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}; @@ -124,6 +129,11 @@ sub run_tests { 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) { @@ -230,7 +240,7 @@ sub run_tests { 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: { @@ -316,7 +326,7 @@ sub run_tests { 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 @@ -434,6 +444,38 @@ sub run_tests { 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); + } + } } @@ -519,7 +561,7 @@ sub create { 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} }, @@ -545,8 +587,8 @@ sub create { 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} }, @@ -734,7 +776,7 @@ sub create { }, q{ INSERT INTO loader_test15 (id,loader_test14) VALUES (1,123) }, - ); + ); $self->drop_tables; @@ -807,6 +849,8 @@ sub 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;}; @@ -833,6 +877,9 @@ sub drop_tables { $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; }