def testRun(self): db = DAL(DEFAULT_URI, check_reserved=['all']) db.define_table('person', Field('name', default="Michael"),Field('uuid')) db.define_table('pet',Field('friend',db.person),Field('name')) dbdict = db.as_dict(flat=True, sanitize=False) assert isinstance(dbdict, dict) uri = dbdict["uri"] assert isinstance(uri, basestring) and uri assert len(dbdict["items"]) == 2 assert len(dbdict["items"]["person"]["items"]) == 3 assert dbdict["items"]["person"]["items"]["name"]["type"] == db.person.name.type assert dbdict["items"]["person"]["items"]["name"]["default"] == db.person.name.default assert dbdict db2 = DAL(dbdict, check_reserved=['all']) assert len(db.tables) == len(db2.tables) assert hasattr(db2, "pet") and isinstance(db2.pet, Table) assert hasattr(db2.pet, "friend") and isinstance(db2.pet.friend, Field) db.pet.drop() db.commit() db2.commit() have_serializers = True try: import serializers dbjson = db.as_json(sanitize=False) assert isinstance(dbjson, basestring) and len(dbjson) > 0 unicode_keys = True if sys.version < "2.6.5": unicode_keys = False db3 = DAL(serializers.loads_json(dbjson, unicode_keys=unicode_keys)) assert hasattr(db3, "person") and hasattr(db3.person, "uuid") and\ db3.person.uuid.type == db.person.uuid.type db3.person.drop() db3.commit() except ImportError: pass mpfc = "Monty Python's Flying Circus" dbdict4 = {"uri": DEFAULT_URI, "items":{"staff":{"items": {"name": {"default":"Michael"}, "food": {"default":"Spam"}, "tvshow": {"type": "reference tvshow"} }}, "tvshow":{"items": {"name": {"default":mpfc}, "rating": {"type":"double"}}}}} db4 = DAL(dbdict4, check_reserved=['all']) assert "staff" in db4.tables assert "name" in db4.staff assert db4.tvshow.rating.type == "double" assert (db4.tvshow.insert(), db4.tvshow.insert(name="Loriot"), db4.tvshow.insert(name="Il Mattatore")) == (1, 2, 3) assert db4(db4.tvshow).select().first().id == 1 assert db4(db4.tvshow).select().first().name == mpfc db4.staff.drop() db4.tvshow.drop() db4.commit() dbdict5 = {"uri": DEFAULT_URI} db5 = DAL(dbdict5, check_reserved=['all']) assert db5.tables in ([], None) assert not (str(db5) in ("", None)) dbdict6 = {"uri": DEFAULT_URI, "items":{"staff":{}, "tvshow":{"items": {"name": {}, "rating": {"type":"double"} } } } } db6 = DAL(dbdict6, check_reserved=['all']) assert len(db6["staff"].fields) == 1 assert "name" in db6["tvshow"].fields assert db6.staff.insert() is not None assert db6(db6.staff).select().first().id == 1 db6.staff.drop() db6.tvshow.drop() db6.commit()
def testRun(self): db = DAL('sqlite:memory:') db.define_table('person', Field('name', default="Michael"),Field('uuid')) db.define_table('pet',Field('friend',db.person),Field('name')) dbdict = db.as_dict(flat=True, sanitize=False) assert isinstance(dbdict, dict) uri = dbdict["uri"] assert isinstance(uri, basestring) and uri assert len(dbdict["items"]) == 2 assert len(dbdict["items"]["person"]["items"]) == 3 assert dbdict["items"]["person"]["items"]["name"]["type"] == db.person.name.type assert dbdict["items"]["person"]["items"]["name"]["default"] == db.person.name.default assert dbdict db2 = DAL(dbdict) assert len(db.tables) == len(db2.tables) assert hasattr(db2, "pet") and isinstance(db2.pet, Table) assert hasattr(db2.pet, "friend") and isinstance(db2.pet.friend, Field) have_serializers = True try: import serializers dbjson = db.as_json(sanitize=False) assert isinstance(dbjson, basestring) and len(dbjson) > 0 db3 = DAL(serializers.loads_json(dbjson)) assert hasattr(db3, "person") and hasattr(db3.person, "uuid") and\ db3.person.uuid.type == db.person.uuid.type db3.pet.drop() db3.person.drop() db3.commit() except ImportError: pass mpfc = "Monty Python's Flying Circus" dbdict4 = {"uri": 'sqlite:memory:', "items":{"staff":{"items": {"name": {"default":"Michael"}, "food": {"default":"Spam"}}}, "show":{"items": {"name": {"default":mpfc}, "rating": {"type":"double"}}}}} db4 = DAL(dbdict4) assert "staff" in db4.tables assert "name" in db4.staff assert db4.show.rating.type == "double" assert db4.show.insert() is not None assert db4(db4.show).select().first().id == 1 assert db4(db4.show).select().first().name == mpfc dbdict5 = {"uri": 'sqlite:memory:'} db5 = DAL(dbdict5) assert db5.tables in ([], None) dbdict6 = {"items":{"staff":{}, "show":{"items": {"name": {}, "rating": {"type":"double"}}}}} db6 = DAL(dbdict6) assert len(db6["staff"].fields) == 1 assert "name" in db6["show"].fields # the following would fail (see issue 1332) # assert db6.staff.insert() is not None # assert db6(db6.staff).select().first().id == 1 dbdict7 = {} db7 = DAL(dbdict7) db7.tables() in (None, []) assert not str(db7) in ("", None) db6.staff.drop() db6.show.drop() db6.commit() db4.staff.drop() db4.show.drop() db4.commit() db2.pet.drop() db2.person.drop() db2.commit() db.pet.drop() db.person.drop() db.commit()
def testRun(self): db = DAL(DEFAULT_URI, check_reserved=['all']) db.define_table('person', Field('name', default="Michael"), Field('uuid')) db.define_table('pet', Field('friend', db.person), Field('name')) dbdict = db.as_dict(flat=True, sanitize=False) assert isinstance(dbdict, dict) uri = dbdict["uri"] assert isinstance(uri, basestring) and uri assert len(dbdict["items"]) == 2 assert len(dbdict["items"]["person"]["items"]) == 3 assert dbdict["items"]["person"]["items"]["name"][ "type"] == db.person.name.type assert dbdict["items"]["person"]["items"]["name"][ "default"] == db.person.name.default assert dbdict db2 = DAL(dbdict, check_reserved=['all']) assert len(db.tables) == len(db2.tables) assert hasattr(db2, "pet") and isinstance(db2.pet, Table) assert hasattr(db2.pet, "friend") and isinstance(db2.pet.friend, Field) db.pet.drop() db.commit() db2.commit() have_serializers = True try: import serializers dbjson = db.as_json(sanitize=False) assert isinstance(dbjson, basestring) and len(dbjson) > 0 unicode_keys = True if sys.version < "2.6.5": unicode_keys = False db3 = DAL(serializers.loads_json(dbjson, unicode_keys=unicode_keys)) assert hasattr(db3, "person") and hasattr(db3.person, "uuid") and\ db3.person.uuid.type == db.person.uuid.type db3.person.drop() db3.commit() except ImportError: pass mpfc = "Monty Python's Flying Circus" dbdict4 = { "uri": DEFAULT_URI, "items": { "staff": { "items": { "name": { "default": "Michael" }, "food": { "default": "Spam" }, "tvshow": { "type": "reference tvshow" } } }, "tvshow": { "items": { "name": { "default": mpfc }, "rating": { "type": "double" } } } } } db4 = DAL(dbdict4, check_reserved=['all']) assert "staff" in db4.tables assert "name" in db4.staff assert db4.tvshow.rating.type == "double" assert (db4.tvshow.insert(), db4.tvshow.insert(name="Loriot"), db4.tvshow.insert(name="Il Mattatore")) == (1, 2, 3) assert db4(db4.tvshow).select().first().id == 1 assert db4(db4.tvshow).select().first().name == mpfc db4.staff.drop() db4.tvshow.drop() db4.commit() dbdict5 = {"uri": DEFAULT_URI} db5 = DAL(dbdict5, check_reserved=['all']) assert db5.tables in ([], None) assert not (str(db5) in ("", None)) dbdict6 = { "uri": DEFAULT_URI, "items": { "staff": {}, "tvshow": { "items": { "name": {}, "rating": { "type": "double" } } } } } db6 = DAL(dbdict6, check_reserved=['all']) assert len(db6["staff"].fields) == 1 assert "name" in db6["tvshow"].fields assert db6.staff.insert() is not None assert db6(db6.staff).select().first().id == 1 db6.staff.drop() db6.tvshow.drop() db6.commit()
def testRun(self): db = DAL("sqlite:memory:") db.define_table("person", Field("name", default="Michael"), Field("uuid")) db.define_table("pet", Field("friend", db.person), Field("name")) dbdict = db.as_dict(flat=True, sanitize=False) assert isinstance(dbdict, dict) uri = dbdict["uri"] assert isinstance(uri, basestring) and uri assert len(dbdict["items"]) == 2 assert len(dbdict["items"]["person"]["items"]) == 3 assert dbdict["items"]["person"]["items"]["name"]["type"] == db.person.name.type assert dbdict["items"]["person"]["items"]["name"]["default"] == db.person.name.default assert dbdict db2 = DAL(dbdict) assert len(db.tables) == len(db2.tables) assert hasattr(db2, "pet") and isinstance(db2.pet, Table) assert hasattr(db2.pet, "friend") and isinstance(db2.pet.friend, Field) have_serializers = True try: import serializers dbjson = db.as_json(sanitize=False) assert isinstance(dbjson, basestring) and len(dbjson) > 0 db3 = DAL(serializers.loads_json(dbjson)) assert ( hasattr(db3, "person") and hasattr(db3.person, "uuid") and db3.person.uuid.type == db.person.uuid.type ) db3.pet.drop() db3.person.drop() db3.commit() except ImportError: pass mpfc = "Monty Python's Flying Circus" dbdict4 = { "uri": "sqlite:memory:", "items": { "staff": { "items": { "name": {"default": "Michael"}, "food": {"default": "Spam"}, "show": {"type": "reference show"}, } }, "show": {"items": {"name": {"default": mpfc}, "rating": {"type": "double"}}}, }, } db4 = DAL(dbdict4) assert "staff" in db4.tables assert "name" in db4.staff assert db4.show.rating.type == "double" assert (db4.show.insert(), db4.show.insert(name="Loriot"), db4.show.insert(name="Il Mattatore")) == (1, 2, 3) assert db4(db4.show).select().first().id == 1 assert db4(db4.show).select().first().name == mpfc dbdict5 = {"uri": "sqlite:memory:"} db5 = DAL(dbdict5) assert db5.tables in ([], None) assert not (str(db5) in ("", None)) dbdict6 = { "uri": "sqlite:memory:", "items": {"staff": {}, "show": {"items": {"name": {}, "rating": {"type": "double"}}}}, } db6 = DAL(dbdict6) assert len(db6["staff"].fields) == 1 assert "name" in db6["show"].fields assert db6.staff.insert() is not None assert db6(db6.staff).select().first().id == 1 db6.staff.drop() db6.show.drop() db6.commit() db4.staff.drop() db4.show.drop() db4.commit() db2.pet.drop() db2.person.drop() db2.commit() db.pet.drop() db.person.drop() db.commit()