fix for when we are adding /dropping columns in sqlite and need to roundtrip via...
[dbsrgits/SQL-Translator.git] / t / 72-sqlite-add-drop-fields.t
1 #!/usr/bin/env perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 4;
7 use Test::Differences;
8 use SQL::Translator;
9 use SQL::Translator::Parser::SQLite;
10 use SQL::Translator::Diff;
11
12
13 ok my $version1 = SQL::Translator->new(from=>'SQLite')
14   ->translate(\<<SQL);
15 CREATE TABLE "Foo" (
16   "foo" INTEGER PRIMARY KEY NOT NULL,
17   "bar" VARCHAR(10) NOT NULL,
18   "biff" VARCHAR(10)
19 );
20 SQL
21
22 ok my $version2 = SQL::Translator->new(from=>'SQLite')
23   ->translate(\<<SQL);
24 CREATE TABLE "Foo" (
25   "foo" INTEGER PRIMARY KEY NOT NULL,
26   "bar" VARCHAR(10) NOT NULL,
27   "baz" VARCHAR(10),
28   "doomed" VARCHAR(10)
29 );
30 SQL
31
32 ok my $upgrade_sql = SQL::Translator::Diff->new({
33   output_db     => 'SQLite',
34   source_schema => $version1,
35   target_schema => $version2,
36 })->compute_differences->produce_diff_sql;
37
38 eq_or_diff($upgrade_sql, <<'## END OF DIFF', "Diff as expected");
39 -- Convert schema '' to '':;
40
41 BEGIN;
42
43 CREATE TEMPORARY TABLE "Foo_temp_alter" (
44   "foo" INTEGER PRIMARY KEY NOT NULL,
45   "bar" VARCHAR(10) NOT NULL,
46   "baz" VARCHAR(10),
47   "doomed" VARCHAR(10)
48 );
49
50 INSERT INTO "Foo_temp_alter"( "foo", "bar") SELECT "foo", "bar" FROM "Foo";
51
52 DROP TABLE "Foo";
53
54 CREATE TABLE "Foo" (
55   "foo" INTEGER PRIMARY KEY NOT NULL,
56   "bar" VARCHAR(10) NOT NULL,
57   "baz" VARCHAR(10),
58   "doomed" VARCHAR(10)
59 );
60
61 INSERT INTO "Foo" SELECT "foo", "bar", "baz", "doomed" FROM "Foo_temp_alter";
62
63 DROP TABLE "Foo_temp_alter";
64
65
66 COMMIT;
67
68 ## END OF DIFF
69