#!/usr/bin/perl -w
# vim:filetype=perl
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
use strict;
use Test::More;
use Test::Exception;
use Test::SQL::Translator qw(maybe_plan);
use Data::Dumper;
BEGIN {
maybe_plan(4, 'YAML', 'Test::Differences')
}
use Test::Differences;
use SQL::Translator;
my $in_yaml = qq{---
schema:
tables:
Person:
name: Person
fields:
first_name:
data_type: foovar
name: first_name
};
my $ans_yaml = qq{---
schema:
procedures: {}
tables:
person:
constraints: []
fields:
First_name:
data_type: foovar
default_value: ~
is_nullable: 1
is_primary_key: 0
is_unique: 0
name: First_name
order: 1
size:
- 0
indices: []
name: person
options: []
order: 1
triggers: {}
views: {}
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args: {}
parser_type: SQL::Translator::Parser::YAML
producer_args: {}
producer_type: SQL::Translator::Producer::YAML
show_warnings: 1
trace: 0
version: SUPPRESSED
};
# Parse the test schema
my $obj;
$obj = SQL::Translator->new(
debug => 0,
show_warnings => 1,
from => "YAML",
to => "YAML",
data => $in_yaml,
filters => [
# Filter from SQL::Translator::Filter::*
[ 'Names', {
tables => 'lc',
fields => 'ucfirst',
} ],
],
) or die "Failed to create translator object: ".SQL::Translator->error;
my $out;
lives_ok { $out = $obj->translate; } "Translate ran";
is $obj->error, '' ,"No errors";
ok $out ne "" ,"Produced something!";
# Somewhat hackishly modify the yaml with a regex to avoid
# failing randomly on every change of version.
$out =~ s/version: .*/version: SUPPRESSED/;
eq_or_diff $out, $ans_yaml ,"Output looks right";