6 use Test::SQL::Translator qw(maybe_plan);
8 use SQL::Translator::Schema::View;
9 use SQL::Translator::Schema::Table;
10 use SQL::Translator::Producer::SQLite;
11 $SQL::Translator::Producer::SQLite::NO_QUOTES = 0;
14 my $view1 = SQL::Translator::Schema::View->new( name => 'view_foo',
15 fields => [qw/id name/],
16 sql => 'SELECT id, name FROM thing',
21 my $create_opts = { no_comments => 1 };
22 my $view1_sql1 = [ SQL::Translator::Producer::SQLite::create_view($view1, $create_opts) ];
24 my $view_sql_replace = [ 'CREATE TEMPORARY VIEW IF NOT EXISTS "view_foo" AS
25 SELECT id, name FROM thing' ];
26 is_deeply($view1_sql1, $view_sql_replace, 'correct "CREATE TEMPORARY VIEW" SQL');
29 my $view2 = SQL::Translator::Schema::View->new( name => 'view_foo',
30 fields => [qw/id name/],
31 sql => 'SELECT id, name FROM thing',);
33 my $view1_sql2 = [ SQL::Translator::Producer::SQLite::create_view($view2, $create_opts) ];
34 my $view_sql_noreplace = [ 'CREATE VIEW "view_foo" AS
35 SELECT id, name FROM thing' ];
36 is_deeply($view1_sql2, $view_sql_noreplace, 'correct "CREATE VIEW" SQL');
41 my $table = SQL::Translator::Schema::Table->new(
45 name => 'foreign_key',
46 data_type => 'integer',
49 my $constraint = SQL::Translator::Schema::Constraint->new(
52 type => 'FOREIGN_KEY',
53 fields => ['foreign_key'],
54 reference_fields => ['id'],
55 reference_table => 'foo',
56 on_delete => 'RESTRICT',
57 on_update => 'CASCADE',
59 my $expected = [ 'FOREIGN KEY ("foreign_key") REFERENCES "foo"("id") ON DELETE RESTRICT ON UPDATE CASCADE'];
60 my $result = [SQL::Translator::Producer::SQLite::create_foreignkey($constraint,$create_opts)];
61 is_deeply($result, $expected, 'correct "FOREIGN KEY"');
64 my $table = SQL::Translator::Schema::Table->new(
69 data_type => 'integer',
72 my $expected = [ qq<CREATE TABLE "foo_table" (\n "id" integer DEFAULT 1\n)>];
73 my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })];
74 is_deeply($result, $expected, 'correctly unquoted DEFAULT');
78 my $table = SQL::Translator::Schema::Table->new(
103 my $expected = [ qq<CREATE TABLE "foo" (
109 my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })];
110 is_deeply($result, $expected, 'correctly translated bytea to blob');
114 my $table = SQL::Translator::Schema::Table->new(
119 data_type => 'integer',
120 default_value => \'gunshow',
122 my $expected = [ qq<CREATE TABLE "foo_table" (\n "id" integer DEFAULT gunshow\n)>];
123 my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })];
124 is_deeply($result, $expected, 'correctly unquoted DEFAULT');
128 my $table = SQL::Translator::Schema::Table->new(
133 data_type => 'integer',
134 default_value => 'frew',
136 my $expected = [ qq<CREATE TABLE "foo_table" (\n "id" integer DEFAULT 'frew'\n)>];
137 my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })];
138 is_deeply($result, $expected, 'correctly quoted DEFAULT');
142 my $table = SQL::Translator::Schema::Table->new(
147 data_type => 'integer',
148 default_value => 'NULL',
152 default_value => 'now()',
156 default_value => 'CURRENT_TIMESTAMP',
158 my $expected = [ qq<CREATE TABLE "foo" (
159 "id" integer DEFAULT NULL,
160 "when" DEFAULT now(),
161 "at" DEFAULT CURRENT_TIMESTAMP
163 my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })];
164 is_deeply($result, $expected, 'correctly unquoted excempted DEFAULTs');