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;
106 parser_type: SQL::Translator::Parser::YAML
108 producer_type: SQL::Translator::Producer::YAML
111 version: $sqlt_version
114 # Parse the test XML schema
116 $obj = SQL::Translator->new(
123 # Check they get called ok
125 pass("Filter 1 called");
126 isa_ok($_[0],"SQL::Translator::Schema", "Filter 1, arg0 ");
127 is( $#_, 0, "Filter 1, got no args");
130 pass("Filter 2 called");
131 isa_ok($_[0],"SQL::Translator::Schema", "Filter 2, arg0 ");
132 is( $#_, 0, "Filter 2, got no args");
135 # Sub filter with args
137 pass("Filter 3 called");
138 isa_ok($_[0],"SQL::Translator::Schema", "Filter 3, arg0 ");
139 is( $#_, 2, "Filter 3, go 2 args");
140 is( $_[1], "hello", "Filter 3, arg1=hello");
141 is( $_[2], "world", "Filter 3, arg2=world");
145 # Uppercase all the table names.
148 foreach ($schema->get_tables) {
149 $_->name(uc $_->name);
153 # lowercase all the field names.
156 foreach ( map { $_->get_fields } $schema->get_tables ) {
157 $_->name(lc $_->name);
161 # Filter from SQL::Translator::Filter::*
164 [ 'HelloWorld', greeting => 'Gday' ],
167 ) or die "Failed to create translator object: ".SQL::Translator->error;
170 lives_ok { $out = $obj->translate; } "Translate ran";
171 is $obj->error, '' ,"No errors";
172 ok $out ne "" ,"Produced something!";
173 eq_or_diff $out, $ans_yaml ,"Output looks right";