X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F48xml-to-sqlite.t;h=c567bbc1696af35add6ec8053d9c32724d33112e;hb=715b82950282ae3475e24d9b5c407d8d112399dc;hp=6ed2a22c17fedde68e1e09ac1f555da9438e14bb;hpb=5cb666c086d808c39b90d3b22ac4541caaf4e808;p=dbsrgits%2FSQL-Translator.git diff --git a/t/48xml-to-sqlite.t b/t/48xml-to-sqlite.t index 6ed2a22..c567bbc 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,27 +33,101 @@ my $sql = $sqlt->translate( filename => $xmlfile, ) or die $sqlt->error; -# print ">>$sql<<\n"; - -is($sql, << "SQL"); +eq_or_diff($sql, << "SQL"); BEGIN TRANSACTION; +DROP 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), - explicitnulldef varchar, - explicitemptystring varchar DEFAULT '', +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 '', - timest timestamp + 'emptytagdef' varchar DEFAULT '', + 'another_id' int(10) DEFAULT 2, + 'timest' timestamp, + FOREIGN KEY ('another_id') REFERENCES 'Another'('id') +); + +CREATE INDEX 'titleindex' ON 'Basic' ('title'); + +CREATE UNIQUE INDEX 'emailuniqueindex' ON 'Basic' ('email'); + +CREATE UNIQUE INDEX 'very_long_index_name_on_title_field_which_should_be_truncated_for_various_rdbms' ON 'Basic' ('title'); + +DROP TABLE 'Another'; + +CREATE TABLE 'Another' ( + 'id' INTEGER PRIMARY KEY NOT NULL, + 'num' numeric(10,2) ); -CREATE INDEX titleindex_Basic on Basic (title); -CREATE UNIQUE INDEX emailuniqueindex_Basic on Basic (email); +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, + [ + 'BEGIN TRANSACTION', + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + q, + 'COMMIT', + + ], 'SQLite translate in list context matches'); + +