Applied patch sent in by Daniel Westermann-Clark on Oct 11 2006.
[dbsrgits/SQL-Translator.git] / t / 18ttschema-producer.t
index 91d5bd9..a9b6510 100644 (file)
@@ -10,49 +10,90 @@ 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, 'Template', 'Test::Differences')
+    maybe_plan(6, 
+        'XML::XPath', 
+        'SQL::Translator::Parser::XML::SQLFairy',
+        'Template', 
+        '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;
+# Main test. Template whole schema and test tt_vars
+{
+    my $obj;
+    $obj = SQL::Translator->new(
+        show_warnings  => 1,
+        from           => "XML-SQLFairy",
+        filename       => "$Bin/data/xml/schema.xml",
+        to             => "TTSchema",
+        producer_args  => {
+            ttfile  => "$Bin/data/template/basic.tt",
+#            ttfile  => "$Bin/data/template/test.tt",
+            tt_vars => {
+                foo   => 'bar',
+                hello => 'world',
+            },
+        },
+    );
+    my $out;
+    lives_ok { $out = $obj->translate; }  "Translate ran";
+#    print STDERR "Output: $out\n";
+    ok $out ne ""                        ,"Produced something!";
+    local $/ = undef; # slurp
+    eq_or_diff $out, <DATA>              ,"Output looks right";
+}
+
+# Test passing of Template config
+{
+    my $tmpl = q{
+    [%- FOREACH table = schema.get_tables %]
+    Table: $table
+    [%- END %]};
+    my $obj;
+    $obj = SQL::Translator->new(
+        show_warnings  => 1,
+        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";
+}
+
 
 __DATA__
 Schema: 
 Database: 
 
+Foo: bar
+Hello: world
+
 Table: Basic
 ==========================================================================
 
@@ -155,6 +196,34 @@ Fields
         order:                 7
         table:                 Basic
     
+    another_id
+        data_type:             int
+        size:                  10
+        is_nullable:           1
+        default_value:         2
+        is_primary_key:        0
+        is_unique:             0
+        is_auto_increment:     0
+        is_foreign_key:        1
+        foreign_key_reference: Another
+        is_valid:              1
+        order:                 8
+        table:                 Basic
+    
+    timest
+        data_type:             timestamp
+        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:                 9
+        table:                 Basic
+    
 
 Indices
     titleindex
@@ -192,3 +261,51 @@ Constraints
         options:          
         is_valid:         1
     
+    ?
+        type:             FOREIGN KEY
+        fields:           another_id
+        expression:       
+        match_type:       
+        reference_fields: id
+        reference_table:  Another
+        deferrable:       1
+        on_delete:        
+        on_update:        
+        options:          
+        is_valid:         1
+    
+Table: Another
+==========================================================================
+
+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:                 10
+        table:                 Another
+    
+
+Indices
+    
+Constraints
+    ?
+        type:             PRIMARY KEY
+        fields:           id
+        expression:       
+        match_type:       
+        reference_fields: 
+        reference_table:  
+        deferrable:       1
+        on_delete:        
+        on_update:        
+        options:          
+        is_valid:         1
+