# Testing 1,2,3,4...
#=============================================================================
-
-BEGIN {
- maybe_plan(284, 'SQL::Translator::Parser::XML::SQLFairy');
-}
-foreach (
- "$Bin/data/xml/schema-basic.xml",
- "$Bin/data/xml/schema-basic-attribs.xml"
-) {
- do_file($_);
+BEGIN {
+ maybe_plan(150, 'SQL::Translator::Parser::XML::SQLFairy');
}
-sub do_file {
- my $testschema = shift;
- # Parse the test XML schema
- my $obj;
- $obj = SQL::Translator->new(
- debug => DEBUG,
- show_warnings => 1,
- add_drop_table => 1,
- );
- die "Can't find test schema $testschema" unless -e $testschema;
- my $sql = $obj->translate(
- from => 'XML-SQLFairy',
- to => 'MySQL',
- filename => $testschema,
- );
- print $sql if DEBUG;
-
- # Test the schema objs generted from the XML
- #
- my $scma = $obj->schema;
-
- # Hmmm, when using schema_ok the field test data gets a bit too nested and
- # fiddly to work with. (See 28xml-xmi-parser-sqlfairy.t for more split out
- # version)
- schema_ok( $scma, {
- tables => [
- {
- name => "Basic",
- fields => [
- {
- name => "id",
- data_type => "int",
- default_value => undef,
- is_nullable => 0,
- size => 10,
- is_primary_key => 1,
- is_auto_increment => 1,
- },
- {
- name => "title",
- data_type => "varchar",
- is_nullable => 0,
- default_value => "hello",
- size => 100,
- },
- {
- name => "description",
- data_type => "text",
- is_nullable => 1,
- default_value => "",
- },
- {
- name => "email",
- data_type => "varchar",
- size => 255,
- is_unique => 1,
- default_value => undef,
- is_nullable => 1,
- },
- {
- name => "explicitnulldef",
- data_type => "varchar",
- default_value => undef,
- is_nullable => 1,
- },
- {
- name => "explicitemptystring",
- data_type => "varchar",
- default_value => "",
- is_nullable => 1,
- },
- {
- name => "emptytagdef",
- data_type => "varchar",
- default_value => "",
- is_nullable => 1,
- },
- ],
- constraints => [
- {
- type => PRIMARY_KEY,
- fields => ["id"],
- },
- {
- name => 'emailuniqueindex',
- type => UNIQUE,
- fields => ["email"],
+my $testschema = "$Bin/data/xml/schema.xml";
+
+my $sqlt;
+$sqlt = SQL::Translator->new(
+ debug => DEBUG,
+ show_warnings => 1,
+ add_drop_table => 1,
+);
+die "Can't find test schema $testschema" unless -e $testschema;
+my $sql = $sqlt->translate(
+ from => 'XML-SQLFairy',
+ to => 'MySQL',
+ filename => $testschema,
+) or die $sqlt->error;
+print $sql if DEBUG;
+
+# Test the schema objs generted from the XML
+#
+my $scma = $sqlt->schema;
+
+# Hmmm, when using schema_ok the field test data gets a bit too nested and
+# fiddly to work with. (See 28xml-xmi-parser-sqlfairy.t for more a split out
+# version)
+schema_ok( $scma, {
+ tables => [
+ {
+ name => "Basic",
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
+ mysql_table_type => "InnoDB",
+ },
+ fields => [
+ {
+ name => "id",
+ data_type => "int",
+ default_value => undef,
+ is_nullable => 0,
+ size => 10,
+ is_primary_key => 1,
+ is_auto_increment => 1,
+ extra => { ZEROFILL => 1 },
+ },
+ {
+ name => "title",
+ data_type => "varchar",
+ is_nullable => 0,
+ default_value => "hello",
+ size => 100,
+ },
+ {
+ name => "description",
+ data_type => "text",
+ is_nullable => 1,
+ default_value => "",
+ },
+ {
+ name => "email",
+ data_type => "varchar",
+ size => 255,
+ is_unique => 1,
+ default_value => undef,
+ is_nullable => 1,
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
}
- ],
- indices => [
- {
- name => "titleindex",
- fields => ["title"],
+ },
+ {
+ name => "explicitnulldef",
+ data_type => "varchar",
+ default_value => undef,
+ is_nullable => 1,
+ },
+ {
+ name => "explicitemptystring",
+ data_type => "varchar",
+ default_value => "",
+ is_nullable => 1,
+ },
+ {
+ name => "emptytagdef",
+ data_type => "varchar",
+ default_value => "",
+ is_nullable => 1,
+ comments => "Hello emptytagdef",
+ },
+ ],
+ constraints => [
+ {
+ type => PRIMARY_KEY,
+ fields => ["id"],
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
+ },
+ },
+ {
+ name => 'emailuniqueindex',
+ type => UNIQUE,
+ fields => ["email"],
+ }
+ ],
+ indices => [
+ {
+ name => "titleindex",
+ fields => ["title"],
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
},
- ],
- } # end table Basic
- ], # end tables
-
- views => [
- {
- name => 'email_list',
- sql => "SELECT email FROM Basic WHERE email IS NOT NULL",
- fields => ['email'],
+ },
+ ],
+ } # end table Basic
+ ], # end tables
+
+ views => [
+ {
+ name => 'email_list',
+ sql => "SELECT email FROM Basic WHERE email IS NOT NULL",
+ fields => ['email'],
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
},
- ],
-
- triggers => [
- {
- name => 'foo_trigger',
- perform_action_when => 'after',
- database_event => 'insert',
- on_table => 'foo',
- action => 'update modified=timestamp();',
+ },
+ ],
+
+ triggers => [
+ {
+ name => 'foo_trigger',
+ perform_action_when => 'after',
+ database_event => 'insert',
+ on_table => 'foo',
+ action => 'update modified=timestamp();',
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
},
- ],
-
- procedures => [
- {
- name => 'foo_proc',
- sql => 'select foo from bar',
- parameters => ['foo', 'bar'],
- owner => 'Nomar',
- comments => 'Go Sox!',
+ },
+ ],
+
+ procedures => [
+ {
+ name => 'foo_proc',
+ sql => 'select foo from bar',
+ parameters => ['foo', 'bar'],
+ owner => 'Nomar',
+ comments => 'Go Sox!',
+ extra => {
+ foo => "bar",
+ hello => "world",
+ bar => "baz",
},
- ],
-
- }); # end schema
+ },
+ ],
-} # end do_file()
+}); # end schema