X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F99dbic_sqlt_parser.t;h=a9fba8fe8b5f4f0bf12452d96c734a83740a6696;hb=8273e845426f0187b4ad6c4a1b42286fa09a648f;hp=61202b76462e44990bff5a46eec76b2092d03e70;hpb=68de943862f06cabd397d2e74d12cd9cdc999779;p=dbsrgits%2FDBIx-Class.git diff --git a/t/99dbic_sqlt_parser.t b/t/99dbic_sqlt_parser.t index 61202b7..a9fba8f 100644 --- a/t/99dbic_sqlt_parser.t +++ b/t/99dbic_sqlt_parser.t @@ -5,6 +5,9 @@ use Test::More; use Test::Exception; use Scalar::Util (); +use lib qw(t/lib); +use DBICTest; + BEGIN { require DBIx::Class; plan skip_all => @@ -12,10 +15,6 @@ BEGIN { unless DBIx::Class::Optional::Dependencies->req_ok_for ('deploy') } -use lib qw(t/lib); -use DBICTest; -use DBICTest::Schema; - # Test for SQLT-related leaks { my $s = DBICTest::Schema->clone; @@ -31,7 +30,8 @@ use DBICTest::Schema; lives_ok { isa_ok (create_schema ({ schema => 'DBICTest::Schema' }), 'SQL::Translator::Schema', 'SQLT schema object produced') }; -my $schema = DBICTest->init_schema(); +my $schema = DBICTest->init_schema( no_deploy => 1 ); + # Dummy was yanked out by the sqlt hook test # CustomSql tests the horrific/deprecated ->name(\$sql) hack # YearXXXXCDs are views @@ -135,6 +135,69 @@ lives_ok (sub { }); +{ + package DBICTest::PartialSchema; + + use base qw/DBIx::Class::Schema/; + + __PACKAGE__->load_classes( + { 'DBICTest::Schema' => [qw/ + CD + Track + Tag + Producer + CD_to_Producer + /]} + ); +} + +{ + my $partial_schema = DBICTest::PartialSchema->connect(DBICTest->_database); + + lives_ok (sub { + my $sqlt_schema = do { + + local $SIG{__WARN__} = sub { + warn @_ + unless $_[0] =~ /Ignoring relationship .+ related resultsource .+ is not registered with this schema/ + }; + + create_schema({ schema => $partial_schema }); + }; + + my @tables = $sqlt_schema->get_tables; + + is_deeply ( + [sort map { $_->name } @tables], + [qw/cd cd_to_producer producer tags track/], + 'partial dbic schema parsing ok', + ); + + # the primary key is currently unnamed in sqlt - adding below + my %constraints_for_table = ( + producer => [qw/prod_name /], + tags => [qw/tagid_cd tagid_cd_tag tags_fk_cd tags_tagid_tag tags_tagid_tag_cd /], + track => [qw/track_cd_position track_cd_title track_fk_cd /], + cd => [qw/cd_artist_title cd_fk_single_track /], + cd_to_producer => [qw/cd_to_producer_fk_cd cd_to_producer_fk_producer /], + ); + + for my $table (@tables) { + my $tablename = $table->name; + my @constraints = $table->get_constraints; + is_deeply ( + [ sort map { $_->name } @constraints ], + + # the primary key (present on all loaded tables) is currently named '' in sqlt + # subject to future changes + [ '', @{$constraints_for_table{$tablename}} ], + + "constraints of table '$tablename' ok", + ); + } + }, 'partial schema tests successful'); +} + done_testing; sub create_schema { @@ -144,7 +207,7 @@ sub create_schema { my $additional_sqltargs = $args->{args} || {}; my $sqltargs = { - add_drop_table => 1, + add_drop_table => 1, ignore_constraint_names => 1, ignore_index_names => 1, %{$additional_sqltargs}