Commit | Line | Data |
2d23c1e1 |
1 | #!/usr/bin/env perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More tests => 3; |
7 | use Test::Exception; |
8 | use Test::Differences; |
9 | use SQL::Translator; |
10 | use SQL::Translator::Parser::SQLite; |
11 | use SQL::Translator::Diff; |
12 | |
13 | my $ddl = <<DDL; |
14 | CREATE TABLE "Foo" ( |
15 | "foo" INTEGER PRIMARY KEY NOT NULL, |
16 | "bar" VARCHAR(10) NOT NULL, |
17 | "biff" VARCHAR(10) |
18 | ); |
19 | DDL |
20 | |
21 | my %common_args = ( |
22 | no_comments => 1, |
23 | from => 'SQLite', |
24 | to => 'SQLite'); |
25 | |
26 | my $unquoted = SQL::Translator |
27 | ->new(%common_args) |
28 | ->translate(\$ddl); |
29 | |
30 | eq_or_diff($unquoted, <<'DDL', 'DDL with default quoting'); |
31 | BEGIN TRANSACTION; |
32 | |
33 | CREATE TABLE Foo ( |
34 | foo INTEGER PRIMARY KEY NOT NULL, |
35 | bar VARCHAR(10) NOT NULL, |
36 | biff VARCHAR(10) |
37 | ); |
38 | |
39 | COMMIT; |
40 | DDL |
41 | |
42 | dies_ok { SQL::Translator |
43 | ->new(%common_args, quote_table_names=>0, quote_field_names => 1) |
44 | ->translate(\$ddl) } 'mix and match quotes is asinine'; |
45 | |
46 | my $quoteall = SQL::Translator |
47 | ->new(%common_args, quote_identifiers=>1) |
48 | ->translate(\$ddl); |
49 | |
50 | eq_or_diff($quoteall, <<'DDL', 'DDL with quoting'); |
51 | BEGIN TRANSACTION; |
52 | |
53 | CREATE TABLE "Foo" ( |
54 | "foo" INTEGER PRIMARY KEY NOT NULL, |
55 | "bar" VARCHAR(10) NOT NULL, |
56 | "biff" VARCHAR(10) |
57 | ); |
58 | |
59 | COMMIT; |
60 | DDL |
61 | |
62 | =begin FOR TODO |
63 | |
64 | # FIGURE OUT HOW TO DO QUOTED DIFFS EVEN WHEN QUOTING IS DEFAULT OFF |
65 | # |
66 | |
67 | eq_or_diff($upgrade_sql, <<'## END OF DIFF', "Diff as expected"); |
68 | -- Convert schema '' to '':; |
69 | |
70 | BEGIN; |
71 | |
72 | CREATE TEMPORARY TABLE "Foo_temp_alter" ( |
73 | "foo" INTEGER PRIMARY KEY NOT NULL, |
74 | "bar" VARCHAR(10) NOT NULL, |
75 | "baz" VARCHAR(10), |
76 | "doomed" VARCHAR(10) |
77 | ); |
78 | |
79 | INSERT INTO "Foo_temp_alter"( "foo", "bar") SELECT "foo", "bar" FROM "Foo"; |
80 | |
81 | DROP TABLE "Foo"; |
82 | |
83 | CREATE TABLE "Foo" ( |
84 | "foo" INTEGER PRIMARY KEY NOT NULL, |
85 | "bar" VARCHAR(10) NOT NULL, |
86 | "baz" VARCHAR(10), |
87 | "doomed" VARCHAR(10) |
88 | ); |
89 | |
90 | INSERT INTO "Foo" SELECT "foo", "bar", "baz", "doomed" FROM "Foo_temp_alter"; |
91 | |
92 | DROP TABLE "Foo_temp_alter"; |
93 | |
94 | |
95 | COMMIT; |
96 | |
97 | ## END OF DIFF |
98 | |
99 | =cut |
100 | |
101 | |