4 #=============================================================================
5 # Test Package based filters that oks when called.
6 package SQL::Translator::Filter::Ok;
9 sub filter { Test::More::pass(@_) }
11 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
12 $INC{'SQL/Translator/Filter/Ok.pm'} = 'lib/SQL/Translator/Filter/Ok.pm';
14 #=============================================================================
15 # SQL::Translator::Filter::HelloWorld - Test filter in a package
16 package SQL::Translator::Filter::HelloWorld;
19 use vars qw/$VERSION/;
23 my ($schema,%args) = (shift,@_);
25 my $greeting = $args{greeting} || "Hello";
26 my $newtable = "${greeting}World";
27 $schema->add_table( name => $newtable );
30 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
31 $INC{'SQL/Translator/Filter/HelloWorld.pm'}
32 = 'lib/SQL/Translator/Filter/HelloWorld.pm';
34 #=============================================================================
41 use Test::SQL::Translator qw(maybe_plan);
46 maybe_plan(16, 'Template', 'Test::Differences')
48 use Test::Differences;
51 my $in_yaml = qq{--- #YAML:1.0
62 my $sqlt_version = $SQL::Translator::VERSION;
110 parser_type: SQL::Translator::Parser::YAML
112 producer_type: SQL::Translator::Producer::YAML
115 version: $sqlt_version
118 # Parse the test XML schema
120 $obj = SQL::Translator->new(
127 # Check they get called ok
129 pass("Filter 1 called");
130 isa_ok($_[0],"SQL::Translator::Schema", "Filter 1, arg0 ");
131 is( $#_, 0, "Filter 1, got no args");
134 pass("Filter 2 called");
135 isa_ok($_[0],"SQL::Translator::Schema", "Filter 2, arg0 ");
136 is( $#_, 0, "Filter 2, got no args");
139 # Sub filter with args
141 pass("Filter 3 called");
142 isa_ok($_[0],"SQL::Translator::Schema", "Filter 3, arg0 ");
143 is( $#_, 2, "Filter 3, go 2 args");
144 is( $_[1], "hello", "Filter 3, arg1=hello");
145 is( $_[2], "world", "Filter 3, arg2=world");
149 # Uppercase all the table names.
152 foreach ($schema->get_tables) {
153 $_->name(uc $_->name);
157 # lowercase all the field names.
160 foreach ( map { $_->get_fields } $schema->get_tables ) {
161 $_->name(lc $_->name);
165 # Filter from SQL::Translator::Filter::*
168 [ 'HelloWorld', greeting => 'Gday' ],
171 ) or die "Failed to create translator object: ".SQL::Translator->error;
174 lives_ok { $out = $obj->translate; } "Translate ran";
175 is $obj->error, '' ,"No errors";
176 ok $out ne "" ,"Produced something!";
177 eq_or_diff $out, $ans_yaml ,"Output looks right";