예제 #1
0
 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()"
예제 #2
0
파일: test_db.py 프로젝트: sp00/pattern
 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()"
예제 #3
0
파일: test_db.py 프로젝트: sp00/pattern
 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),
     ])
예제 #4
0
 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()")
예제 #5
0
파일: test_db.py 프로젝트: sp00/pattern
 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")
예제 #6
0
파일: test_db.py 프로젝트: pri-k/pattern
    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),
        ])
예제 #7
0
파일: test_db.py 프로젝트: clips/pattern
    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),
        ])
예제 #8
0
파일: test_db.py 프로젝트: pri-k/pattern
    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")
예제 #9
0
파일: test_db.py 프로젝트: clips/pattern
    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")