X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F27sqlite-parser.t;h=5f61ea7bd7460803dfed7cfc2282042e8b619375;hb=7f3f64d7569376436130a955eb3c9e6b30284c34;hp=db4c40cb271c8aa1e30b2d10d732f4b022fb1d61;hpb=153b2e77e3d34b03c17c97a9bad1ba1b1ebc4340;p=dbsrgits%2FSQL-Translator.git diff --git a/t/27sqlite-parser.t b/t/27sqlite-parser.t index db4c40c..5f61ea7 100644 --- a/t/27sqlite-parser.t +++ b/t/27sqlite-parser.t @@ -2,13 +2,19 @@ # vim: set ft=perl: use strict; -use Test::More 'no_plan'; #tests => 180; +use Test::More; +use Test::SQL::Translator qw(maybe_plan); use FindBin qw/$Bin/; use SQL::Translator; -use SQL::Translator::Parser::SQLite 'parse'; use SQL::Translator::Schema::Constants; +BEGIN { + maybe_plan(25, + 'SQL::Translator::Parser::SQLite'); +} +SQL::Translator::Parser::SQLite->import('parse'); + my $file = "$Bin/data/sqlite/create.sql"; { @@ -26,12 +32,65 @@ my $file = "$Bin/data/sqlite/create.sql"; my $t1 = shift @tables; is( $t1->name, 'person', "'Person' table" ); + my @fields = $t1->get_fields; + is( scalar @fields, 6, 'Six fields in "person" table'); + my $fld1 = shift @fields; + is( $fld1->name, 'person_id', 'First field is "person_id"'); + is( $fld1->is_auto_increment, 1, 'Is an autoincrement field'); + my $t2 = shift @tables; is( $t2->name, 'pet', "'Pet' table" ); + my @constraints = $t2->get_constraints; + is( scalar @constraints, 3, '3 constraints on pet' ); + + my $c1 = pop @constraints; + is( $c1->type, 'FOREIGN KEY', 'FK constraint' ); + is( $c1->reference_table, 'person', 'References person table' ); + is( join(',', $c1->reference_fields), 'person_id', + 'References person_id field' ); + my @views = $schema->get_views; is( scalar @views, 1, 'Parsed one views' ); my @triggers = $schema->get_triggers; is( scalar @triggers, 1, 'Parsed one triggers' ); } + +$file = "$Bin/data/sqlite/named.sql"; +{ + local $/; + open my $fh, "<$file" or die "Can't read file '$file': $!\n"; + my $data = <$fh>; + my $t = SQL::Translator->new; + parse($t, $data); + + my $schema = $t->schema; + + my @tables = $schema->get_tables; + is( scalar @tables, 1, 'Parsed one table' ); + + my $t1 = shift @tables; + is( $t1->name, 'pet', "'Pet' table" ); + + my @constraints = $t1->get_constraints; + is( scalar @constraints, 5, '5 constraints on pet' ); + + my $c1 = $constraints[2]; + is( $c1->type, 'FOREIGN KEY', 'FK constraint' ); + is( $c1->reference_table, 'person', 'References person table' ); + is( $c1->name, 'fk_person_id', 'Constraint name fk_person_id' ); + is( $c1->on_delete, 'RESTRICT', 'On delete restrict' ); + is( $c1->on_update, 'CASCADE', 'On update cascade' ); + is( join(',', $c1->reference_fields), 'person_id', + 'References person_id field' ); + + my $c2 = $constraints[3]; + is( $c2->on_delete, 'SET DEFAULT', 'On delete set default' ); + is( $c2->on_update, 'SET NULL', 'On update set null' ); + + my $c3 = $constraints[4]; + is( $c3->on_update, 'NO ACTION', 'On update no action' ); + is( $c3->on_delete, '', 'On delete not defined' ); + +}