Commit | Line | Data |
54360ac9 |
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 | $t->translate ( |
29 | parser => 'SQLite', |
30 | data => \$data, |
31 | ); |
32 | my $schema1 = $t->schema; |
33 | isa_ok ($schema1, 'SQL::Translator::Schema', 'First parser pass produced a schema'); |
34 | |
35 | |
36 | my $data2 = $t->translate ( |
37 | producer => 'SQLite', |
38 | ); |
39 | like ($data2, qr/BEGIN.+COMMIT/is, 'Received some meaningful output from the producer'); |
40 | |
41 | # get a new translator |
42 | $t = SQL::Translator->new; |
43 | |
44 | $t->translate ( |
45 | parser => 'SQLite', |
46 | data => \$data2, |
47 | ); |
48 | my $schema2 = $t->schema; |
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 | } |