Schema::Graph - switch ugly use of Log4perl to an even uglier (but at least available...
[dbsrgits/SQL-Translator.git] / t / 27sqlite-roundtrip.t
CommitLineData
54360ac9 1#!/usr/bin/perl
2
3use warnings;
4use strict;
5use Test::More;
6use Test::SQL::Translator qw(maybe_plan);
7use FindBin qw/$Bin/;
8
9use SQL::Translator;
10use SQL::Translator::Schema::Constants;
11
12BEGIN {
13 maybe_plan(7,
14 'SQL::Translator::Parser::SQLite',
15 'SQL::Translator::Producer::SQLite',
16 );
17}
18
19my $file = "$Bin/data/sqlite/create.sql";
20
21{
d0fcb05d 22 #local $/;
23 #open my $fh, "<$file" or die "Can't read file '$file': $!\n";
24 #my $data = <$fh>;
54360ac9 25
26 my $t = SQL::Translator->new;
27
d0fcb05d 28 my $schema1 = $t->translate (
54360ac9 29 parser => 'SQLite',
d0fcb05d 30 file => $file,
31 debug => 1
32 ) or die $t->error;
54360ac9 33 isa_ok ($schema1, 'SQL::Translator::Schema', 'First parser pass produced a schema');
34
35
36 my $data2 = $t->translate (
d0fcb05d 37 data => $schema1,
54360ac9 38 producer => 'SQLite',
d0fcb05d 39 ) or die $t->error;
54360ac9 40 like ($data2, qr/BEGIN.+COMMIT/is, 'Received some meaningful output from the producer');
41
42 # get a new translator
43 $t = SQL::Translator->new;
44
d0fcb05d 45 my $schema2 = $t->translate (
54360ac9 46 parser => 'SQLite',
47 data => \$data2,
d0fcb05d 48 ) or die $t->error;
54360ac9 49 isa_ok ($schema2, 'SQL::Translator::Schema', 'Second parser pass produced a schema');
50
51 my @t1 = $schema1->get_tables;
52 my @t2 = $schema2->get_tables;
53
54 my @v1 = $schema1->get_views;
55 my @v2 = $schema2->get_views;
56
57 my @g1 = $schema1->get_triggers;
58 my @g2 = $schema2->get_triggers;
59
60 is (@t2, @t1, 'Equal amount of tables');
61
62 is_deeply (
63 [ map { $_->name } (@t1) ],
64 [ map { $_->name } (@t2) ],
65 'Table names match',
66 );
67
68 is (@v2, @v1, 'Equal amount of views');
69
70 is (@g2, @g1, 'Equal amount of triggers');
71}