def test_create_table(self): # Assert Database.create() new table. v = self.db.create("products", fields=[ db.primary_key("pid"), db.field("name", db.STRING, index=True, optional=False), db.field("price", db.FLOAT) ]) # Assert that the last query executed is stored. if self.db.type == db.SQLITE: self.assertEqual(self.db.query, "pragma table_info(`products`);") if self.db.type == db.MYSQL: self.assertEqual(self.db.query, "show columns from `products`;") # Assert new Table exists in Database.tables. self.assertTrue(isinstance(v, db.Table)) self.assertTrue(len(self.db) == 1) self.assertTrue(v.pk == "pid") self.assertTrue(v.fields == ["pid", "name", "price"]) self.assertTrue(self.db[v.name] == v) self.assertTrue(self.db.tables[v.name] == v) self.assertTrue(getattr(self.db, v.name) == v) # Assert Database._field_SQL subroutine for Database.create(). for field, sql1, sql2 in ( (db.primary_key("pid"), ("`pid` integer not null primary key auto_increment", None), ("`pid` integer not null primary key autoincrement", None)), (db.field("name", db.STRING, index=True, optional=False), ("`name` varchar(100) not null", "create index `products_name` on `products` (`name`);"), ("`name` varchar(100) not null", "create index `products_name` on `products` (`name`);")), (db.field("price", db.INTEGER), ("`price` integer null", None), ("`price` integer null", None))): if self.db.type == db.MYSQL: self.assertEqual( self.db._field_SQL(self.db["products"].name, field), sql1) if self.db.type == db.SQLITE: self.assertEqual( self.db._field_SQL(self.db["products"].name, field), sql2) # Assert TableError if table already exists. self.assertRaises(db.TableError, self.db.create, "products") # Assert remove table. self.db.drop("products") self.assertTrue(len(self.db) == 0) print "pattern.db.Database.create()"
def test_field(self): # Assert field() return value with different optional parameters. # NAME TYPE DEFAULT INDEX OPTIONAL for kwargs, f in ( (dict(name="id", type=db.INT), ("id", "integer", None, False, True)), (dict(name="id", type=db.INT, index=db.PRIMARY), ("id", "integer", None, "primary", True)), (dict(name="id", type=db.INT, index=db.UNIQUE), ("id", "integer", None, "unique", True)), (dict(name="id", type=db.INT, index="0"), ("id", "integer", None, False, True)), (dict(name="id", type=db.INT, index="1"), ("id", "integer", None, True, True)), (dict(name="id", type=db.INT, index=True), ("id", "integer", None, True, True)), (dict(name="id", type=db.INT, default=0), ("id", "integer", 0, False, True)), (dict(name="name", type=db.STRING), ("name", "varchar(100)", None, False, True)), (dict(name="name", type=db.STRING, optional=False), ("name", "varchar(100)", None, False, False)), (dict(name="name", type=db.STRING, optional="0"), ("name", "varchar(100)", None, False, False)), (dict(name="name", type=db.STRING(50)), ("name", "varchar(50)", None, False, True)), (dict(name="price", type=db.FLOAT, default=0), ("price", "real", 0, False, True)), (dict(name="show", type=db.BOOL), ("show", "tinyint(1)", None, False, True)), (dict(name="show", type=db.BOOL, default=True), ("show", "tinyint(1)", True, False, True)), (dict(name="show", type=db.BOOL, default=False), ("show", "tinyint(1)", False, False, True)), (dict(name="date", type=db.DATE), ("date", "timestamp", "now", False, True)), (dict(name="date", type=db.DATE, default=db.NOW), ("date", "timestamp", "now", False, True)), (dict(name="date", type=db.DATE, default="1999-12-31 23:59:59"), ("date", "timestamp", "1999-12-31 23:59:59", False, True))): self.assertEqual(db.field(**kwargs), f) # Assert primary_key() return value. self.assertTrue(db.primary_key() == db.pk() == ("id", "integer", None, "primary", False)) print "pattern.db.field()"
def setUp(self): # Define self.db in a subclass. # Create test tables. self.db.create("persons", fields=[ db.primary_key("id"), db.field("name", db.STRING) ]) self.db.create("products", fields=[ db.primary_key("id"), db.field("name", db.STRING), db.field("price", db.FLOAT, default=0.0) ]) self.db.create("orders", fields=[ db.primary_key("id"), db.field("person", db.INTEGER, index=True), db.field("product", db.INTEGER, index=True), ])
def test_create_table(self): # Assert Database.create() new table. v = self.db.create("products", fields=[ db.primary_key("pid"), db.field("name", db.STRING, index=True, optional=False), db.field("price", db.FLOAT) ]) # Assert that the last query executed is stored. if self.db.type == db.SQLITE: self.assertEqual(self.db.query, "pragma table_info(`products`);") if self.db.type == db.MYSQL: self.assertEqual(self.db.query, "show columns from `products`;") # Assert new Table exists in Database.tables. self.assertTrue(isinstance(v, db.Table)) self.assertTrue(len(self.db) == 1) self.assertTrue(v.pk == "pid") self.assertTrue(v.fields == ["pid", "name", "price"]) self.assertTrue(self.db[v.name] == v) self.assertTrue(self.db.tables[v.name] == v) self.assertTrue(getattr(self.db, v.name) == v) # Assert Database._field_SQL subroutine for Database.create(). for field, sql1, sql2 in ( (db.primary_key("pid"), ("`pid` integer not null primary key auto_increment", None), ("`pid` integer not null primary key autoincrement", None)), (db.field("name", db.STRING, index=True, optional=False), ("`name` varchar(100) not null", "create index `products_name` on `products` (`name`);"), ("`name` varchar(100) not null", "create index `products_name` on `products` (`name`);")), (db.field("price", db.INTEGER), ("`price` integer null", None), ("`price` integer null", None))): if self.db.type == db.MYSQL: self.assertEqual( self.db._field_SQL(self.db["products"].name, field), sql1) if self.db.type == db.SQLITE: self.assertEqual( self.db._field_SQL(self.db["products"].name, field), sql2) # Assert TableError if table already exists. self.assertRaises(db.TableError, self.db.create, "products") # Assert remove table. self.db.drop("products") self.assertTrue(len(self.db) == 0) print("pattern.db.Database.create()")
def setUp(self): # Define self.db in a subclass. # Create test tables. self.db.create("persons", fields=[ db.primary_key("id"), db.field("name", db.STRING), db.field("age", db.INTEGER), db.field("gender", db.INTEGER) ]) self.db.create("gender", fields=[ db.primary_key("id"), db.field("name", db.STRING) ]) # Create test data. self.db.persons.insert(name="john", age="30", gender=2) self.db.persons.insert(name="jack", age="20", gender=2) self.db.persons.insert(name="jane", age="30", gender=1) self.db.gender.insert(name="female") self.db.gender.insert(name="male")
def setUp(self): # Delete all tables first for table in list(self.db): self.db.drop(table) # Create test tables. self.db.create("persons", fields=[ db.primary_key("id"), db.field("name", db.STRING) ]) self.db.create("products", fields=[ db.primary_key("id"), db.field("name", db.STRING), db.field("price", db.FLOAT, default=0.0) ]) self.db.create("orders", fields=[ db.primary_key("id"), db.field("person", db.INTEGER, index=True), db.field("product", db.INTEGER, index=True), ])
def setUp(self): # Delete all tables first for table in list(self.db): self.db.drop(table) # Create test tables. self.db.create("persons", fields=[ db.primary_key("id"), db.field("name", db.STRING), db.field("age", db.INTEGER), db.field("gender", db.INTEGER) ]) self.db.create("gender", fields=[ db.primary_key("id"), db.field("name", db.STRING) ]) # Create test data. self.db.persons.insert(name="john", age="30", gender=2) self.db.persons.insert(name="jack", age="20", gender=2) self.db.persons.insert(name="jane", age="30", gender=1) self.db.gender.insert(name="female") self.db.gender.insert(name="male")