Improve xml database_event deprecation warning
[dbsrgits/SQL-Translator.git] / t / 27sqlite-roundtrip.t
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5 use Test::More;
6 use Test::SQL::Translator qw(maybe_plan);
7 use FindBin qw/$Bin/;
8
9 use SQL::Translator;
10 use SQL::Translator::Schema::Constants;
11
12 BEGIN {
13     maybe_plan(7,
14         'SQL::Translator::Parser::SQLite',
15         'SQL::Translator::Producer::SQLite',
16     );
17 }
18
19 my $file = "$Bin/data/sqlite/create.sql";
20
21 {
22     #local $/;
23     #open my $fh, "<$file" or die "Can't read file '$file': $!\n";
24     #my $data = <$fh>;
25
26     my $t = SQL::Translator->new;
27
28     my $schema1 = $t->translate (
29         parser => 'SQLite',
30         file => $file,
31         debug => 1
32     ) or die $t->error;
33     isa_ok ($schema1, 'SQL::Translator::Schema', 'First parser pass produced a schema');
34
35
36     my $data2 = $t->translate (
37         data => $schema1,
38         producer => 'SQLite',
39     ) or die $t->error;
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
45     my $schema2 = $t->translate (
46         parser => 'SQLite',
47         data => \$data2,
48     ) or die $t->error;
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 }