|
#!/usr/bin/perl -w
BEGIN {
maybe_plan(3, 'YAML' , 'Test::Differences' );
}
my $in_yaml = qq{---
schema:
tables:
_GLOBAL_:
order: 99
name: _GLOBAL_
fields:
modified:
name: modified
data_type: timestamp
indices:
- fields:
- modified
constraints:
- fields:
- modified
type: UNIQUE
Person:
order: 1
name: Person
fields:
first_name:
data_type: foovar
name: first_name
} ;
my $obj ;
$obj = SQL::Translator->new(
debug => 0,
show_warnings => 1,
from => "YAML" ,
to => "YAML" ,
data => $in_yaml ,
filters => [
[
'Globals' ,
fields => [ {
name => 'created' ,
data_type => 'timestamp' ,
is_nullable => 0,
} ],
indices => [ {
fields => 'created' ,
} ],
],
],
) or die "Failed to create translator object: " . SQL::Translator->error;
my $struct ;
lives_ok { $struct = YAML::Load( $obj ->translate) }
"Translate/yaml reload ran" ;
is $obj ->error, '' , "No errors" ;
is_deeply(
$struct ,
{
schema => {
procedures => {},
tables => {
Person => {
constraints => [ {
deferrable => 1,
expression => "" ,
fields => [ "modified" ],
match_type => "" ,
name => "" ,
on_delete => "" ,
on_update => "" ,
options => [],
reference_fields => [],
reference_table => "" ,
type => "UNIQUE"
} ],
fields => {
first_name => {
data_type => "foovar" ,
default_value => undef ,
is_nullable => 1,
is_primary_key => 0,
is_unique => 0,
name => "first_name" ,
order => 1,
size => [0]
},
created => {
data_type => "timestamp" ,
default_value => undef ,
is_nullable => 0,
is_primary_key => 0,
is_unique => 0,
name => "created" ,
order => 2,
size => [0]
},
modified => {
data_type => "timestamp" ,
default_value => undef ,
is_nullable => 1,
is_primary_key => 0,
is_unique => 1,
name => "modified" ,
order => 3,
size => [0]
}
},
indices => [
{
fields => [ "created" ],
name => "" ,
options => [],
type => "NORMAL"
},
{
fields => [ "modified" ],
name => "" ,
options => [],
type => "NORMAL"
}
],
name => "Person" ,
options => [],
order => 1
}
},
triggers => {},
views => {}
},
translator => {
add_drop_table => 0,
filename => undef ,
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 => $SQL::Translator::VERSION ,
}
},
'Expected final yaml-schema'
);
|