def test_adding_unique_key(self): blueprint = Blueprint('users') blueprint.unique('foo', 'bar') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD CONSTRAINT bar UNIQUE ("foo")', statements[0])
def test_adding_big_incrementing_id(self): blueprint = Blueprint('users') blueprint.big_increments('id') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT', statements[0])
def test_drop_timestamps(self): blueprint = Blueprint('users') blueprint.drop_timestamps() statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" DROP COLUMN "created_at", DROP COLUMN "updated_at"', statements[0])
def test_adding_timestamp(self): blueprint = Blueprint('users') blueprint.timestamp('foo') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL', statements[0])
def test_adding_double(self): blueprint = Blueprint('users') blueprint.double('foo', 15, 8) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" DOUBLE PRECISION NOT NULL', statements[0])
def test_adding_enum(self): blueprint = Blueprint('users') blueprint.enum('foo', ['bar', 'baz']) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" VARCHAR(255) CHECK ("foo" IN (\'bar\', \'baz\')) NOT NULL', statements[0])
def test_adding_boolean(self): blueprint = Blueprint('users') blueprint.boolean('foo') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" BOOLEAN NOT NULL', statements[0])
def test_adding_decimal(self): blueprint = Blueprint('users') blueprint.decimal('foo', 5, 2) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" ADD COLUMN "foo" DECIMAL(5, 2) NOT NULL', statements[0])
def test_drop_column(self): blueprint = Blueprint('users') blueprint.drop_column('foo') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual('ALTER TABLE "users" DROP COLUMN "foo"', statements[0]) blueprint = Blueprint('users') blueprint.drop_column('foo', 'bar') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE "users" DROP COLUMN "foo", DROP COLUMN "bar"', statements[0])
def test_adding_small_integer(self): blueprint = Blueprint('users') blueprint.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" INTEGER NOT NULL', 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_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 `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 `foo` SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY', 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_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(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 NOT NULL', 'ALTER TABLE "users" ADD COLUMN "updated_at" DATETIME NOT NULL' ] 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 NOT NULL, ' 'ADD COLUMN "updated_at" TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL' ] self.assertEqual(expected[0], 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_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 `created_at` TIMESTAMP DEFAULT 0 NOT NULL, ' 'ADD `updated_at` TIMESTAMP DEFAULT 0 NOT NULL' ] self.assertEqual( expected[0], 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(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] )