def test_api_entity(self): # TODO: test api refetch after api was modified/deleted test_doc = Document.by_property( 'name', u'Заявление о регистрации по месту жительства, форма №6') response = self.testapp.get('/admin/api/entities/' + test_doc.urlsafe()) self.assertEqual(response.status_int, 200) response_obj = json.loads(response.body) self.assertAllIn(response_obj['choices'].keys(), ['COUNT_METHOD', 'ORIGINAL_SUPPLY_TYPE']) self.assertEqual(response_obj['kind'], u'Документ') self.assertEqual(response_obj['kind_plural'], u'Документы') self.assertEqual( response_obj['label'], u'Заявление о регистрации по месту жительства, форма №6') self.assertAllIn(response_obj['fields'], [ {'name': 'id', 'type': 'int', 'label': u'ID', 'value': 8}, {'name': 'name', 'type': 'plain', 'label': u'Название', 'value': u'Заявление о регистрации по месту жительства, форма №6'}, {'name': 'description', 'type': 'rich', 'label': u'Условия предоставления', 'value': u'Форма заявления предоставляется консультантом МФЦ.'}, {'name': 'o_count_method', 'type': 'enum', 'label': u'Метод подсчета оригиналов', 'value': 'per_service'}, {'name': 'c_count_method', 'type': 'enum', 'label': u'Метод подсчета копий', 'value': 'per_service'}, {'name': 'n_originals', 'type': 'int', 'label': u'Количество оригиналов', 'value': 1}, {'name': 'n_copies', 'type': 'int', 'label': u'Количество копий', 'value': 0}, {'name': 'o_supply_type', 'type': 'enum', 'label': u'Возвращается ли оригинал заявителю?', 'value': 'no_return'}, {'name': 'is_a_paper_document', 'type': 'bool', 'label': u'Это физический документ?', 'value': True}, {'name': 'doc_class', 'type': 'ref', 'label': u'Класс документа', 'value': u'Заявления', 'kind': 'DocClass'} ])
def test_delete_entity_cascade(self): # TODO: test erroneous cascade delete of entities, that are referenced # as a required property. initial_dts_count = [ {'service': s, 'count': len( s.backref_query('DocumentToService', 'service').fetch())} for s in Service.query().fetch() ] # == Testing cascade delete of references == test_mfc = MFC.by_property('name', u'МФЦ г. Нюрба') testmfc_urlsafe = test_mfc.urlsafe() self.testapp.delete('/admin/api/entities/' + testmfc_urlsafe) # Only one MFC entity is left. self.assertEqual(len(MFC.query().fetch()), 1) # Only one MFC entity is now referenced by the sole kompleks in test # data. kompleks = Kompleks.by_property('name', u'Рождение ребенка') self.assertEqual(len(kompleks.mfcs), 1) # == Testing cascade delete of linked DocumentToService entities == test_doc = Document.by_property( 'name', u'Документ, удостоверяющий личность заявителя') testdoc_urlsafe = test_doc.urlsafe() self.testapp.delete('/admin/api/entities/' + testdoc_urlsafe) # All DocumentToService entities linked to the deleted document are gone # as well. for item in initial_dts_count: s = item['service'] self.assertEqual( item['count'] - 1, len(s.backref_query('DocumentToService', 'service').fetch()))