X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F56-sqlite-producer.t;h=5d56adf082fbd275c27b14d00822a33a92e82fec;hb=cb9bbc68fe26aa563d28d590221f6a0235b4062e;hp=752559db147094fe746a9c9d1e7dd2d89311065b;hpb=ea4a3ecc5de1c8f062fef3bab51e1cc7a2c23235;p=dbsrgits%2FSQL-Translator.git diff --git a/t/56-sqlite-producer.t b/t/56-sqlite-producer.t index 752559d..5d56adf 100644 --- a/t/56-sqlite-producer.t +++ b/t/56-sqlite-producer.t @@ -2,13 +2,13 @@ # vim: set ft=perl: use strict; -use Test::More tests => 3; +use Test::More; use Test::SQL::Translator qw(maybe_plan); -use FindBin qw/$Bin/; use SQL::Translator::Schema::View; use SQL::Translator::Schema::Table; use SQL::Translator::Producer::SQLite; +$SQL::Translator::Producer::SQLite::NO_QUOTES = 0; { my $view1 = SQL::Translator::Schema::View->new( name => 'view_foo', @@ -21,8 +21,8 @@ use SQL::Translator::Producer::SQLite; my $create_opts = { no_comments => 1 }; my $view1_sql1 = [ SQL::Translator::Producer::SQLite::create_view($view1, $create_opts) ]; - my $view_sql_replace = [ "CREATE TEMPORARY VIEW IF NOT EXISTS 'view_foo' AS - SELECT id, name FROM thing" ]; + my $view_sql_replace = [ 'CREATE TEMPORARY VIEW IF NOT EXISTS "view_foo" AS + SELECT id, name FROM thing' ]; is_deeply($view1_sql1, $view_sql_replace, 'correct "CREATE TEMPORARY VIEW" SQL'); @@ -31,8 +31,8 @@ use SQL::Translator::Producer::SQLite; sql => 'SELECT id, name FROM thing',); my $view1_sql2 = [ SQL::Translator::Producer::SQLite::create_view($view2, $create_opts) ]; - my $view_sql_noreplace = [ "CREATE VIEW 'view_foo' AS - SELECT id, name FROM thing" ]; + my $view_sql_noreplace = [ 'CREATE VIEW "view_foo" AS + SELECT id, name FROM thing' ]; is_deeply($view1_sql2, $view_sql_noreplace, 'correct "CREATE VIEW" SQL'); } { @@ -44,6 +44,7 @@ use SQL::Translator::Producer::SQLite; $table->add_field( name => 'foreign_key', data_type => 'integer', + default_value => 1, ); my $constraint = SQL::Translator::Schema::Constraint->new( table => $table, @@ -55,8 +56,112 @@ use SQL::Translator::Producer::SQLite; on_delete => 'RESTRICT', on_update => 'CASCADE', ); - - my $expected = [ "FOREIGN KEY ('foreign_key') REFERENCES 'foo'('id') ON DELETE RESTRICT ON UPDATE CASCADE"]; + my $expected = [ 'FOREIGN KEY ("foreign_key") REFERENCES "foo"("id") ON DELETE RESTRICT ON UPDATE CASCADE']; my $result = [SQL::Translator::Producer::SQLite::create_foreignkey($constraint,$create_opts)]; is_deeply($result, $expected, 'correct "FOREIGN KEY"'); } +{ + my $table = SQL::Translator::Schema::Table->new( + name => 'foo_table', + ); + $table->add_field( + name => 'id', + data_type => 'integer', + default_value => 1, + ); + my $expected = [ qq]; + my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })]; + is_deeply($result, $expected, 'correctly unquoted DEFAULT'); +} + +{ + my $table = SQL::Translator::Schema::Table->new( + name => 'foo', + ); + $table->add_field( + name => 'data', + data_type => 'bytea', + ); + $table->add_field( + name => 'data2', + data_type => 'set', + ); + $table->add_field( + name => 'data2', + data_type => 'set', + ); + $table->add_field( + name => 'data3', + data_type => 'text', + size => 30, + ); + $table->add_field( + name => 'data4', + data_type => 'blob', + size => 30, + ); + my $expected = [ qq]; + my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })]; + is_deeply($result, $expected, 'correctly translated bytea to blob'); +} + +{ + my $table = SQL::Translator::Schema::Table->new( + name => 'foo_table', + ); + $table->add_field( + name => 'id', + data_type => 'integer', + default_value => \'gunshow', + ); + my $expected = [ qq]; + my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })]; + is_deeply($result, $expected, 'correctly unquoted DEFAULT'); +} + +{ + my $table = SQL::Translator::Schema::Table->new( + name => 'foo_table', + ); + $table->add_field( + name => 'id', + data_type => 'integer', + default_value => 'frew', + ); + my $expected = [ qq]; + my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })]; + is_deeply($result, $expected, 'correctly quoted DEFAULT'); +} + +{ + my $table = SQL::Translator::Schema::Table->new( + name => 'foo', + ); + $table->add_field( + name => 'id', + data_type => 'integer', + default_value => 'NULL', + ); + $table->add_field( + name => 'when', + default_value => 'now()', + ); + $table->add_field( + name => 'at', + default_value => 'CURRENT_TIMESTAMP', + ); + my $expected = [ qq]; + my $result = [SQL::Translator::Producer::SQLite::create_table($table, { no_comments => 1 })]; + is_deeply($result, $expected, 'correctly unquoted excempted DEFAULTs'); +} + +done_testing;