Пример #1
0
    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])
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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]
        )
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 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]
     )
Пример #8
0
 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])
Пример #9
0
    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])
Пример #10
0
    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])
Пример #11
0
 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]
     )
Пример #12
0
    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]
        )