4 #=============================================================================
5 # Test Package based filters that oks when called.
6 package SQL::Translator::Filter::Ok;
9 sub filter { Test::More::pass(
10 'Filter called with args: ' . join ', ', @_
13 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
14 $INC{'SQL/Translator/Filter/Ok.pm'} = 'lib/SQL/Translator/Filter/Ok.pm';
16 #=============================================================================
17 # SQL::Translator::Filter::HelloWorld - Test filter in a package
18 package # hide from cpan
19 SQL::Translator::Filter::HelloWorld;
24 my ($schema,%args) = (shift,@_);
26 my $greeting = $args{greeting} || "Hello";
27 my $newtable = "${greeting}World";
28 $schema->add_table( name => $newtable );
31 # Hack to allow sqlt to see our module as it wasn't loaded from a .pm
32 $INC{'SQL/Translator/Filter/HelloWorld.pm'}
33 = 'lib/SQL/Translator/Filter/HelloWorld.pm';
35 #=============================================================================
42 use Test::SQL::Translator qw(maybe_plan);
47 maybe_plan(16, 'Template 2.20', 'Test::Differences',
48 'SQL::Translator::Parser::YAML',
49 'SQL::Translator::Producer::YAML')
52 use Test::Differences;
55 my $in_yaml = qq{--- #YAML:1.0
66 my $sqlt_version = $SQL::Translator::VERSION;
109 parser_type: SQL::Translator::Parser::YAML
111 producer_type: SQL::Translator::Producer::YAML
114 version: $sqlt_version
117 # Parse the test XML schema
119 $obj = SQL::Translator->new(
126 # Check they get called ok
128 pass("Filter 1 called");
129 isa_ok($_[0],"SQL::Translator::Schema", "Filter 1, arg0 ");
130 is( $#_, 0, "Filter 1, got no args");
133 pass("Filter 2 called");
134 isa_ok($_[0],"SQL::Translator::Schema", "Filter 2, arg0 ");
135 is( $#_, 0, "Filter 2, got no args");
138 # Sub filter with args
140 pass("Filter 3 called");
141 isa_ok($_[0],"SQL::Translator::Schema", "Filter 3, arg0 ");
142 is( $#_, 2, "Filter 3, go 2 args");
143 is( $_[1], "hello", "Filter 3, arg1=hello");
144 is( $_[2], "world", "Filter 3, arg2=world");
148 # Uppercase all the table names.
151 foreach ($schema->get_tables) {
152 $_->name(uc $_->name);
156 # lowercase all the field names.
159 foreach ( map { $_->get_fields } $schema->get_tables ) {
160 $_->name(lc $_->name);
164 # Filter from SQL::Translator::Filter::*
167 [ 'HelloWorld', greeting => 'Gday' ],
170 ) or die "Failed to create translator object: ".SQL::Translator->error;
173 lives_ok { $out = $obj->translate; } "Translate ran";
174 is $obj->error, '' ,"No errors";
175 ok $out ne "" ,"Produced something!";
176 eq_or_diff $out, $ans_yaml ,"Output looks right";