def test_adding_column_after_another(self): blueprint = Blueprint('users') blueprint.string('name').after('foo') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE `users` ADD `name` VARCHAR(255) NOT NULL AFTER `foo`', statements[0])
def test_adding_column_after_another(self): blueprint = Blueprint("users") blueprint.string("name").after("foo") statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( "ALTER TABLE `users` ADD `name` VARCHAR(255) NOT NULL AFTER `foo`", statements[0], )
def test_adding_timestamps_not_current(self): blueprint = Blueprint("users") blueprint.timestamps(use_current=False) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) expected = [ 'ALTER TABLE "users" ADD COLUMN "created_at" TIMESTAMP(6) WITHOUT TIME ZONE NOT NULL, ' 'ADD COLUMN "updated_at" TIMESTAMP(6) WITHOUT TIME ZONE NOT NULL' ] self.assertEqual(expected[0], statements[0])
def test_adding_timestamps_not_current(self): blueprint = Blueprint('users') blueprint.timestamps(use_current=False) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(2, len(statements)) expected = [ 'ALTER TABLE "users" ADD COLUMN "created_at" DATETIME NOT NULL', 'ALTER TABLE "users" ADD COLUMN "updated_at" DATETIME NOT NULL' ] self.assertEqual(expected, statements)
def test_adding_timestamps_mysql_gte_564(self): blueprint = Blueprint("users") blueprint.timestamps() statements = blueprint.to_sql(self.get_connection(), self.get_grammar((5, 6, 4, ""))) self.assertEqual(1, len(statements)) expected = [ "ALTER TABLE `users` ADD `created_at` TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) NOT NULL, " "ADD `updated_at` TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) NOT NULL" ] self.assertEqual(expected[0], statements[0])
def test_adding_timestamps(self): blueprint = Blueprint('users') blueprint.timestamps() statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(2, len(statements)) expected = [ 'ALTER TABLE "users" ADD COLUMN "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL', 'ALTER TABLE "users" ADD COLUMN "updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL' ] self.assertEqual(expected, statements)
def test_adding_timestamps_not_current_mysql_gte_564(self): blueprint = Blueprint('users') blueprint.timestamps(use_current=False) statements = blueprint.to_sql(self.get_connection(), self.get_grammar((5, 6, 4, ''))) self.assertEqual(1, len(statements)) expected = [ 'ALTER TABLE `users` ADD `created_at` TIMESTAMP(6) NOT NULL, ' 'ADD `updated_at` TIMESTAMP(6) NOT NULL' ] self.assertEqual(expected[0], statements[0])
def test_adding_foreign_key(self): blueprint = Blueprint('users') blueprint.foreign('order_id').references('id').on('orders') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) expected = [ 'ALTER TABLE `users` ADD CONSTRAINT users_order_id_foreign ' 'FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`)' ] self.assertEqual(expected, statements)
def test_adding_timestamps(self): blueprint = Blueprint('users') blueprint.timestamps() statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) expected = [ 'ALTER TABLE "users" ADD COLUMN "created_at" TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP(0) NOT NULL, ' 'ADD COLUMN "updated_at" TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP(0) NOT NULL' ] self.assertEqual(expected[0], statements[0])
def test_adding_timestamp_with_current(self): blueprint = Blueprint("users") blueprint.timestamp("foo").use_current() statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" TIMESTAMP(6) WITHOUT TIME ZONE ' "DEFAULT CURRENT_TIMESTAMP(6) NOT NULL", statements[0], )
def test_adding_timestamps_not_current_mysql_lt_564(self): blueprint = Blueprint("users") blueprint.timestamps(use_current=False) statements = blueprint.to_sql(self.get_connection(), self.get_grammar((5, 6, 0, ""))) self.assertEqual(1, len(statements)) expected = [ "ALTER TABLE `users` ADD `created_at` TIMESTAMP NOT NULL, " "ADD `updated_at` TIMESTAMP NOT NULL" ] self.assertEqual(expected[0], statements[0])
def test_adding_small_integer(self): blueprint = Blueprint("users") blueprint.small_integer("foo") statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" SMALLINT NOT NULL', statements[0]) blueprint = Blueprint("users") blueprint.small_integer("foo", True) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" SMALLSERIAL PRIMARY KEY NOT NULL', statements[0], )
def test_adding_timestamps_mysql_lt_564(self): blueprint = Blueprint('users') blueprint.timestamps() statements = blueprint.to_sql(self.get_connection(), self.get_grammar((5, 6, 0, ''))) self.assertEqual(1, len(statements)) expected = [ 'ALTER TABLE `users` ADD `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, ' 'ADD `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL' ] self.assertEqual(expected[0], statements[0])
def test_basic_create(self): blueprint = Blueprint("users") blueprint.create() blueprint.increments("id") blueprint.string("email") conn = self.get_connection() conn.should_receive("get_config").once().with_args( "charset").and_return("utf8") conn.should_receive("get_config").once().with_args( "collation").and_return("utf8_unicode_ci") statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( "CREATE TABLE `users` (" "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, " "`email` VARCHAR(255) NOT NULL) " "DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci", statements[0], ) blueprint = Blueprint("users") blueprint.create() blueprint.increments("id") blueprint.string("email") conn = self.get_connection() conn.should_receive("get_config").and_return(None) statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( "CREATE TABLE `users` (" "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, " "`email` VARCHAR(255) NOT NULL)", statements[0], )
def test_adding_foreign_key(self): blueprint = Blueprint('users') blueprint.create() blueprint.string('foo').primary() blueprint.string('order_id') blueprint.foreign('order_id').references('id').on('orders') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) expected = 'CREATE TABLE "users" ("foo" VARCHAR NOT NULL, "order_id" VARCHAR NOT NULL, ' \ 'FOREIGN KEY("order_id") REFERENCES "orders"("id"), PRIMARY KEY ("foo"))' self.assertEqual(expected, statements[0])
def test_basic_create(self): blueprint = Blueprint('users') blueprint.create() blueprint.increments('id') blueprint.string('email') conn = self.get_connection() conn.should_receive('get_config').once().with_args( 'charset').and_return('utf8') conn.should_receive('get_config').once().with_args( 'collation').and_return('utf8_unicode_ci') statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'CREATE TABLE `users` (' '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ' '`email` VARCHAR(255) NOT NULL) ' 'DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci', statements[0]) blueprint = Blueprint('users') blueprint.create() blueprint.increments('id') blueprint.string('email') conn = self.get_connection() conn.should_receive('get_config').and_return(None) statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'CREATE TABLE `users` (' '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ' '`email` VARCHAR(255) NOT NULL)', statements[0])
def test_basic_create(self): blueprint = Blueprint("users") blueprint.create() blueprint.increments("id") blueprint.string("email") statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'CREATE TABLE "users" ("id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "email" VARCHAR NOT NULL)', statements[0], ) blueprint = Blueprint("users") blueprint.increments("id") blueprint.string("email") statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(2, len(statements)) expected = [ 'ALTER TABLE "users" ADD COLUMN "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT', 'ALTER TABLE "users" ADD COLUMN "email" VARCHAR NOT NULL', ] self.assertEqual(expected, statements)
def test_adding_foreign_key(self): blueprint = Blueprint("users") blueprint.create() blueprint.string("foo").primary() blueprint.string("order_id") blueprint.foreign("order_id").references("id").on("orders") statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(3, len(statements)) expected = [ 'CREATE TABLE "users" ("foo" VARCHAR(255) NOT NULL, "order_id" VARCHAR(255) NOT NULL)', 'ALTER TABLE "users" ADD CONSTRAINT users_order_id_foreign' ' FOREIGN KEY ("order_id") REFERENCES "orders" ("id")', 'ALTER TABLE "users" ADD PRIMARY KEY ("foo")', ] self.assertEqual(expected, statements)
def test_basic_create_with_prefix(self): blueprint = Blueprint('users') blueprint.create() blueprint.increments('id') blueprint.string('email') grammar = self.get_grammar() grammar.set_table_prefix('prefix_') conn = self.get_connection() conn.should_receive('get_config').and_return(None) statements = blueprint.to_sql(conn, grammar) self.assertEqual(1, len(statements)) self.assertEqual( 'CREATE TABLE `prefix_users` (' '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ' '`email` VARCHAR(255) NOT NULL)', statements[0])
def test_charset_collation_create(self): blueprint = Blueprint('users') blueprint.create() blueprint.increments('id') blueprint.string('email') blueprint.charset = 'utf8mb4' blueprint.collation = 'utf8mb4_unicode_ci' conn = self.get_connection() statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'CREATE TABLE `users` (' '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ' '`email` VARCHAR(255) NOT NULL) ' 'DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci', statements[0])
def test_charset_collation_create(self): blueprint = Blueprint("users") blueprint.create() blueprint.increments("id") blueprint.string("email") blueprint.charset = "utf8mb4" blueprint.collation = "utf8mb4_unicode_ci" conn = self.get_connection() statements = blueprint.to_sql(conn, self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( "CREATE TABLE `users` (" "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, " "`email` VARCHAR(255) NOT NULL) " "DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci", statements[0], )
def test_basic_create_with_prefix(self): blueprint = Blueprint("users") blueprint.create() blueprint.increments("id") blueprint.string("email") grammar = self.get_grammar() grammar.set_table_prefix("prefix_") conn = self.get_connection() conn.should_receive("get_config").and_return(None) statements = blueprint.to_sql(conn, grammar) self.assertEqual(1, len(statements)) self.assertEqual( "CREATE TABLE `prefix_users` (" "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, " "`email` VARCHAR(255) NOT NULL)", statements[0], )