Пример #1
0
    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'}
        ])
Пример #2
0
    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()))