From: Mark Addison Date: Thu, 8 Jul 2004 19:07:30 +0000 (+0000) Subject: Updated to test the new, single format sqlf xml. X-Git-Tag: v0.06~46 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ec791002ba1fed6772d86a89de64ff65c1be3545;p=dbsrgits%2FSQL-Translator.git Updated to test the new, single format sqlf xml. --- diff --git a/t/16xml-parser.t b/t/16xml-parser.t index a407d2c..bc2b7a5 100644 --- a/t/16xml-parser.t +++ b/t/16xml-parser.t @@ -25,144 +25,134 @@ use constant DEBUG => (exists $opt{d} ? 1 : 0); # 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(142, '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"], - } - ], - indices => [ - { - name => "titleindex", - fields => ["title"], - }, - ], - } # end table Basic - ], # end tables - - views => [ - { - name => 'email_list', - sql => "SELECT email FROM Basic WHERE email IS NOT NULL", - fields => ['email'], - }, - ], - - triggers => [ - { - name => 'foo_trigger', - perform_action_when => 'after', - database_event => 'insert', - on_table => 'foo', - action => 'update modified=timestamp();', - }, - ], - - procedures => [ - { - name => 'foo_proc', - sql => 'select foo from bar', - parameters => ['foo', 'bar'], - owner => 'Nomar', - comments => 'Go Sox!', - }, - ], - - }); # end schema - -} # end do_file() +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", + 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"], + } + ], + indices => [ + { + name => "titleindex", + fields => ["title"], + }, + ], + } # end table Basic + ], # end tables + + views => [ + { + name => 'email_list', + sql => "SELECT email FROM Basic WHERE email IS NOT NULL", + fields => ['email'], + }, + ], + + triggers => [ + { + name => 'foo_trigger', + perform_action_when => 'after', + database_event => 'insert', + on_table => 'foo', + action => 'update modified=timestamp();', + }, + ], + + procedures => [ + { + name => 'foo_proc', + sql => 'select foo from bar', + parameters => ['foo', 'bar'], + owner => 'Nomar', + comments => 'Go Sox!', + }, + ], + +}); # end schema diff --git a/t/17sqlfxml-producer.t b/t/17sqlfxml-producer.t index 54ccf8a..0f032e7 100644 --- a/t/17sqlfxml-producer.t +++ b/t/17sqlfxml-producer.t @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -w # vim:filetype=perl # Before `make install' is performed this script should be runnable with @@ -30,7 +30,7 @@ local $SIG{__WARN__} = sub { #============================================================================= BEGIN { - maybe_plan(18, + maybe_plan(12, 'XML::Writer', 'Test::Differences', 'SQL::Translator::Producer::XML::SQLFairy'); @@ -41,268 +41,37 @@ use SQL::Translator; use SQL::Translator::Producer::XML::SQLFairy; # -# emit_empty_tags => 0 +# basic stuff # { my ($obj,$ans,$xml); $ans = < - - - - Basic - 1 - - - id - integer - 10 - 0 - 1 - 1 - 0 - comment on id field - 1 - - - title - varchar - 100 - 0 - hello - 0 - 0 - 0 - - 2 - - - description - text - 65535 - 1 - - 0 - 0 - 0 - - 3 - - - email - varchar - 255 - 1 - 0 - 0 - 0 - - 4 - - - - - titleindex - NORMAL - title - - - - - - - PRIMARY KEY - id - - - - - - - - 1 - - - - UNIQUE - email - - - - - - - - 1 - - - - -EOXML - -$obj = SQL::Translator->new( - debug => DEBUG, - trace => TRACE, - show_warnings => 1, - add_drop_table => 1, - from => 'MySQL', - to => 'XML-SQLFairy', -); -lives_ok {$xml = $obj->translate($file);} "Translate (emit_empty_tags=>0) ran"; -ok("$xml" ne "" ,"Produced something!"); -print "XML:\n$xml" if DEBUG; -# Strip sqlf header with its variable date so we diff safely -$xml =~ s/^([^\n]*\n){7}//m; -eq_or_diff $xml, $ans ,"XML looks right"; - -} # end emit_empty_tags=>0 - -# -# emit_empty_tags => 1 -# -{ -my ($obj,$ans,$xml); - -$ans = < - - - - Basic - 2 - - - id - integer - 10 - 0 - - 1 - 1 - 0 - comment on id field - 5 - - - title - varchar - 100 - 0 - hello - 0 - 0 - 0 - - 6 - - - description - text - 65535 - 1 - - 0 - 0 - 0 - - 7 - - - email - varchar - 255 - 1 - - 0 - 0 - 0 - - 8 - - - - - titleindex - NORMAL - title - - - - - - - PRIMARY KEY - id - - - - - - - - 1 - - - - UNIQUE - email - - - - - - - - 1 - - - - -EOXML - -$obj = SQL::Translator->new( - debug => DEBUG, - trace => TRACE, - show_warnings => 1, - add_drop_table => 1, - from => 'MySQL', - to => 'XML-SQLFairy', - producer_args => { emit_empty_tags => 1 }, -); -lives_ok { $xml=$obj->translate($file); } "Translate (emit_empty_tags=>1) ran"; -ok("$xml" ne "" ,"Produced something!"); -print "XML emit_empty_tags=>1:\n$xml" if DEBUG; -# Strip sqlf header with its variable date so we diff safely -$xml =~ s/^([^\n]*\n){7}//m; -eq_or_diff $xml, $ans ,"XML looks right"; - -} # end emit_empty_tags => 1 - -# -# attrib_values => 1 -# -{ -my ($obj,$ans,$xml); - -$ans = < - - - - - - - - - - - - - - - - + + + + + comment on id field + + + + + + + + + + + + + + + + + + + + EOXML $obj = SQL::Translator->new( @@ -312,16 +81,15 @@ $obj = SQL::Translator->new( add_drop_table => 1, from => "MySQL", to => "XML-SQLFairy", - producer_args => { attrib_values => 1 }, ); lives_ok {$xml = $obj->translate($file);} "Translate (attrib_values=>1) ran"; ok("$xml" ne "" ,"Produced something!"); -print "XML attrib_values=>1:\n$xml" if DEBUG; +print "XML:\n$xml" if DEBUG; # Strip sqlf header with its variable date so we diff safely -$xml =~ s/^([^\n]*\n){7}//m; -eq_or_diff $xml, $ans ,"XML looks right"; +$xml =~ s/^([^\n]*\n){7}//m; +eq_or_diff $xml, $ans, "XML looks right"; -} # end attrib_values => 1 +} # end basic stuff # # View @@ -331,16 +99,11 @@ eq_or_diff $xml, $ans ,"XML looks right"; my ($obj,$ans,$xml); $ans = < - - - - foo_view - select name, age from person - name,age - 1 - - + + + select name, age from person + + EOXML $obj = SQL::Translator->new( @@ -361,7 +124,7 @@ EOXML fields => $fields, schema => $s, ) or die $s->error; - + # As we have created a Schema we give translate a dummy string so that # it will run the produce. lives_ok {$xml =$obj->translate("FOO");} "Translate (View) ran"; @@ -380,18 +143,11 @@ EOXML my ($obj,$ans,$xml); $ans = < - - - - foo_trigger - insert - update modified=timestamp(); - foo - after - 1 - - + + + update modified=timestamp(); + + EOXML $obj = SQL::Translator->new( @@ -415,7 +171,7 @@ EOXML on_table => $on_table, action => $action, ) or die $s->error; - + # As we have created a Schema we give translate a dummy string so that # it will run the produce. lives_ok {$xml =$obj->translate("FOO");} "Translate (Trigger) ran"; @@ -434,18 +190,12 @@ EOXML my ($obj,$ans,$xml); $ans = < - - - - foo_proc - select foo from bar - foo,bar - Nomar - Go Sox! - 1 - - + + + select foo from bar + Go Sox! + + EOXML $obj = SQL::Translator->new( diff --git a/t/data/xml/schema-basic-attribs.xml b/t/data/xml/schema-basic-attribs.xml deleted file mode 100644 index a18b8e6..0000000 --- a/t/data/xml/schema-basic-attribs.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/t/data/xml/schema-basic.xml b/t/data/xml/schema-basic.xml deleted file mode 100644 index 8db834d..0000000 --- a/t/data/xml/schema-basic.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - Basic - 1 - - - id - 1 - 1 - int - 0 - 10 - 1 - - - title - varchar - 100 - hello - 0 - 2 - - - description - text - - 3 - - - email - varchar - 1 - 255 - 4 - - - explicitnulldef - varchar - 1 - NULL - 5 - - - explicitemptystring - varchar - 1 - EMPTY_STRING - 6 - - - emptytagdef - varchar - 1 - - 7 - - - - - - title - titleindex - NORMAL - - - - - - 1 - email - emailuniqueindex - UNIQUE - - - - - - email - email_list - 1 - SELECT email FROM Basic WHERE email IS NOT NULL - - - - update modified=timestamp(); - insert - foo_trigger - foo - 1 - after - - - - Go Sox! - foo_proc - 1 - Nomar - foo,bar - select foo from bar - - - diff --git a/t/data/xml/schema.xml b/t/data/xml/schema.xml new file mode 100644 index 0000000..d702eca --- /dev/null +++ b/t/data/xml/schema.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + Hello World + + + + + + + + + + + + SELECT email FROM Basic WHERE email IS NOT NULL + + + update modified=timestamp(); + + + select foo from bar + Go Sox! + +