X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F99dbic_sqlt_parser.t;h=da56fd5ca8218b5c5707fdf08fd3f482d12414ff;hb=8fd1068349424024f8c455b087fa75e654abac3f;hp=c14664988477d90278bde718de0223c7d0204b7e;hpb=8f1617e23a195d3730e821d3dda2eeb913b99b22;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/99dbic_sqlt_parser.t b/t/99dbic_sqlt_parser.t index c146649..da56fd5 100644 --- a/t/99dbic_sqlt_parser.t +++ b/t/99dbic_sqlt_parser.t @@ -2,6 +2,7 @@ use strict; use warnings; use Test::More; +use Test::Exception; use lib qw(t/lib); use DBICTest; @@ -63,28 +64,44 @@ my @sources = grep } { - #my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { } } }); - my $sqlt_schema = create_schema({ schema => $schema }); - - my @views = $sqlt_schema->get_views; + { + package # hide from PAUSE + DBICTest::Schema::NoViewDefinition; + + use base qw/DBICTest::BaseResult/; - # the following views are skipped: - # Year1999CDs is virtual - # NoViewDefinition has no view_definition - is(scalar @views, 1, "number of views ok"); + __PACKAGE__->table_class('DBIx::Class::ResultSource::View'); + __PACKAGE__->table('noviewdefinition'); - foreach my $view (@views) { - ok($view->is_valid, "view " . $view->name . " is valid"); + 1; } - my @expected_view_names = (qw/ year2000cds /); - my @view_names = sort map { $_->name } @views; + my $schema_invalid_view = $schema->clone; + $schema_invalid_view->register_class('NoViewDefinition', 'DBICTest::Schema::NoViewDefinition'); - is_deeply( @view_names, @expected_view_names, "all expected views included int SQL::Translator schema" ); + eval { + my $sqlt_schema = create_schema({ schema => $schema_invalid_view }); + }; + #like($@, qr/view noviewdefinition is missing a view_definition/, "parser detects views with a view_definition"); + throws_ok { create_schema({ schema => $schema_invalid_view }) } + qr/view noviewdefinition is missing a view_definition/, + 'parser detects views with a view_definition'; - #use Data::Dumper::Concise; - #warn Dumper(@view_names); - #is($view->error, undef, 'view with a view_definition is skipped.'); +# my @views = $sqlt_schema->get_views; +# +# # the following views are skipped: +# # Year1999CDs is virtual +# # NoViewDefinition has no view_definition +# is(scalar @views, 1, "number of views ok"); +# +# foreach my $view (@views) { +# ok($view->is_valid, "view " . $view->name . " is valid"); +# } +# +# my @expected_view_names = (qw/ year2000cds /); +# my @view_names = sort map { $_->name } @views; +# +# is_deeply( @view_names, @expected_view_names, "all expected views included int SQL::Translator schema" ); } done_testing; @@ -105,7 +122,7 @@ sub create_schema { my $sqlt = SQL::Translator->new( $sqltargs ); $sqlt->parser('SQL::Translator::Parser::DBIx::Class'); - return $sqlt->translate({ data => $schema }) or die $sqlt->error; + return $sqlt->translate({ data => $schema }) || die $sqlt->error; } sub get_table {