Beispiel #1
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])
Beispiel #2
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])
Beispiel #4
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)
Beispiel #5
0
    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])
Beispiel #6
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)
Beispiel #7
0
    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])
Beispiel #8
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],
        )
Beispiel #11
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],
        )
Beispiel #13
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])
Beispiel #14
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],
        )
Beispiel #15
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])
Beispiel #16
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])
Beispiel #17
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)
Beispiel #19
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])
Beispiel #20
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])
Beispiel #21
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],
        )
Beispiel #22
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],
        )