def test_create_table(self): class A(TestModel): cf = CharField(max_length=100, unique=True) df = DecimalField( max_digits=4, decimal_places=2, auto_round=True, unique=True) class CF(TestModel): a = ForeignKeyField(A, to_field='cf') class DF(TestModel): a = ForeignKeyField(A, to_field='df') cf_create, _ = compiler.create_table(CF) self.assertEqual( cf_create, 'CREATE TABLE "cf" (' '"id" INTEGER NOT NULL PRIMARY KEY, ' '"a_id" VARCHAR(100) NOT NULL, ' 'FOREIGN KEY ("a_id") REFERENCES "a" ("cf"))') df_create, _ = compiler.create_table(DF) self.assertEqual( df_create, 'CREATE TABLE "df" (' '"id" INTEGER NOT NULL PRIMARY KEY, ' '"a_id" DECIMAL(4, 2) NOT NULL, ' 'FOREIGN KEY ("a_id") REFERENCES "a" ("df"))')
def test_create_table_query(self): query, params = compiler.create_table(Snippet) self.assertEqual( query, 'CREATE TABLE "snippet" ' '("id" INTEGER NOT NULL PRIMARY KEY, ' '"code" TEXT NOT NULL, ' '"language_id" INTEGER NOT NULL, ' 'FOREIGN KEY ("language_id") REFERENCES "language" ("id")' ')') query, params = compiler.create_table(Language) self.assertEqual( query, 'CREATE TABLE "language" ' '("id" INTEGER NOT NULL PRIMARY KEY, ' '"name" VARCHAR(255) NOT NULL, ' '"selected_snippet_id" INTEGER)')
def test_create_table_query(self): query, params = compiler.create_table(TagPostThrough) self.assertEqual( query, 'CREATE TABLE "tagpostthrough" ' '("tag_id" INTEGER NOT NULL, ' '"post_id" INTEGER NOT NULL, ' 'PRIMARY KEY ("tag_id", "post_id"), ' 'FOREIGN KEY ("tag_id") REFERENCES "tag" ("id"), ' 'FOREIGN KEY ("post_id") REFERENCES "post" ("id")' ')')
def test_create_table_query(self): query, params = compiler.create_table(TagPostThrough) self.assertEqual( query, 'CREATE TABLE tagpostthrough ' '(tag_id INTEGER NOT NULL, ' 'post_id INTEGER NOT NULL, ' 'PRIMARY KEY (tag_id, post_id), ' 'FOREIGN KEY (tag_id) REFERENCES tag (id), ' 'FOREIGN KEY (post_id) REFERENCES post (id)' ')')
def test_composite_key_inheritance(self): db = database_initializer.get_in_memory_database() class Person(TestModel): first = TextField() last = TextField() class Meta: database = db primary_key = CompositeKey('first', 'last') class Employee(Person): title = TextField() self.assertTrue(Employee._meta.composite_key) primary_key = Employee._meta.primary_key self.assertTrue(isinstance(primary_key, CompositeKey)) self.assertEqual(primary_key.field_names, ('first', 'last')) ddl, _ = compiler.create_table(Employee) self.assertEqual(ddl, ( 'CREATE TABLE "employee" ("first" TEXT NOT NULL, ' '"last" TEXT NOT NULL, "title" TEXT NOT NULL, ' 'PRIMARY KEY ("first", "last"))'))
def test_composite_key_inheritance(self): db = database_initializer.get_in_memory_database() class Person(TestModel): first = TextField() last = TextField() class Meta: database = db primary_key = CompositeKey('first', 'last') class Employee(Person): title = TextField() self.assertTrue(Employee._meta.composite_key) primary_key = Employee._meta.primary_key self.assertTrue(isinstance(primary_key, CompositeKey)) self.assertEqual(primary_key.field_names, ('first', 'last')) ddl, _ = compiler.create_table(Employee) self.assertEqual(ddl, ('CREATE TABLE "employee" ("first" TEXT NOT NULL, ' '"last" TEXT NOT NULL, "title" TEXT NOT NULL, ' 'PRIMARY KEY ("first", "last"))'))