def test_delete(self): self.create_test_models() resp = self.post_to('/api/cmodel/%s/delete/' % self.c2.id, {}) self.assertEqual(json.loads(resp.data), {'deleted': 1}) self.assertEqual(CModel.select().count(), 1) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 2) resp = self.post_to('/api/amodel/%s/delete/' % self.a1.id, {}) self.assertEqual(json.loads(resp.data), {'deleted': 1}) self.assertEqual(CModel.select().count(), 0) self.assertEqual(BModel.select().count(), 1) self.assertEqual(AModel.select().count(), 1) resp = self.post_to('/api/emodel/%s/delete/' % self.e1.id, {}) self.assertEqual(json.loads(resp.data), {'deleted': 1}) self.assertEqual(EModel.select().count(), 1) self.assertEqual(FModel.select().count(), 2) f_obj = FModel.get(id=self.f1.id) self.assertEqual(f_obj.e, None)
def test_resource_edit_by_fk(self): self.create_test_models() # b model resp = self.post_to('/api/bmodel/%s/' % self.b2.id, {'a': self.a1.id}) self.assertEqual(resp.status_code, 200) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 2) b_obj = BModel.get(id=self.b2.id) a_obj = AModel.get(id=self.a1.id) self.assertEqual(b_obj.a, a_obj) self.assertEqual(json.loads(resp.data), { 'id': b_obj.id, 'b_field': 'b2', 'a': { 'id': a_obj.id, 'a_field': 'a1', }, }) # f model resp = self.post_to('/api/fmodel/%s/' % self.f2.id, {'e': self.e2.id}) self.assertEqual(resp.status_code, 200) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 2) f_obj = FModel.get(id=self.f2.id) e_obj = EModel.get(id=self.e2.id) self.assertEqual(f_obj.e, e_obj) self.assertEqual(json.loads(resp.data), { 'id': f_obj.id, 'f_field': 'f2', 'e': { 'id': e_obj.id, 'e_field': 'e2', }, })
def test_resources_edit(self): self.create_test_models() # a resp = self.post_to('/api/amodel/%s/' % self.a2.id, {'a_field': 'a2-xxx'}) self.assertEqual(resp.status_code, 200) self.assertEqual(AModel.select().count(), 2) a_obj = AModel.get(id=self.a2.id) self.assertEqual(json.loads(resp.data), { 'id': self.a2.id, 'a_field': 'a2-xxx', }) # b resp = self.post_to('/api/bmodel/%s/' % self.b2.id, {'b_field': 'b2-yyy', 'a': {'a_field': 'a2-yyy'}}) self.assertEqual(resp.status_code, 200) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 2) b_obj = BModel.get(id=self.b2.id) a_obj = AModel.get(id=self.a2.id) self.assertEqual(b_obj.a, a_obj) self.assertEqual(json.loads(resp.data), { 'id': b_obj.id, 'b_field': 'b2-yyy', 'a': { 'id': a_obj.id, 'a_field': 'a2-yyy', }, }) # c resp = self.post_to('/api/cmodel/%s/' % self.c2.id, {'c_field': 'c2-zzz', 'b': {'b_field': 'b2-zzz', 'a': {'a_field': 'a2-zzz'}}}) self.assertEqual(resp.status_code, 200) self.assertEqual(CModel.select().count(), 2) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 2) c_obj = CModel.get(id=self.c2.id) b_obj = BModel.get(id=self.b2.id) a_obj = AModel.get(id=self.a2.id) self.assertEqual(c_obj.b, b_obj) self.assertEqual(b_obj.a, a_obj) self.assertEqual(json.loads(resp.data), { 'id': c_obj.id, 'c_field': 'c2-zzz', 'b': { 'id': b_obj.id, 'b_field': 'b2-zzz', 'a': { 'id': a_obj.id, 'a_field': 'a2-zzz', }, }, }) # f resp = self.post_to('/api/fmodel/%s/' % self.f1.id, {'f_field': 'f1-yyy', 'e': {'e_field': 'e1-yyy'}}) self.assertEqual(resp.status_code, 200) self.assertEqual(FModel.select().count(), 2) self.assertEqual(EModel.select().count(), 2) f_obj = FModel.get(id=self.f1.id) e_obj = EModel.get(id=self.e1.id) self.assertEqual(f_obj.e, e_obj) self.assertEqual(json.loads(resp.data), { 'id': f_obj.id, 'f_field': 'f1-yyy', 'e': { 'id': e_obj.id, 'e_field': 'e1-yyy', }, }) resp = self.post_to('/api/fmodel/%s/' % self.f2.id, {'f_field': 'f2-yyy'}) self.assertEqual(resp.status_code, 200) self.assertEqual(FModel.select().count(), 2) self.assertEqual(EModel.select().count(), 2) f_obj = FModel.get(id=self.f2.id) self.assertEqual(f_obj.e, None) self.assertEqual(json.loads(resp.data), { 'id': f_obj.id, 'f_field': 'f2-yyy', 'e': None, })
def test_resources_create(self): # a model resp = self.post_to('/api/amodel/', {'a_field': 'ax'}) self.assertEqual(resp.status_code, 200) self.assertEqual(AModel.select().count(), 1) a_obj = AModel.get(a_field='ax') self.assertEqual(json.loads(resp.data), { 'id': a_obj.id, 'a_field': 'ax', }) # b model resp = self.post_to('/api/bmodel/', {'b_field': 'by', 'a': {'a_field': 'ay'}}) self.assertEqual(resp.status_code, 200) self.assertEqual(BModel.select().count(), 1) self.assertEqual(AModel.select().count(), 2) b_obj = BModel.get(b_field='by') a_obj = AModel.get(a_field='ay') self.assertEqual(b_obj.a, a_obj) self.assertEqual(json.loads(resp.data), { 'id': b_obj.id, 'b_field': 'by', 'a': { 'id': a_obj.id, 'a_field': 'ay', }, }) # c model resp = self.post_to('/api/cmodel/', {'c_field': 'cz', 'b': {'b_field': 'bz', 'a': {'a_field': 'az'}}}) self.assertEqual(resp.status_code, 200) self.assertEqual(CModel.select().count(), 1) self.assertEqual(BModel.select().count(), 2) self.assertEqual(AModel.select().count(), 3) c_obj = CModel.get(c_field='cz') b_obj = BModel.get(b_field='bz') a_obj = AModel.get(a_field='az') self.assertEqual(c_obj.b, b_obj) self.assertEqual(b_obj.a, a_obj) self.assertEqual(json.loads(resp.data), { 'id': c_obj.id, 'c_field': 'cz', 'b': { 'id': b_obj.id, 'b_field': 'bz', 'a': { 'id': a_obj.id, 'a_field': 'az', }, }, }) # f model resp = self.post_to('/api/fmodel/', {'f_field': 'fy', 'e': {'e_field': 'ey'}}) self.assertEqual(resp.status_code, 200) self.assertEqual(FModel.select().count(), 1) self.assertEqual(EModel.select().count(), 1) f_obj = FModel.get(f_field='fy') e_obj = EModel.get(e_field='ey') self.assertEqual(f_obj.e, e_obj) self.assertEqual(json.loads(resp.data), { 'id': f_obj.id, 'f_field': 'fy', 'e': { 'id': e_obj.id, 'e_field': 'ey', }, }) resp = self.post_to('/api/fmodel/', {'f_field': 'fz'}) self.assertEqual(resp.status_code, 200) self.assertEqual(FModel.select().count(), 2) self.assertEqual(EModel.select().count(), 1) f_obj = FModel.get(f_field='fz') self.assertEqual(f_obj.e, None) self.assertEqual(json.loads(resp.data), { 'id': f_obj.id, 'f_field': 'fz', 'e': None, })