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_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_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_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_adding_string(self): blueprint = Blueprint('users') blueprint.string('foo') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE `users` ADD `foo` VARCHAR(255) NOT NULL', statements[0] ) blueprint = Blueprint('users') blueprint.string('foo', 100) statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE `users` ADD `foo` VARCHAR(100) NOT NULL', statements[0] ) blueprint = Blueprint('users') blueprint.string('foo', 100).nullable().default('bar') statements = blueprint.to_sql(self.get_connection(), self.get_grammar()) self.assertEqual(1, len(statements)) self.assertEqual( 'ALTER TABLE `users` ADD `foo` VARCHAR(100) NULL DEFAULT \'bar\'', 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] )