4 # Before `make install' is performed this script should be runnable with
5 # `make test'. After `make install' it should work as `perl test.pl'
11 # run with -d for debug
13 BEGIN { map { $opt{$_}=1 if s/^-// } @ARGV; }
14 use constant DEBUG => (exists $opt{d} ? 1 : 0);
17 use Test::SQL::Translator;
19 use SQL::Translator::Schema::Constants;
22 #=============================================================================
26 my $testschema = "$Bin/data/xmi/OrderDB.sqlfairy.poseidon2.xmi";
27 die "Can't find test schema $testschema" unless -e $testschema;
30 $obj = SQL::Translator->new(
31 filename => $testschema,
32 from => 'XML-XMI-SQLFairy',
37 my $sql = $obj->translate;
38 ok( $sql, "Got some SQL");
40 print "Translator:",Dumper($obj) if DEBUG;
46 my $scma = $obj->schema;
47 is( $scma->is_valid, 1, 'Schema is valid' );
48 my @tblnames = map {$_->name} $scma->get_tables;
49 is(scalar(@{$scma->get_tables}), scalar(@tblnames), "Right number of tables");
50 is_deeply( \@tblnames,
51 [qw/Order OrderLine Customer ContactDetails ContactDetails_Customer/]
54 table_ok( $scma->get_table("Customer"), {
59 data_type => "VARCHAR",
61 default_value => undef,
67 data_type => "VARCHAR",
69 default_value => undef,
77 default_value => undef,
80 is_auto_increment => 1,
85 type => "PRIMARY KEY",
86 fields => ["CustomerID"],
89 # name => "UniqueEmail",
91 # fields => ["email"],
96 table_ok( $scma->get_table("ContactDetails_Customer"), {
97 name => "ContactDetails_Customer",
100 name => "ContactDetailsID",
103 default_value => undef,
106 is_auto_increment => 0,
110 name => "CustomerID",
113 default_value => undef,
116 is_auto_increment => 0,
122 type => "FOREIGN KEY",
123 fields => ["ContactDetailsID"],
124 reference_table => "ContactDetails",
125 reference_fields => ["ContactDetailsID"],
128 type => "FOREIGN KEY",
129 fields => ["CustomerID"],
130 reference_table => "Customer",
131 reference_fields => ["CustomerID"],
134 type => "PRIMARY KEY",
135 fields => ["ContactDetailsID","CustomerID"],
140 table_ok( $scma->get_table("ContactDetails"), {
141 name => "ContactDetails",
145 data_type => "VARCHAR",
147 default_value => undef,
153 data_type => "VARCHAR",
155 default_value => undef,
160 name => "ContactDetailsID",
163 default_value => undef,
166 is_auto_increment => 1,
171 type => "PRIMARY KEY",
172 fields => ["ContactDetailsID"],
177 table_ok( $scma->get_table("Order"), {
181 name => "invoiceNumber",
184 default_value => undef,
187 is_auto_increment => 1,
192 default_value => undef,
197 name => "CustomerID",
200 default_value => undef,
208 type => "PRIMARY KEY",
209 fields => ["invoiceNumber"],
212 type => "FOREIGN KEY",
213 fields => ["CustomerID"],
214 reference_table => "Customer",
215 reference_fields => ["CustomerID"],
221 # name => "idxOrderDate",
223 # fields => ["orderDate"],
229 table_ok( $scma->get_table("OrderLine"), {
233 name => "lineNumber",
249 name => "OrderLineID",
252 default_value => undef,
255 is_auto_increment => 1,
258 name => "invoiceNumber",
261 default_value => undef,
268 type => "PRIMARY KEY",
269 fields => ["OrderLineID","invoiceNumber"],
272 type => "FOREIGN KEY",
273 fields => ["invoiceNumber"],
274 reference_table => "Order",
275 reference_fields => ["invoiceNumber"],