Ejemplo n.º 1
0
 def setUp(self):
     try:
         get_db().delete_doc("INDICATOR_CONFIGURATION")
     except ResourceNotFound:
         pass
     get_db().save_doc(
         {
             "_id": "INDICATOR_CONFIGURATION",
             "namespaces": {INDICATOR_TEST_DOMAIN: [[INDICATOR_TEST_NAMESPACE, "INDICATOR TEST Namespace"]]},
         }
     )
     self.form_pillow = MVPFormIndicatorPillow()
     self.case_pillow = MVPCaseIndicatorPillow()
Ejemplo n.º 2
0
 def setUpClass(cls):
     try:
         get_db().delete_doc('INDICATOR_CONFIGURATION')
     except ResourceNotFound:
         pass
     get_db().save_doc({
         '_id': 'INDICATOR_CONFIGURATION',
         'namespaces': {
             INDICATOR_TEST_DOMAIN: [
                 [
                     INDICATOR_TEST_NAMESPACE,
                     "INDICATOR TEST Namespace",
                 ],
             ],
         }
     })
     cls.form_pillow = MVPFormIndicatorPillow()
     cls.case_pillow = MVPCaseIndicatorPillow()
Ejemplo n.º 3
0
        def _test():
            form, case = _save_form_and_case()
            MVPCaseIndicatorPillow().change_transform(case.to_json())
            updated_form = IndicatorXForm.get(form._id)
            computed = updated_form.computed_['mvp_indicators']
            self.assertEqual(29, len(computed))
            self.assertEqual('child_visit_form',
                             computed['child_visit_form']['value'])

            MVPFormIndicatorPillow().change_transform(form.to_json())
            updated_form = IndicatorXForm.get(form._id)
            updated_computed = updated_form.computed_['mvp_indicators']
            self.assertEqual(29, len(updated_computed))
            self.assertEqual('child_visit_form',
                             updated_computed['child_visit_form']['value'])

            # cleanup
            updated_form.delete()
            form.delete()
            case.delete()
Ejemplo n.º 4
0
class IndicatorPillowTests(TestCase):
    def setUp(self):
        try:
            get_db().delete_doc("INDICATOR_CONFIGURATION")
        except ResourceNotFound:
            pass
        get_db().save_doc(
            {
                "_id": "INDICATOR_CONFIGURATION",
                "namespaces": {INDICATOR_TEST_DOMAIN: [[INDICATOR_TEST_NAMESPACE, "INDICATOR TEST Namespace"]]},
            }
        )
        self.form_pillow = MVPFormIndicatorPillow()
        self.case_pillow = MVPCaseIndicatorPillow()

    def _get_doc_data(self, docname):
        file_path = os.path.join(os.path.dirname(__file__), "data", docname)
        with open(file_path, "rb") as f:
            return json.loads(f.read())

    def _save_doc_to_db(self, docname, doc_class):
        doc_dict = self._get_doc_data(docname)
        try:
            doc_instance = doc_class.wrap(doc_dict)
            doc_instance.save()
        except ResourceConflict:
            doc_instance = doc_class.get(doc_dict["_id"])
            doc_instance._doc.update(doc_dict)
        return doc_dict["_id"]

    def test_form_pillow_indicators(self):
        form_id = self._save_doc_to_db("indicator_form.json", XFormInstance)
        form_instance = XFormInstance.get(form_id)

        # Form Label Indicator
        form_label = FormLabelIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="create_form",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        form_label.save()

        # Form Alias
        form_alias = FormDataAliasIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="club_name",
            question_id="location.club",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        form_alias.save()

        self.form_pillow.run_burst()

        indicator_form = IndicatorXForm.get(form_id)
        self.assertNotEqual(indicator_form.get_db().dbname, form_instance.get_db().dbname)
        self.assertNotEqual(indicator_form.computed_, {})

    def test_case_pillow_indicators(self):
        self._save_doc_to_db("indicator_form.json", XFormInstance)
        case_id = self._save_doc_to_db("indicator_case.json", CommCareCase)
        case_instance = CommCareCase.get(case_id)

        # FormDataInCaseIndicatorDef (For those forgotten properties)
        forgotten_property = FormDataInCaseIndicatorDefinition.increment_or_create_unique(
            INDICATOR_TEST_NAMESPACE,
            INDICATOR_TEST_DOMAIN,
            slug="club_name",
            question_id="location.club",
            case_type="song_tag",
            xmlns="http://openrosa.org/formdesigner/indicator-create-xmlns",
        )
        forgotten_property.save()

        self.case_pillow.run_burst()

        indicator_case = IndicatorCase.get(case_id)

        self.assertEqual(indicator_case.get_id, case_instance.get_id)
        self.assertNotEqual(indicator_case.get_db().dbname, case_instance.get_db().dbname)
        self.assertNotEqual(indicator_case.computed_, {})