X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F18ttschema-producer.t;h=3118da8156b939cdaacbb871004d0a78f0cc8c03;hb=HEAD;hp=92842238dde5abe80fa5b4ce0a8196488970bffc;hpb=d2f0a9f6eb0de6fbed1e4c19ab70e00ebe8b3abf;p=dbsrgits%2FSQL-Translator.git diff --git a/t/18ttschema-producer.t b/t/18ttschema-producer.t index 9284223..3118da8 100644 --- a/t/18ttschema-producer.t +++ b/t/18ttschema-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 @@ -10,190 +10,78 @@ use Test::Exception; use Test::SQL::Translator qw(maybe_plan); use Data::Dumper; -use vars '%opt'; -BEGIN { map { $opt{$_}=1 if s/^-// } @ARGV; } -use constant DEBUG => (exists $opt{d} ? 1 : 0); - use FindBin qw/$Bin/; # Testing 1,2,3,4... #============================================================================= BEGIN { - maybe_plan(3, - 'XML::XPath', - 'SQL::Translator::Parser::XML::SQLFairy' - 'Template', + maybe_plan(6, + 'SQL::Translator::Parser::XML::SQLFairy', + 'Template 2.20', 'Test::Differences' - ) + ); } use Test::Differences; use SQL::Translator; use SQL::Translator::Producer::TTSchema; -# Parse the test XML schema -my $obj; -$obj = SQL::Translator->new( - debug => DEBUG, #$opt{d}, - show_warnings => 1, - add_drop_table => 1, - from => "XML-SQLFairy", - filename => "$Bin/data/xml/schema.xml", - to => "TTSchema", - producer_args => { - ttfile => "$Bin/data/template/basic.tt", - }, -); -my $out; -lives_ok { $out = $obj->translate; } "Translate ran"; -ok $out ne "" ,"Produced something!"; -local $/ = undef; # slurp -eq_or_diff $out, ,"Output looks right"; - -print $out if DEBUG; -#print "Debug:", Dumper($obj) if DEBUG; - -__DATA__ -Schema: -Database: - -Table: Basic -========================================================================== - -Fields - id - data_type: int - size: 10 - is_nullable: 0 - default_value: - is_primary_key: 1 - is_unique: 0 - is_auto_increment: 1 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 1 - table: Basic - - title - data_type: varchar - size: 100 - is_nullable: 0 - default_value: hello - is_primary_key: 0 - is_unique: 0 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 2 - table: Basic - - description - data_type: text - size: 0 - is_nullable: 1 - default_value: - is_primary_key: 0 - is_unique: 0 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 3 - table: Basic - - email - data_type: varchar - size: 255 - is_nullable: 1 - default_value: - is_primary_key: 0 - is_unique: 1 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 4 - table: Basic - - explicitnulldef - data_type: varchar - size: 0 - is_nullable: 1 - default_value: - is_primary_key: 0 - is_unique: 0 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 5 - table: Basic - - explicitemptystring - data_type: varchar - size: 0 - is_nullable: 1 - default_value: - is_primary_key: 0 - is_unique: 0 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 6 - table: Basic - - emptytagdef - data_type: varchar - size: 0 - is_nullable: 1 - default_value: - is_primary_key: 0 - is_unique: 0 - is_auto_increment: 0 - is_foreign_key: 0 - foreign_key_reference: - is_valid: 1 - order: 7 - table: Basic - +# Main test. Template whole schema and test tt_vars +{ + my $obj; + $obj = SQL::Translator->new( + show_warnings => 0, + from => "XML-SQLFairy", + filename => "$Bin/data/xml/schema.xml", + to => "TTSchema", + producer_args => { + ttfile => "$Bin/data/template/basic.tt", + tt_vars => { + foo => 'bar', + hello => 'world', + }, + }, + ); + my $out; + lives_ok { $out = $obj->translate; } "Translate ran"; + ok $out ne "" ,"Produced something!"; + eq_or_diff + $out, + do { local (@ARGV, $/) = "$Bin/data/template/testresult_basic.txt"; <> }, + "Output looks right" + ; +} -Indices - titleindex - table: Basic - fields: title - type: NORMAL - options: - is_valid: 1 - - -Constraints - ? - type: PRIMARY KEY - fields: id - expression: - match_type: - reference_fields: - reference_table: - deferrable: 1 - on_delete: - on_update: - options: - is_valid: 1 - - emailuniqueindex - type: UNIQUE - fields: email - expression: - match_type: - reference_fields: - reference_table: - deferrable: 1 - on_delete: - on_update: - options: - is_valid: 1 - +# Test passing of Template config +{ + my $tmpl = q{ + [%- FOREACH table = schema.get_tables %] + Table: $table + [%- END %]}; + my $obj; + $obj = SQL::Translator->new( + show_warnings => 0, + from => "XML-SQLFairy", + filename => "$Bin/data/xml/schema.xml", + to => "TTSchema", + producer_args => { + ttfile => \$tmpl, + tt_conf => { + INTERPOLATE => 1, + }, + tt_vars => { + foo => 'bar', + hello => 'world', + }, + }, + ); + my $out; + lives_ok { $out = $obj->translate; } "Translate ran"; + ok $out ne "" ,"Produced something!"; + local $/ = undef; # slurp + eq_or_diff $out, q{ + Table: Basic + Table: Another} + ,"Output looks right"; +}