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 'SQL::Translator::Parser::XML::XMI::SQLFairy',
27 'SQL::Translator::Producer::MySQL');
30 my $testschema = "$Bin/data/xmi/OrderDB.sqlfairy.poseidon2.xmi";
31 die "Can't find test schema $testschema" unless -e $testschema;
34 $obj = SQL::Translator->new(
35 filename => $testschema,
36 from => 'XML-XMI-SQLFairy',
41 my $sql = $obj->translate;
42 ok( $sql, "Got some SQL");
44 print "Translator:",Dumper($obj) if DEBUG;
50 my $scma = $obj->schema;
51 is( $scma->is_valid, 1, 'Schema is valid' );
52 my @tblnames = map {$_->name} $scma->get_tables;
53 is(scalar(@{$scma->get_tables}), scalar(@tblnames), "Right number of tables");
54 is_deeply( \@tblnames,
55 [qw/Order OrderLine Customer ContactDetails ContactDetails_Customer/]
58 table_ok( $scma->get_table("Customer"), {
63 data_type => "VARCHAR",
65 default_value => undef,
71 data_type => "VARCHAR",
73 default_value => undef,
81 default_value => undef,
84 is_auto_increment => 1,
89 type => "PRIMARY KEY",
90 fields => ["CustomerID"],
93 # name => "UniqueEmail",
95 # fields => ["email"],
100 table_ok( $scma->get_table("ContactDetails_Customer"), {
101 name => "ContactDetails_Customer",
104 name => "ContactDetailsID",
107 default_value => undef,
110 is_auto_increment => 0,
114 name => "CustomerID",
117 default_value => undef,
120 is_auto_increment => 0,
126 type => "FOREIGN KEY",
127 fields => ["ContactDetailsID"],
128 reference_table => "ContactDetails",
129 reference_fields => ["ContactDetailsID"],
132 type => "FOREIGN KEY",
133 fields => ["CustomerID"],
134 reference_table => "Customer",
135 reference_fields => ["CustomerID"],
138 type => "PRIMARY KEY",
139 fields => ["ContactDetailsID","CustomerID"],
144 table_ok( $scma->get_table("ContactDetails"), {
145 name => "ContactDetails",
149 data_type => "VARCHAR",
151 default_value => undef,
157 data_type => "VARCHAR",
159 default_value => undef,
164 name => "ContactDetailsID",
167 default_value => undef,
170 is_auto_increment => 1,
175 type => "PRIMARY KEY",
176 fields => ["ContactDetailsID"],
181 table_ok( $scma->get_table("Order"), {
185 name => "invoiceNumber",
188 default_value => undef,
191 is_auto_increment => 1,
196 default_value => undef,
201 name => "CustomerID",
204 default_value => undef,
212 type => "PRIMARY KEY",
213 fields => ["invoiceNumber"],
216 type => "FOREIGN KEY",
217 fields => ["CustomerID"],
218 reference_table => "Customer",
219 reference_fields => ["CustomerID"],
225 # name => "idxOrderDate",
227 # fields => ["orderDate"],
233 table_ok( $scma->get_table("OrderLine"), {
237 name => "lineNumber",
253 name => "OrderLineID",
256 default_value => undef,
259 is_auto_increment => 1,
262 name => "invoiceNumber",
265 default_value => undef,
272 type => "PRIMARY KEY",
273 fields => ["OrderLineID","invoiceNumber"],
276 type => "FOREIGN KEY",
277 fields => ["invoiceNumber"],
278 reference_table => "Order",
279 reference_fields => ["invoiceNumber"],