Release commit for 1.62
[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