예제 #1
0
    def test_ziggy_submission_post_update(self):
        num_ziggys = ZiggyInstance.objects.count()
        response = self.make_ziggy_submission(village_profile_json_path)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(ZiggyInstance.objects.count(), num_ziggys + 1)

        # make update submission
        response = self.make_ziggy_submission(cc_monthly_json_path)
        self.assertEqual(response.status_code, 201)
        self.assertEqual(ZiggyInstance.objects.count(), num_ziggys + 2)

        # check that we only end up with a single updated object within mongo
        entities = [r for r in mongo_ziggys.find({'_id': ENTITY_ID})]
        self.assertEqual(len(entities), 1)

        # check that the sagContactNumber field exists and is unmodified
        entity = entities[0]
        matching_fields = filter(
            ZiggyInstance.field_by_name_exists('sagContactNumber'),
            json.loads(entity['formInstance'])['form']['fields'])
        self.assertEqual(len(matching_fields), 1)
        self.assertEqual(matching_fields[0]['value'], '020-123456')

        # todo: check that the new data has been added
        matching_fields = filter(
            ZiggyInstance.field_by_name_exists('reportingMonth'),
            json.loads(entity['formInstance'])['form']['fields'])
        self.assertEqual(len(matching_fields), 1)
        self.assertEqual(matching_fields[0]['value'], '10-2013')
예제 #2
0
    def test_merge_ziggy_form_instances(self):
        instance_1 = [
            {'name': 'village_name', 'value': 'Ugenya'},
            {'name': 'village_code', 'value': '012-123'},
            {'name': 'village_contact_no', 'value': '050 123456'}]

        instance_2 = [
            {'name': 'village_name', 'value': 'Uriya'},
            {'name': 'village_contact_no', 'value': '050 876543'},
            {'name': 'num_latrines', 'value': 23}]

        merged_instance = ZiggyInstance.merge_ziggy_form_instances(
            instance_1, instance_2)
        expected_merged_instance = [
            # named changed to Uriya
            {'name': 'village_name', 'value': 'Uriya'},
            # village code un-touched
            {'name': 'village_code', 'value': '012-123'},
            # contact no  updated
            {'name': 'village_contact_no', 'value': '050 876543'},
            # num latrines is a new field
            {'name': 'num_latrines', 'value': 23}]

        self.assertEqual(
            filter(ZiggyInstance.field_by_name_exists(
                'village_name'), merged_instance)[0],
            filter(ZiggyInstance.field_by_name_exists(
                'village_name'), expected_merged_instance)[0])
        self.assertEqual(
            filter(ZiggyInstance.field_by_name_exists(
                'village_code'), merged_instance)[0],
            filter(ZiggyInstance.field_by_name_exists(
                'village_code'), expected_merged_instance)[0])
        self.assertEqual(
            filter(ZiggyInstance.field_by_name_exists(
                'village_contact_no'), merged_instance)[0],
            filter(ZiggyInstance.field_by_name_exists(
                'village_contact_no'), expected_merged_instance)[0])
        self.assertEqual(
            filter(ZiggyInstance.field_by_name_exists(
                'num_latrines'), merged_instance)[0],
            filter(ZiggyInstance.field_by_name_exists(
                'num_latrines'), expected_merged_instance)[0])