def _build_rows(self, site_code): rows = [] location = SQLLocation.active_objects.get(domain=self.domain, site_code=site_code) case_ids = get_household_case_ids(self.domain, location.location_id) for case_id in case_ids: household_case = CaseAccessors(self.domain).get_case(case_id) person_cases = get_household_child_cases_by_owner( self.domain, case_id, location.location_id, [PERSON_CASE_TYPE]) rows.append([ '', '', household_case.name, household_case.get_case_property('hh_reg_date'), household_case.get_case_property('hh_religion'), household_case.get_case_property('hh_caste'), household_case.get_case_property('hh_bpl_apl'), len(person_cases), ", ".join([ "%s (%s/%s)" % ( case.name, case.get_case_property('age_at_reg'), case.get_case_property('sex')) for case in person_cases ]), household_case.case_id ]) return rows
def test_case_update(self): fake_request = self._get_fake_request() fake_request['has_choices'] = 'foo' PatientDetailsUpdater(self.domain, fake_request).update_cases() person_case = CaseAccessors(self.domain).get_case(self.person_id) self.assertEqual(person_case.get_case_property('required_param'), '123') episode_case = CaseAccessors(self.domain).get_case(self.episode_id) self.assertEqual(episode_case.get_case_property('has_choices'), 'foo')
def test_case_updates(self): with patch('custom.enikshay.tasks.EpisodeAdherenceUpdate.update_json', MagicMock()) as adherence_update: adherence_update.return_value = {'update': {}} prescription = self.create_prescription_case() voucher = self.make_voucher(prescription, 29, date(2017, 1, 2)) self.make_voucher(prescription, 11, date(2017, 1, 1)) # the updater should pickup the above changes EpisodeUpdater(self.domain).run() episode = CaseAccessors(self.domain).get_case( self.cases['episode'].case_id) self.assertEqual( episode.get_case_property("prescription_total_days"), six.text_type(29 + 11)) # test that a subsequent update performs a noop self.assertEqual( EpisodeVoucherUpdate(self.domain, episode).update_json(), {}) # Updating after a voucher has been approved also shouldn't change anything self.approve_voucher(voucher) self.assertEqual( EpisodeVoucherUpdate(self.domain, episode).update_json(), {})
def test_update_with_setter(self): fake_request = self._get_fake_request() fake_request['with_setter'] = 'foo' PatientDetailsUpdater(self.domain, fake_request).update_cases() person_case = CaseAccessors(self.domain).get_case(self.person_id) self.assertEqual(person_case.get_case_property('property_set_with_setter'), 'foo')
def test_unwrap_number(self): fake_request = self._get_fake_request() fake_request['unwrap_number'] = '+91123456789' PatientDetailsUpdater(self.domain, fake_request).update_cases() person_case = CaseAccessors(self.domain).get_case(self.person_id) self.assertEqual(person_case.get_case_property('foo'), '91123456789')
def test_split_name(self): fake_request = self._get_fake_request() fake_request['split_name'] = 'Arya Horseface Stark' PatientDetailsUpdater(self.domain, fake_request).update_cases() person_case = CaseAccessors(self.domain).get_case(self.person_id) self.assertEqual(person_case.get_case_property('foo'), 'Arya') self.assertEqual(person_case.get_case_property('bar'), 'Horseface Stark')
def test_merm_params(self): fake_request = self._get_fake_request() fake_request['merm_params'] = { "IMEI": "1321", "daily_reminder_status": "1", "daily_reminder_time": "12:00", "refill_reminder_status": "1", "refill_reminder_datetime": "2017/12/12 15:54:00", "RT_hours": "1", } PatientDetailsUpdater(self.domain, fake_request).update_cases() person_case = CaseAccessors(self.domain).get_case(self.episode_id) self.assertEqual(person_case.get_case_property('merm_id'), '1321')
def _test_auto_escalation(self, from_level, to_level): rule = create_empty_rule(self.domain, AutomaticUpdateRule.WORKFLOW_CASE_UPDATE) rule.add_action(CustomActionDefinition, name='ICDS_ESCALATE_TECH_ISSUE') with create_case( self.domain, 'tech_issue', case_name='New Issue', update={ 'ticket_level': from_level, 'touch_case_date': '2017-06-01', 'block_location_id': 'block_id', 'district_location_id': 'district_id', 'state_location_id': 'state_id', }, ) as tech_issue: properties = tech_issue.to_json() self.assertEqual(properties.get('ticket_level'), from_level) self.assertEqual(properties.get('touch_case_date'), '2017-06-01') self.assertIsNone(properties.get('change_in_level')) result = rule.run_actions_when_case_matches(tech_issue) self.assertEqual(result.num_updates, 1) self.assertEqual(result.num_creates, 1) tech_issue = CaseAccessors(self.domain).get_case( tech_issue.case_id) properties = tech_issue.to_json() self.assertEqual(properties.get('ticket_level'), to_level) self.assertEqual(properties.get('touch_case_date'), self.todays_date) self.assertEqual(properties.get('change_in_level'), '1') subcases = tech_issue.get_subcases(index_identifier='parent') self.assertEqual(len(subcases), 1) [tech_issue_delegate] = subcases self.assertEqual(tech_issue_delegate.type, 'tech_issue_delegate') self.assertEqual(tech_issue_delegate.name, tech_issue.name) self.assertEqual( tech_issue_delegate.owner_id, tech_issue.get_case_property('%s_location_id' % to_level)) self.assertEqual( tech_issue_delegate.get_case_property('change_in_level'), '1')