def test_beforeDelete(self): User.beforeDelete = lambda user: False u = yield User().save() oldid = u.id yield u.delete() result = yield User.find(oldid) self.assertEqual(result, u) User.beforeDelete = lambda user: True yield u.delete() result = yield User.find(oldid) self.assertEqual(result, None) # restore user's beforeDelete User.beforeDelete = DBObject.beforeDelete
def test_find(self): ids = [] for _ in range(3): user = yield User(first_name="blah").save() ids.append(user.id) yield User(first_name="not blah").save() results = yield User.find(where=["first_name = ?", "blah"]) resultids = [result.id for result in results] self.assertEqual(ids, resultids)
def test_afterInit(self): def afterInit(user): user.blah = "foobar" User.afterInit = afterInit u = yield User.find(limit=1) self.assertTrue(hasattr(u, 'blah')) self.assertEqual(u.blah, 'foobar') # restore user's afterInit User.afterInit = DBObject.afterInit
def test_update(self): args = {'first_name': "a", "last_name": "b", "age": 10} u = yield User(**args).save() args = {'first_name': "b", "last_name": "a", "age": 100} for key, value in args.items(): setattr(u, key, value) yield u.save() u = yield User.find(u.id) for key, value in args.items(): self.assertEqual(getattr(u, key), value)
def test_insert(self): tablename = User.tablename() args = {'first_name': "test", "last_name": "foo", "age": 91} id = yield self.dbconfig.insert(tablename, args) where = ['first_name = ? AND last_name = ? AND age = ?'] where = where + ["test", "foo", 91] users = yield User.find(where=where) self.assertEqual(len(users), 1) self.assertEqual(users[0].id, id) for key, value in args.items(): self.assertEqual(value, getattr(users[0], key))
def test_update_obj(self): args = {'first_name': "test_insert_obj", "last_name": "foo", "age": 91} user = yield User(**args).save() args = {'first_name': "test_insert_obj_foo", "last_name": "bar", "age": 191} for key, value in args.items(): setattr(user, key, value) yield self.dbconfig.updateObj(user) user = yield User.find(user.id) for key, value in args.items(): self.assertEqual(value, getattr(user, key))
def test_insert_obj(self): args = {'first_name': "test_insert_obj", "last_name": "foo", "age": 91} user = User(**args) saved = yield self.dbconfig.insertObj(user) user = yield User.find(where=['first_name = ?', "test_insert_obj"], limit=1) # ensure that id was set on save self.assertEqual(saved.id, user.id) # and all values are still the same self.assertEqual(saved, user) for key, value in args.items(): self.assertEqual(value, getattr(user, key))
def test_insert_many(self): tablename = User.tablename() args = [] for counter in range(10): args.append({'first_name': "test_insert_many", "last_name": "foo", "age": counter}) yield self.dbconfig.insertMany(tablename, args) users = yield User.find(where=['first_name = ?', "test_insert_many"], orderby="age ASC") for counter in range(10): for key, value in args[counter].items(): self.assertEqual(value, getattr(users[counter], key))
def test_loadRelations(self): user = yield User.find(limit=1) all = yield user.loadRelations() pictures = yield user.pictures.get() self.assertEqual(pictures, all['pictures']) avatar = yield user.avatar.get() self.assertEqual(avatar, all['avatar']) suball = yield user.loadRelations('pictures') self.assertTrue('avatar' not in suball) self.assertEqual(pictures, suball['pictures'])
def test_clear_has_many(self): pics = [self.picture] for _ in range(3): pic = yield Picture(name="a pic").save() pics.append(pic) yield self.user.pictures.set(pics) yield self.user.pictures.clear() userpics = yield self.user.pictures.get() self.assertEqual(userpics, []) # even go so far as to refetch user yield User.find(self.user.id) userpics = yield self.user.pictures.get() self.assertEqual(userpics, []) # picture records should be updated pics = yield Picture.find(where=["user_id=?", self.user.id]) self.assertEqual(pics, []) # but still exist pics = yield Picture.all() self.assertEqual(len(pics), 4)
def test_delete(self): u = yield User().save() oldid = u.id yield u.delete() result = yield User.find(oldid) self.assertEqual(result, None)