X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F17sqlfxml-producer.t;h=cded24b4121a410f2dcc499ad3ae3fff6232edf2;hb=33d693c35afb6bc4489713991672073c5674f626;hp=3f397272c76fe953a6ace48c61119d9323e9f2c8;hpb=e0a0c3e1a2698217f21e0e5b6739d56ada6833ba;p=dbsrgits%2FSQL-Translator.git diff --git a/t/17sqlfxml-producer.t b/t/17sqlfxml-producer.t index 3f39727..cded24b 100644 --- a/t/17sqlfxml-producer.t +++ b/t/17sqlfxml-producer.t @@ -23,14 +23,14 @@ my $file = "$Bin/data/mysql/sqlfxml-producer-basic.sql"; local $SIG{__WARN__} = sub { CORE::warn(@_) - unless $_[0] =~ m#XML/Writer#; + unless $_[0] =~ m!XML/Writer!; }; # Testing 1,2,3,4... #============================================================================= BEGIN { - maybe_plan(15, + maybe_plan(14, 'XML::Writer', 'Test::Differences', 'SQL::Translator::Producer::XML::SQLFairy'); @@ -40,6 +40,17 @@ use Test::Differences; use SQL::Translator; use SQL::Translator::Producer::XML::SQLFairy; +# Due to formatters being able to change style, e.g. by entries in .rc files +# in $HOME, the layout and or indent might differ slightly. As leading white +# is not important in XML, strip it when comparing +sub xml_equals +{ + my ($got, $expect, $msg) = (@_, "XML looks right"); + $got =~ s/^ +//gm; + $expect =~ s/^ +//gm; + eq_or_diff $got, $expect, $msg; +} + # # basic stuff # @@ -48,33 +59,47 @@ my ($obj,$ans,$xml); $ans = < - - - - - comment on id field - - - - - - - - - - - - - - - - - - - - - -
+ + + + + + + + comment on id field + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + EOXML @@ -86,12 +111,12 @@ $obj = SQL::Translator->new( from => "MySQL", to => "XML-SQLFairy", ); -lives_ok {$xml = $obj->translate($file);} "Translate (attrib_values=>1) ran"; +$xml = $obj->translate($file) or die $obj->error; 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"; +xml_equals $xml, $ans; } # end basic stuff @@ -104,9 +129,16 @@ my ($obj,$ans,$xml); $ans = < - - select name, age from person - + + + + + select name, age from person + + + + + EOXML @@ -126,6 +158,7 @@ EOXML name => $name, sql => $sql, fields => $fields, + extra => { hello => "world" }, schema => $s, ) or die $s->error; @@ -135,8 +168,8 @@ EOXML ok("$xml" ne "" ,"Produced something!"); print "XML attrib_values=>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"; + $xml =~ s/^([^\n]*\n){7}//m; + xml_equals $xml, $ans; } # end View # @@ -148,9 +181,24 @@ my ($obj,$ans,$xml); $ans = < - - update modified=timestamp(); - + + + + + + + + +
+
+ + + + update modified=timestamp(); + + + + EOXML @@ -166,14 +214,15 @@ EOXML my $name = 'foo_trigger'; my $perform_action_when = 'after'; my $database_event = 'insert'; - my $on_table = 'foo'; my $action = 'update modified=timestamp();'; + my $table = $s->add_table( name => "Basic" ) or die $s->error; my $t = $s->add_trigger( name => $name, perform_action_when => $perform_action_when, - database_event => $database_event, - on_table => $on_table, + database_events => [$database_event], + table => $table, action => $action, + extra => { hello => "world" }, ) or die $s->error; # As we have created a Schema we give translate a dummy string so that @@ -182,8 +231,8 @@ EOXML ok("$xml" ne "" ,"Produced something!"); print "XML attrib_values=>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"; + $xml =~ s/^([^\n]*\n){7}//m; + xml_equals $xml, $ans; } # end Trigger # @@ -195,10 +244,17 @@ my ($obj,$ans,$xml); $ans = < - - select foo from bar - Go Sox! - + + + + + + + select foo from bar + Go Sox! + + + EOXML @@ -222,6 +278,7 @@ EOXML parameters => $parameters, owner => $owner, comments => $comments, + extra => { hello => "world" }, ) or die $s->error; # As we have created a Schema we give translate a dummy string so that @@ -230,8 +287,8 @@ EOXML ok("$xml" ne "" ,"Produced something!"); print "XML attrib_values=>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"; + $xml =~ s/^([^\n]*\n){7}//m; + xml_equals $xml, $ans; } # end Procedure # @@ -242,16 +299,32 @@ my ($obj,$ans,$xml); $ans = < - - - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + + EOXML @@ -272,6 +345,18 @@ EOXML ) or die $t->error; $f->extra(ZEROFILL => "1"); + $t->add_field( + name => "bar", + data_type => "numeric", + size => "10,2", + ) or die $t->error; + $t->add_field( + name => "baz", + data_type => "decimal", + size => [8,3], + ) or die $t->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 (Field.extra) ran"; @@ -279,5 +364,5 @@ EOXML 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_equals $xml, $ans; } # end extra