6 use Test::SQL::Translator;
11 use SQL::Translator::Schema::Constants;
15 maybe_plan(2, 'SQL::Translator::Parser::XML::SQLFairy',
16 'SQL::Translator::Producer::SQLite');
19 my $xmlfile = "$Bin/data/xml/schema.xml";
22 $sqlt = SQL::Translator->new(
28 die "Can't find test schema $xmlfile" unless -e $xmlfile;
30 my $sql = $sqlt->translate(
31 from => 'XML-SQLFairy',
34 ) or die $sqlt->error;
36 eq_or_diff($sql, << "SQL");
44 id INTEGER PRIMARY KEY NOT NULL,
45 title varchar(100) NOT NULL DEFAULT 'hello',
46 description text DEFAULT '',
48 explicitnulldef varchar,
49 explicitemptystring varchar DEFAULT '',
51 emptytagdef varchar DEFAULT '',
52 another_id int(10) DEFAULT '2',
56 CREATE INDEX titleindex_Basic ON Basic (title);
58 CREATE UNIQUE INDEX emailuniqueindex_Basic ON Basic (email);
62 CREATE TABLE Another (
63 id INTEGER PRIMARY KEY NOT NULL
66 DROP VIEW IF EXISTS email_list;
67 CREATE VIEW email_list AS
68 SELECT email FROM Basic WHERE email IS NOT NULL;
70 DROP TRIGGER IF EXISTS foo_trigger;
72 CREATE TRIGGER foo_trigger after insert on Basic BEGIN update modified=timestamp(); END;
74 DROP TRIGGER IF EXISTS bar_trigger_insert;
76 CREATE TRIGGER bar_trigger_insert before insert on Basic BEGIN update modified2=timestamp(); END;
78 DROP TRIGGER IF EXISTS bar_trigger_update;
80 CREATE TRIGGER bar_trigger_update before update on Basic BEGIN update modified2=timestamp(); END;
85 # Test in list context
86 my @sql = $sqlt->translate(
87 from => 'XML-SQLFairy',
90 ) or die $sqlt->error;
94 "\n\nBEGIN TRANSACTION",
97 id INTEGER PRIMARY KEY NOT NULL,
98 title varchar(100) NOT NULL DEFAULT \'hello\',
99 description text DEFAULT \'\',
101 explicitnulldef varchar,
102 explicitemptystring varchar DEFAULT \'\',
104 emptytagdef varchar DEFAULT \'\',
105 another_id int(10) DEFAULT \'2\',
108 'CREATE INDEX titleindex_Basic02 ON Basic (title)',
109 'CREATE UNIQUE INDEX emailuniqueindex_Basic02 ON Basic (email)',
110 'DROP TABLE Another',
111 'CREATE TABLE Another (
112 id INTEGER PRIMARY KEY NOT NULL
114 'DROP VIEW IF EXISTS email_list;
115 CREATE VIEW email_list AS
116 SELECT email FROM Basic WHERE email IS NOT NULL',
117 'DROP TRIGGER IF EXISTS foo_trigger',
118 'CREATE TRIGGER foo_trigger after insert on Basic BEGIN update modified=timestamp(); END',
119 'DROP TRIGGER IF EXISTS bar_trigger_insert',
120 'CREATE TRIGGER bar_trigger_insert before insert on Basic BEGIN update modified2=timestamp(); END',
121 'DROP TRIGGER IF EXISTS bar_trigger_update',
122 'CREATE TRIGGER bar_trigger_update before update on Basic BEGIN update modified2=timestamp(); END',
125 ], 'SQLite translate in list context matches');