4 # Before `make install' is performed this script should be runnable with
5 # `make test'. After `make install' it should work as `perl test.pl'
7 # SQL::Translator::Filter::HelloWorld - Test filter in a package
8 #=============================================================================
9 package SQL::Translator::Filter::HelloWorld;
12 use vars qw/$VERSION/;
16 my ($schema,$args) = (shift,shift);
18 my $greeting = $args->{greeting} || "Hello";
24 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
25 $INC{'SQL/Translator/Filter/HelloWorld.pm'}
26 = 'lib/SQL/Translator/Filter/HelloWorld.pm';
28 #=============================================================================
35 use Test::SQL::Translator qw(maybe_plan);
40 maybe_plan(14, 'Template', 'Test::Differences')
42 use Test::Differences;
45 my $in_yaml = qq{--- #YAML:1.0
56 my $sqlt_version = $SQL::Translator::VERSION;
95 parser_type: SQL::Translator::Parser::YAML
97 producer_type: SQL::Translator::Producer::YAML
100 version: $sqlt_version
103 # Parse the test XML schema
105 $obj = SQL::Translator->new(
112 # Check they get called ok
114 pass("Filter 1 called");
115 isa_ok($_[0],"SQL::Translator::Schema", "Filter 1, arg0 ");
116 ok( ref($_[1]) eq "HASH", "Filter 1, arg1 is a hashref ");
119 pass("Filter 2 called");
120 isa_ok($_[0],"SQL::Translator::Schema", "Filter 2, arg0 ");
121 ok( ref($_[1]) eq "HASH", "Filter 2, arg1 is a hashref ");
124 # Sub filter with args
126 pass("Filter 3 called");
127 isa_ok($_[0],"SQL::Translator::Schema", "Filter 3, arg0 ");
128 ok( ref($_[1]) eq "HASH", "Filter 3, arg1 is a hashref ");
129 is( $_[1]->{hello}, "world", "Filter 3, got args ");
131 { hello=>"world" } ],
133 # Uppercase all the table names.
136 foreach ($schema->get_tables) {
137 $_->name(uc $_->name);
141 # lowercase all the field names.
144 foreach ( map { $_->get_fields } $schema->get_tables ) {
145 $_->name(lc $_->name);
149 # Filter from SQL::Translator::Filter::*
153 ) or die "Failed to create translator object: ".SQL::Translator->error;
156 lives_ok { $out = $obj->translate; } "Translate ran";
157 is $obj->error, '' ,"No errors";
158 ok $out ne "" ,"Produced something!";
159 eq_or_diff $out, $ans_yaml ,"Output looks right";