Release commit for 1.62
[dbsrgits/SQL-Translator.git] / t / 73-sqlite-respects-quote.t
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