def _create_models(self, db, count=5): mdls = [] for i in range(count): m = models.SimpleModel({"title": str(i / 2 + i % 2), "secret": str(i)}) yield m.save(db) mdls.append(m) raise gen.Return(mdls)
def test_remove_query(self): for i in range(3): sm = models.SimpleModel(dict(title=str(i))) yield sm.save(self.db) yield models.SimpleModel.objects.set_db(self.db).remove( {"title": {"$in": ['0', '1']}}) sm_db = yield models.SimpleModel.objects.set_db(self.db).all() self.assertEqual(len(sm_db), 1) self.assertEqual(sm.pk, sm_db[0].pk)
def test_generic_all(self): # create models sm = models.SimpleModel({"title": "Test model", "secret": 'abbcc123'}) yield sm.save(self.db) t1 = models.Transaction(dict(title="yandex", item=sm)) yield t1.save(self.db) um = models.User(dict(name="Igor", age=15)) yield um.save(self.db) t2 = models.Transaction(dict(title="webmoney", item=um)) yield t2.save(self.db) # get them from db tns = yield models.Transaction.objects.set_db(self.db).all() tns.sort(key=lambda x: x.title) t1_db = tns[1] t2_db = tns[0] self.assertEqual(t1_db.title, t1.title) self.assertEqual(t1_db.item, sm.pk) self.assertEqual(t2_db.title, t2.title) self.assertEqual(t2_db.item, um.pk) # it is possible to save object, got from database yield t1_db.save(self.db)
def test_generic_model_save_and_get(self): # store models.SimpleModel in generic ref field sm = models.SimpleModel({"title": "Test model", "secret": 'abbcc123'}) yield sm.save(self.db) t = models.Transaction(dict(title="yandex", item=sm)) yield t.save(self.db) t_from_db = yield models.Transaction.objects.set_db(self.db).get({"id": t.pk}) self.assertEqual(t_from_db.item, sm.pk) # try to save object, got from database t_from_db.title = "webmoney" yield t_from_db.save(self.db) t_from_db_1 = yield models.Transaction.objects.set_db(self.db).get({"id": t.pk}) self.assertEqual(t_from_db_1.title, "webmoney") self.assertEqual(t_from_db_1.item, sm.pk) # replace value of generic ref field with another model class um = models.User(dict(name="Igor", age=15)) yield um.save(self.db) t_from_db_1.item = um yield t_from_db_1.save(self.db) t_from_db_2 = yield models.Transaction.objects.set_db(self.db).get({"id": t.pk}) self.assertEqual(t_from_db_2.pk, t.pk) self.assertEqual(t_from_db_2.item, um.pk)
def test_get_by_pk(self): m = models.SimpleModel() yield m.save(self.db) m_from_db = yield models.SimpleModel.objects.set_db(self.db).get({"pk": m.pk}) self.assertEqual(m.pk, m_from_db.pk)
def test_remove_single_object(self): sm = models.SimpleModel() yield sm.save(self.db) yield sm.remove(self.db) sm_db = yield models.SimpleModel.objects.set_db(self.db).all() self.assertEqual(len(sm_db), 0)
def test_save_and_get(self): secret = 'abbcc123' m = models.SimpleModel({"title": "Test model", "secret": secret}) yield m.save(self.db) m_from_db = yield models.SimpleModel.objects.set_db(self.db).get({"title": "Test model"}) self.assertEqual(m.secret, m_from_db.secret)