def test_expand_location_recipients(self): schedule_without_descendants = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'})) schedule_without_descendants.include_descendant_locations = False schedule_without_descendants.save() schedule_with_descendants = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'})) schedule_with_descendants.include_descendant_locations = True schedule_with_descendants.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule_without_descendants.schedule_id, recipient_type='Location', recipient_id=self.city_location.location_id) self.assertEqual(self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id]) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule_without_descendants.schedule_id, recipient_type='Location', recipient_id=self.state_location.location_id) self.assertEqual(list(instance.expand_recipients()), []) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule_with_descendants.schedule_id, recipient_type='Location', recipient_id=self.state_location.location_id) self.assertEqual(self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id])
def test_web_user_recipient_with_user_data_filter(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.user_data_filter = {'role': ['nurse']} schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_WEB_USER, recipient_id=self.web_user.get_id, ) self.assertEqual(list(instance.expand_recipients()), []) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_WEB_USER, recipient_id=self.web_user2.get_id, ) recipients = list(instance.expand_recipients()) self.assertEqual(len(recipients), 1) self.assertIsInstance(recipients[0], WebUser) self.assertEqual(recipients[0].get_id, self.web_user2.get_id)
def test_web_user_recipient_with_user_data_filter(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.user_data_filter = {'role': ['nurse']} schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_WEB_USER, recipient_id=self.web_user.get_id, ) self.assertEqual(list(instance.expand_recipients()), []) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_WEB_USER, recipient_id=self.web_user2.get_id, ) recipients = list(instance.expand_recipients()) self.assertEqual(len(recipients), 1) self.assertIsInstance(recipients[0], WebUser) self.assertEqual(recipients[0].get_id, self.web_user2.get_id)
def test_expand_location_recipients_without_descendants(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.include_descendant_locations = False schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Location', recipient_id=self.country_location.location_id ) self.assertEqual( list(instance.expand_recipients()), [] ) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Location', recipient_id=self.state_location.location_id ) self.assertEqual( self.user_ids(instance.expand_recipients()), [self.mobile_user2.get_id] )
def test_case_group_recipient_with_user_data_filter(self): # The user data filter should have no effect here because all # the recipients are cases. schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.user_data_filter = {'role': ['nurse']} schedule.save() with create_case(self.domain, 'person') as case: case_group = CommCareCaseGroup(domain=self.domain, cases=[case.case_id]) case_group.save() self.addCleanup(case_group.delete) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_CASE_GROUP, recipient_id=case_group.get_id, ) recipients = list(instance.expand_recipients()) self.assertEqual(len(recipients), 1) self.assertEqual(recipients[0].case_id, case.case_id)
def test_case_group_recipient_with_user_data_filter(self): # The user data filter should have no effect here because all # the recipients are cases. schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.user_data_filter = {'role': ['nurse']} schedule.save() with create_case(self.domain, 'person') as case: case_group = CommCareCaseGroup(domain=self.domain, cases=[case.case_id]) case_group.save() self.addCleanup(case_group.delete) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type=ScheduleInstance.RECIPIENT_TYPE_CASE_GROUP, recipient_id=case_group.get_id, ) recipients = list(instance.expand_recipients()) self.assertEqual(len(recipients), 1) self.assertEqual(recipients[0].case_id, case.case_id)
def test_expand_group_recipients(self): instance = CaseTimedScheduleInstance(domain=self.domain, recipient_type='Group', recipient_id=self.group.get_id) self.assertEqual( self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id] )
def test_expand_group_recipients(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'})) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Group', recipient_id=self.group.get_id) self.assertEqual(self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id])
def test_mobile_worker_recipients_with_user_data_filter(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'})) schedule.user_data_filter = {'role': ['nurse']} schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Group', recipient_id=self.group2.get_id) self.assertEqual(self.user_ids(instance.expand_recipients()), [self.mobile_user4.get_id, self.mobile_user5.get_id])
def test_expand_location_recipients_with_location_type_filter(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'})) schedule.include_descendant_locations = True schedule.location_type_filter = [self.city_location.location_type_id] schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Location', recipient_id=self.country_location.location_id) self.assertItemsEqual(self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id])
def test_expand_group_recipients(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Group', recipient_id=self.group.get_id ) self.assertEqual( self.user_ids(instance.expand_recipients()), [self.mobile_user.get_id] )
def test_mobile_worker_recipients_with_user_data_filter(self): schedule = TimedSchedule.create_simple_daily_schedule( self.domain, TimedEvent(time=time(9, 0)), SMSContent(message={'en': 'Hello'}) ) schedule.user_data_filter = {'role': ['nurse']} schedule.save() instance = CaseTimedScheduleInstance( domain=self.domain, timed_schedule_id=schedule.schedule_id, recipient_type='Group', recipient_id=self.group2.get_id ) self.assertEqual( self.user_ids(instance.expand_recipients()), [self.mobile_user4.get_id, self.mobile_user5.get_id] )