-#!/usr/bin/perl -w
+#!/usr/bin/perl -w
# vim:filetype=perl
# Before `make install' is performed this script should be runnable with
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, 'Template', 'Test::Differences')
+ 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, <DATA> ,"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
- extra:
- 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
- extra:
- 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
- extra:
- 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
- extra:
- 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
- extra:
- 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
- extra:
- 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
- extra:
- 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";
+}