X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F48xml-to-sqlite.t;h=504d97eebb33f251c23a513545b71cb4de66939a;hb=1022b157d77c8281df619763fd5ceb48cde169b8;hp=bac7be51918d541fe8079e50886cf6e188403982;hpb=8c4efd11b1888e7b99cdc302dbc66ace5037453d;p=dbsrgits%2FSQL-Translator.git diff --git a/t/48xml-to-sqlite.t b/t/48xml-to-sqlite.t index bac7be5..504d97e 100644 --- a/t/48xml-to-sqlite.t +++ b/t/48xml-to-sqlite.t @@ -5,13 +5,14 @@ use FindBin qw/$Bin/; use Test::More; use Test::SQL::Translator; use Test::Exception; +use Test::Differences; use Data::Dumper; use SQL::Translator; use SQL::Translator::Schema::Constants; BEGIN { - maybe_plan(1, 'SQL::Translator::Parser::XML::SQLFairy', + maybe_plan(2, 'SQL::Translator::Parser::XML::SQLFairy', 'SQL::Translator::Producer::SQLite'); } @@ -20,7 +21,7 @@ my $xmlfile = "$Bin/data/xml/schema.xml"; my $sqlt; $sqlt = SQL::Translator->new( no_comments => 1, - show_warnings => 1, + show_warnings => 0, add_drop_table => 1, ); @@ -32,29 +33,95 @@ my $sql = $sqlt->translate( filename => $xmlfile, ) or die $sqlt->error; -# print ">>$sql<<\n"; +eq_or_diff($sql, << "SQL"); -is($sql, << "SQL"); -BEGIN TRANSACTION; +BEGIN TRANSACTION; --- --- Table: Basic --- DROP TABLE Basic; + CREATE TABLE Basic ( id INTEGER PRIMARY KEY NOT NULL, title varchar(100) NOT NULL DEFAULT 'hello', description text DEFAULT '', - email varchar(255), + email varchar(500), explicitnulldef varchar, explicitemptystring varchar DEFAULT '', -- Hello emptytagdef - emptytagdef varchar DEFAULT '' + emptytagdef varchar DEFAULT '', + another_id int(10) DEFAULT '2', + timest timestamp ); -CREATE INDEX titleindex_Basic on Basic (title); -CREATE UNIQUE INDEX emailuniqueindex_Basic on Basic (email); +CREATE INDEX titleindex_Basic ON Basic (title); + +CREATE UNIQUE INDEX emailuniqueindex_Basic ON Basic (email); + +DROP TABLE Another; + +CREATE TABLE Another ( + id INTEGER PRIMARY KEY NOT NULL +); + +DROP VIEW IF EXISTS email_list; +CREATE VIEW email_list AS + SELECT email FROM Basic WHERE email IS NOT NULL; + +DROP TRIGGER IF EXISTS foo_trigger; + +CREATE TRIGGER foo_trigger after insert on Basic BEGIN update modified=timestamp(); END; + +DROP TRIGGER IF EXISTS bar_trigger_insert; + +CREATE TRIGGER bar_trigger_insert before insert on Basic BEGIN update modified2=timestamp(); END; + +DROP TRIGGER IF EXISTS bar_trigger_update; + +CREATE TRIGGER bar_trigger_update before update on Basic BEGIN update modified2=timestamp(); END; COMMIT; SQL + +# Test in list context +my @sql = $sqlt->translate( + from => 'XML-SQLFairy', + to => 'SQLite', + filename => $xmlfile, +) or die $sqlt->error; + +eq_or_diff(\@sql, + [ + "\n\nBEGIN TRANSACTION", + 'DROP TABLE Basic', + 'CREATE TABLE Basic ( + id INTEGER PRIMARY KEY NOT NULL, + title varchar(100) NOT NULL DEFAULT \'hello\', + description text DEFAULT \'\', + email varchar(500), + explicitnulldef varchar, + explicitemptystring varchar DEFAULT \'\', + -- Hello emptytagdef + emptytagdef varchar DEFAULT \'\', + another_id int(10) DEFAULT \'2\', + timest timestamp +)', + 'CREATE INDEX titleindex_Basic02 ON Basic (title)', + 'CREATE UNIQUE INDEX emailuniqueindex_Basic02 ON Basic (email)', + 'DROP TABLE Another', + 'CREATE TABLE Another ( + id INTEGER PRIMARY KEY NOT NULL +)', + 'DROP VIEW IF EXISTS email_list; +CREATE VIEW email_list AS + SELECT email FROM Basic WHERE email IS NOT NULL', + 'DROP TRIGGER IF EXISTS foo_trigger', + 'CREATE TRIGGER foo_trigger after insert on Basic BEGIN update modified=timestamp(); END', + 'DROP TRIGGER IF EXISTS bar_trigger_insert', + 'CREATE TRIGGER bar_trigger_insert before insert on Basic BEGIN update modified2=timestamp(); END', + 'DROP TRIGGER IF EXISTS bar_trigger_update', + 'CREATE TRIGGER bar_trigger_update before update on Basic BEGIN update modified2=timestamp(); END', + 'COMMIT', + + ], 'SQLite translate in list context matches'); + +