Example #1
0
    def test_basic_edit(self):
        original_xml = self.get_xml('original')
        edit_xml = self.get_xml('edit')

        xform = post_xform(original_xml, domain=self.domain)

        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("", xform.form_data['vitals']['height'])
        self.assertEqual("other", xform.form_data['assessment']['categories'])

        xform = post_xform(edit_xml, domain=self.domain)
        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("100", xform.form_data['vitals']['height'])
        self.assertEqual("Edited Baby!",
                         xform.form_data['assessment']['categories'])

        deprecated_xform = self.formdb.get_form(xform.deprecated_form_id)

        self.assertEqual(self.ID, deprecated_xform.orig_id)
        self.assertNotEqual(self.ID, deprecated_xform.form_id)
        self.assertTrue(deprecated_xform.is_deprecated)
        self.assertEqual("", deprecated_xform.form_data['vitals']['height'])
        self.assertEqual(
            "other", deprecated_xform.form_data['assessment']['categories'])

        self.assertEqual(xform.received_on, deprecated_xform.received_on)
        self.assertEqual(xform.deprecated_form_id, deprecated_xform.form_id)
        self.assertTrue(xform.edited_on > deprecated_xform.received_on)

        self.assertEqual(deprecated_xform.get_xml(), original_xml)
        self.assertEqual(xform.get_xml(), edit_xml)
Example #2
0
    def test_basic_edit(self):
        original_xml = self.get_xml('original')
        edit_xml = self.get_xml('edit')

        xform = post_xform(original_xml, domain=self.domain)

        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("", xform.form_data['vitals']['height'])
        self.assertEqual("other", xform.form_data['assessment']['categories'])

        xform = post_xform(edit_xml, domain=self.domain)
        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("100", xform.form_data['vitals']['height'])
        self.assertEqual("Edited Baby!", xform.form_data['assessment']['categories'])

        deprecated_xform = self.formdb.get_form(xform.deprecated_form_id)

        self.assertEqual(self.ID, deprecated_xform.orig_id)
        self.assertNotEqual(self.ID, deprecated_xform.form_id)
        self.assertTrue(deprecated_xform.is_deprecated)
        self.assertEqual("", deprecated_xform.form_data['vitals']['height'])
        self.assertEqual("other", deprecated_xform.form_data['assessment']['categories'])

        self.assertEqual(xform.received_on, deprecated_xform.received_on)
        self.assertEqual(xform.deprecated_form_id, deprecated_xform.form_id)
        self.assertTrue(xform.edited_on > deprecated_xform.received_on)

        self.assertEqual(
            deprecated_xform.get_xml(),
            original_xml
        )
        self.assertEqual(xform.get_xml(), edit_xml)
Example #3
0
    def test_basic_duplicate(self):
        xml_data = self.get_xml('duplicate')
        xform = post_xform(xml_data)
        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("test-domain", xform.domain)

        xform = post_xform(xml_data, domain='test-domain')
        self.assertNotEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_duplicate)
        self.assertTrue(self.ID in xform.problem)
Example #4
0
    def test_basic_duplicate(self):
        xml_data = self.get_xml('duplicate')
        xform = post_xform(xml_data)
        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("test-domain", xform.domain)

        xform = post_xform(xml_data, domain='test-domain')
        self.assertNotEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_duplicate)
        self.assertTrue(self.ID in xform.problem)
        if settings.TESTS_SHOULD_USE_SQL_BACKEND:
            self.assertEqual(self.ID, xform.orig_id)
Example #5
0
    def test_basic_duplicate(self):
        xml_data = self.get_xml('duplicate')
        xform = post_xform(xml_data)
        self.assertEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_normal)
        self.assertEqual("test-domain", xform.domain)

        xform = post_xform(xml_data, domain='test-domain')
        self.assertNotEqual(self.ID, xform.form_id)
        self.assertTrue(xform.is_duplicate)
        self.assertTrue(self.ID in xform.problem)
        if settings.TESTS_SHOULD_USE_SQL_BACKEND:
            self.assertEqual(self.ID, xform.orig_id)
Example #6
0
    def test_gps_location(self):
        xml_data = self.get_xml('gps_location', override_path=('data', ))

        xform = post_xform(xml_data)

        self.assertEqual(
            xform.metadata.location,
            # '42.3739063 -71.1109113 0.0 886.0'
            GeoPoint(
                latitude=Decimal('42.3739063'),
                longitude=Decimal('-71.1109113'),
                altitude=Decimal('0.0'),
                accuracy=Decimal('886.0'),
            ))

        result = {
            'username': u'*****@*****.**',
            'doc_type': 'Metadata',
            'instanceID': u'5d3d01561f584e85b53669a48bfc6039',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': '42.3739063 -71.1109113 0.0 886.0',
        }
        self._check_metadata(xform, result)
Example #7
0
    def testClosed(self):
        xml_data = self.get_xml('meta')
        xform = post_xform(xml_data)

        self.assertNotEqual(None, xform.metadata)
        self.assertEqual(date(2010, 07, 22), xform.metadata.timeStart.date())
        self.assertEqual(date(2010, 07, 23), xform.metadata.timeEnd.date())
        self.assertEqual("admin", xform.metadata.username)
        self.assertEqual("f7f0c79e-8b79-11df-b7de-005056c00008",
                         xform.metadata.userID)
        self.assertEqual("v1.2.3 (biz bazzle)", xform.metadata.appVersion)
        result = {
            'username': u'admin',
            'doc_type': 'Metadata',
            'instanceID': None,
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2010-07-23T13:55:11.648000Z',
            'appVersion': u'v1.2.3 (biz bazzle)',
            'timeStart': '2010-07-22T13:54:27.971000Z',
            'deprecatedID': None,
            'deviceID': None,
            'clinic_id': u'5020280',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #8
0
    def test_gps_location(self):
        xml_data = self.get_xml('gps_location', override_path=('data',))

        xform = post_xform(xml_data)

        self.assertEqual(
            xform.metadata.location,
            # '42.3739063 -71.1109113 0.0 886.0'
            GeoPoint(
                latitude=Decimal('42.3739063'),
                longitude=Decimal('-71.1109113'),
                altitude=Decimal('0.0'),
                accuracy=Decimal('886.0'),
            )
        )

        result = {
            'username': u'*****@*****.**',
            'doc_type': 'Metadata',
            'instanceID': u'5d3d01561f584e85b53669a48bfc6039',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': '42.3739063 -71.1109113 0.0 886.0',
        }
        self._check_metadata(xform, result)
Example #9
0
    def test_empty_gps_location(self):
        xml_data = self.get_xml('gps_empty_location', override_path=('data', ))
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.location, None)

        self.assertEqual(xform.metadata.to_json()['location'], None)
Example #10
0
    def test_empty_gps_location(self):
        xml_data = self.get_xml('gps_empty_location', override_path=('data',))
        xform = post_xform(xml_data)

        self.assertEqual(
            xform.metadata.location,
            None
        )

        self.assertEqual(xform.metadata.to_json()['location'], None)
Example #11
0
    def test_various_encodings(self):
        tests = (("utf-8", u"हिन्दी चट्टानों"), ("UTF-8", u"हिन्दी चट्टानों"), ("ASCII", "hello"))
        xml_template = self.get_xml("encoding")

        for encoding, value in tests:
            xml_data = xml_template.format(
                encoding=encoding, form_id=uuid.uuid4().hex, sample_value=value.encode(encoding)
            )
            xform = post_xform(xml_data)
            self.assertEqual(value, xform.form_data["test"])
            elem = xform.get_xml_element()
            self.assertEqual(value, elem.find("{http://commcarehq.org/couchforms-tests}test").text)
Example #12
0
    def _test(self, name, any_id_ok=False, tz_differs=False):
        instance = self.get_xml(name)
        expected = self.get_json(self._get_expected_name(name, tz_differs))

        xform = post_xform(instance)
        xform_json = json.loads(json.dumps(xform.to_json()))

        if getattr(settings, 'TESTS_SHOULD_USE_SQL_BACKEND', False):
            expected, xform_json = self._process_sql_json(expected, xform_json, any_id_ok)
        else:
            expected, xform_json = self._process_couch_json(expected, xform_json, any_id_ok)

        self.assertDictEqual(xform_json, expected)
    def testClosed(self):
        xml_data = self.get_xml("namespaces")
        xform = post_xform(xml_data)

        self.assertEqual("http://commcarehq.org/test/ns", xform.xmlns)
        self._assert_xmlns("no namespace here", xform, "form/empty")
        self._assert_xmlns("http://commcarehq.org/test/flatns", xform, "form/flat", True)
        self._assert_xmlns("http://commcarehq.org/test/parent", xform, "form/parent", True)
        self._assert_xmlns("cwo", xform, "form/parent/childwithout")
        self._assert_xmlns("http://commcarehq.org/test/child1", xform, "form/parent/childwith", True)
        self._assert_xmlns("http://commcarehq.org/test/child2", xform, "form/parent/childwithelement", True)
        self._assert_xmlns("gc", xform, "form/parent/childwithelement/grandchild")
        self._assert_xmlns("lcwo", xform, "form/parent/lastchildwithout")
        self._assert_xmlns("nothing here either", xform, "form/lastempty")
Example #14
0
    def _test(self, name, any_id_ok=False, tz_differs=False):
        instance = self.get_xml(name)
        expected = self.get_json(self._get_expected_name(name, tz_differs))

        xform = post_xform(instance)
        xform_json = json.loads(json.dumps(xform.to_json()))

        if getattr(settings, 'TESTS_SHOULD_USE_SQL_BACKEND', False):
            expected, xform_json = self._process_sql_json(
                expected, xform_json, any_id_ok)
        else:
            expected, xform_json = self._process_couch_json(
                expected, xform_json, any_id_ok)

        self.assertDictEqual(xform_json, expected)
Example #15
0
    def testMetaBadUsername(self):
        xml_data = self.get_xml('meta_bad_username')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'2013-07-19',
            'doc_type': 'Metadata',
            'instanceID': u'e8afaec3c66745ef80e48062d4b91b56',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #16
0
    def test_various_encodings(self):
        tests = (
            ('utf-8', u'हिन्दी चट्टानों'),
            ('UTF-8', u'हिन्दी चट्टानों'),
            ('ASCII', 'hello'),
        )
        xml_template = self.get_xml('encoding')

        for encoding, value in tests:
            xml_data = xml_template.format(
                encoding=encoding,
                form_id=uuid.uuid4().hex,
                sample_value=value.encode(encoding),
            )
            xform = post_xform(xml_data)
            self.assertEqual(value, xform.form_data['test'])
            elem = xform.get_xml_element()
            self.assertEqual(value, elem.find('{http://commcarehq.org/couchforms-tests}test').text)
Example #17
0
    def testMetaAppVersionDict(self):
        xml_data = self.get_xml('meta_dict_appversion')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'*****@*****.**',
            'doc_type': 'Metadata',
            'instanceID': u'5d3d01561f584e85b53669a48bfc6039',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #18
0
    def testMetaAppVersionDict(self):
        xml_data = self.get_xml('meta_dict_appversion')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'*****@*****.**',
            'doc_type': 'Metadata',
            'instanceID': u'5d3d01561f584e85b53669a48bfc6039',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #19
0
    def testMetaBadUsername(self):
        xml_data = self.get_xml('meta_bad_username')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'2013-07-19',
            'doc_type': 'Metadata',
            'instanceID': u'e8afaec3c66745ef80e48062d4b91b56',
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2013-07-20T00:02:27.493000Z',
            'appVersion': u'2.0',
            'timeStart': '2013-07-19T21:21:31.188000Z',
            'deprecatedID': None,
            'deviceID': u'commconnect',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #20
0
    def test_various_encodings(self):
        tests = (
            ('utf-8', u'हिन्दी चट्टानों'),
            ('UTF-8', u'हिन्दी चट्टानों'),
            ('ASCII', 'hello'),
        )
        xml_template = self.get_xml('encoding')

        for encoding, value in tests:
            xml_data = xml_template.format(
                encoding=encoding,
                form_id=uuid.uuid4().hex,
                sample_value=value.encode(encoding),
            )
            xform = post_xform(xml_data)
            self.assertEqual(value, xform.form_data['test'])
            elem = xform.get_xml_element()
            self.assertEqual(value, elem.find('{http://commcarehq.org/couchforms-tests}test').text)
Example #21
0
    def testClosed(self):
        xml_data = self.get_xml('namespaces')
        xform = post_xform(xml_data)

        self.assertEqual("http://commcarehq.org/test/ns", xform.xmlns)
        self._assert_xmlns('no namespace here', xform, 'form/empty')
        self._assert_xmlns('http://commcarehq.org/test/flatns', xform,
                           'form/flat', True)
        self._assert_xmlns('http://commcarehq.org/test/parent', xform,
                           'form/parent', True)
        self._assert_xmlns('cwo', xform, 'form/parent/childwithout')
        self._assert_xmlns('http://commcarehq.org/test/child1', xform,
                           'form/parent/childwith', True)
        self._assert_xmlns('http://commcarehq.org/test/child2', xform,
                           'form/parent/childwithelement', True)
        self._assert_xmlns('gc', xform,
                           'form/parent/childwithelement/grandchild')
        self._assert_xmlns('lcwo', xform, 'form/parent/lastchildwithout')
        self._assert_xmlns('nothing here either', xform, 'form/lastempty')
Example #22
0
    def test_wrong_doc_type(self):
        domain = 'test-domain'
        instance = self.get_xml('duplicate')

        # Post an xform with an alternate doc_type
        xform1 = post_xform(instance, domain=domain)

        # Change the doc_type of the form by archiving it
        xform1.archive()
        xform1 = FormAccessors().get_form(xform1.form_id)
        self.assertTrue(xform1.is_archived)

        # Post an xform with that has different doc_type but same id
        _, xform2, _ = submit_form_locally(
            instance,
            domain=domain,
        )

        self.assertNotEqual(xform1.form_id, xform2.form_id)
Example #23
0
    def test_wrong_doc_type(self):
        domain = 'test-domain'
        instance = self.get_xml('duplicate')

        # Post an xform with an alternate doc_type
        xform1 = post_xform(instance, domain=domain)

        # Change the doc_type of the form by archiving it
        xform1.archive()
        xform1 = FormAccessors().get_form(xform1.form_id)
        self.assertTrue(xform1.is_archived)

        # Post an xform with that has different doc_type but same id
        _, xform2, _ = submit_form_locally(
            instance,
            domain=domain,
        )

        self.assertNotEqual(xform1.form_id, xform2.form_id)
Example #24
0
    def testClosed(self):
        xml_data = self.get_xml('meta')
        xform = post_xform(xml_data)

        self.assertNotEqual(None, xform.metadata)
        self.assertEqual(date(2010, 07, 22), xform.metadata.timeStart.date())
        self.assertEqual(date(2010, 07, 23), xform.metadata.timeEnd.date())
        self.assertEqual("admin", xform.metadata.username)
        self.assertEqual("f7f0c79e-8b79-11df-b7de-005056c00008", xform.metadata.userID)
        self.assertEqual("v1.2.3 (biz bazzle)", xform.metadata.appVersion)
        result = {
            'username': u'admin',
            'doc_type': 'Metadata',
            'instanceID': None,
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2010-07-23T13:55:11.648000Z',
            'appVersion': u'v1.2.3 (biz bazzle)',
            'timeStart': '2010-07-22T13:54:27.971000Z',
            'deprecatedID': None,
            'deviceID': None,
            'clinic_id': u'5020280',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #25
0
    def testDecimalAppVersion(self):
        '''
        Tests that an appVersion that looks like a decimal:
        (a) is not converted to a Decimal by couchdbkit
        (b) does not crash anything
        '''
        xml_data = self.get_xml('decimalmeta')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'admin',
            'doc_type': 'Metadata',
            'instanceID': None,
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2010-07-23T13:55:11.648000Z',
            'appVersion': u'2.0',
            'timeStart': '2010-07-22T13:54:27.971000Z',
            'deprecatedID': None,
            'deviceID': None,
            'clinic_id': u'5020280',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #26
0
    def testDecimalAppVersion(self):
        '''
        Tests that an appVersion that looks like a decimal:
        (a) is not converted to a Decimal by couchdbkit
        (b) does not crash anything
        '''
        xml_data = self.get_xml('decimalmeta')
        xform = post_xform(xml_data)

        self.assertEqual(xform.metadata.appVersion, '2.0')
        result = {
            'username': u'admin',
            'doc_type': 'Metadata',
            'instanceID': None,
            'userID': u'f7f0c79e-8b79-11df-b7de-005056c00008',
            'timeEnd': '2010-07-23T13:55:11.648000Z',
            'appVersion': u'2.0',
            'timeStart': '2010-07-22T13:54:27.971000Z',
            'deprecatedID': None,
            'deviceID': None,
            'clinic_id': u'5020280',
            'location': None,
        }
        self._check_metadata(xform, result)
Example #27
0
    def testMetaDateInDatetimeFields(self):
        xml_data = self.get_xml('date_in_meta', override_path=('data', ))
        xform = post_xform(xml_data)

        self.assertEqual(datetime(2014, 7, 10), xform.metadata.timeStart)
        self.assertEqual(datetime(2014, 7, 11), xform.metadata.timeEnd)
Example #28
0
    def testMetaDateInDatetimeFields(self):
        xml_data = self.get_xml('date_in_meta', override_path=('data',))
        xform = post_xform(xml_data)

        self.assertEqual(datetime(2014, 7, 10), xform.metadata.timeStart)
        self.assertEqual(datetime(2014, 7, 11), xform.metadata.timeEnd)
Example #29
0
 def test_missing_meta_key(self):
     xml_data = self.get_xml('missing_date_in_meta',
                             override_path=('data', ))
     xform = post_xform(xml_data)
     self.assertEqual(datetime(2014, 7, 10), xform.metadata.timeStart)
     self.assertIsNone(xform.metadata.timeEnd)
Example #30
0
 def test_missing_meta_key(self):
     xml_data = self.get_xml('missing_date_in_meta', override_path=('data',))
     xform = post_xform(xml_data)
     self.assertEqual(datetime(2014, 7, 10), xform.metadata.timeStart)
     self.assertIsNone(xform.metadata.timeEnd)