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 # hide from cpan
17 SQL::Translator::Filter::HelloWorld;
22 my ($schema,%args) = (shift,@_);
24 my $greeting = $args{greeting} || "Hello";
25 my $newtable = "${greeting}World";
26 $schema->add_table( name => $newtable );
29 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
30 $INC{'SQL/Translator/Filter/HelloWorld.pm'}
31 = 'lib/SQL/Translator/Filter/HelloWorld.pm';
33 #=============================================================================
40 use Test::SQL::Translator qw(maybe_plan);
45 maybe_plan(16, 'Template', 'Test::Differences')
47 use Test::Differences;
50 my $in_yaml = qq{--- #YAML:1.0
61 my $sqlt_version = $SQL::Translator::VERSION;
104 parser_type: SQL::Translator::Parser::YAML
106 producer_type: SQL::Translator::Producer::YAML
109 version: $sqlt_version
112 # Parse the test XML schema
114 $obj = SQL::Translator->new(
121 # Check they get called ok
123 pass("Filter 1 called");
124 isa_ok($_[0],"SQL::Translator::Schema", "Filter 1, arg0 ");
125 is( $#_, 0, "Filter 1, got no args");
128 pass("Filter 2 called");
129 isa_ok($_[0],"SQL::Translator::Schema", "Filter 2, arg0 ");
130 is( $#_, 0, "Filter 2, got no args");
133 # Sub filter with args
135 pass("Filter 3 called");
136 isa_ok($_[0],"SQL::Translator::Schema", "Filter 3, arg0 ");
137 is( $#_, 2, "Filter 3, go 2 args");
138 is( $_[1], "hello", "Filter 3, arg1=hello");
139 is( $_[2], "world", "Filter 3, arg2=world");
143 # Uppercase all the table names.
146 foreach ($schema->get_tables) {
147 $_->name(uc $_->name);
151 # lowercase all the field names.
154 foreach ( map { $_->get_fields } $schema->get_tables ) {
155 $_->name(lc $_->name);
159 # Filter from SQL::Translator::Filter::*
162 [ 'HelloWorld', greeting => 'Gday' ],
165 ) or die "Failed to create translator object: ".SQL::Translator->error;
168 lives_ok { $out = $obj->translate; } "Translate ran";
169 is $obj->error, '' ,"No errors";
170 ok $out ne "" ,"Produced something!";
171 eq_or_diff $out, $ans_yaml ,"Output looks right";