Beispiel #1
0
    def test_retrieve_mixed_signals(self):
        # A bunch of normal signals that should never be retrieved by this filter
        SignalFactory.create_batch(5)

        now = timezone.now()
        with freeze_time(now - timedelta(hours=1)):
            parents_with_changes = SignalFactory.create_batch(3)
            parents_without_changes = SignalFactory.create_batch(2)

        with freeze_time(now):
            for parent_signal in parents_with_changes:
                SignalFactory(parent=parent_signal)

            for parent_signal in parents_without_changes:
                SignalFactory(parent=parent_signal)

        with freeze_time(now + timedelta(hours=1)):
            for parent_signal in parents_without_changes:
                parent_signal.save()

        filter_params = {'has_changed_children': True}
        ids = self._request_filter_signals(filter_params)
        self.assertEqual(len(ids), len(parents_with_changes))
        self.assertEqual(
            set(ids),
            set([parent_signal.id for parent_signal in parents_with_changes]))

        filter_params = {'has_changed_children': False}
        ids = self._request_filter_signals(filter_params)
        self.assertEqual(len(ids), len(parents_without_changes))
        self.assertEqual(
            set(ids),
            set([
                parent_signal.id for parent_signal in parents_without_changes
            ]))
Beispiel #2
0
    def test_retrieve_all_parents_with_changes_in_children(self):
        now = timezone.now()
        with freeze_time(now - timedelta(hours=1)):
            parent_signal = SignalFactory()

        with freeze_time(now):
            SignalFactory(parent=parent_signal)

        filter_params = {'has_changed_children': True}
        ids = self._request_filter_signals(filter_params)
        self.assertEqual(len(ids), 1)
        self.assertEqual(ids, [parent_signal.id])
Beispiel #3
0
    def setUp(self):
        self.keyword = 'KEYWORD'
        text_no_keyword = 'blah blah blah'
        text_with_keyword = f'blah blah blah {self.keyword} blah blah blah'

        self.signal_with_keyword = SignalFactory()
        NoteFactory(_signal=self.signal_with_keyword, text=text_no_keyword)
        NoteFactory(_signal=self.signal_with_keyword, text=text_no_keyword)
        NoteFactory(_signal=self.signal_with_keyword, text=text_with_keyword)
        NoteFactory(_signal=self.signal_with_keyword, text=text_with_keyword)

        self.signal_no_keyword = SignalFactory()
        NoteFactory(_signal=self.signal_with_keyword, text=text_no_keyword)
Beispiel #4
0
 def setUp(self) -> None:
     self.signal = SignalFactory()
     self.reporter = ReporterFactory(
         _signal=self.signal,
         email='*****@*****.**',
         email_anonymized=False,
         phone_anonymized=False,
     )
Beispiel #5
0
    def test_retrieve_multiple(self):
        now = timezone.now()
        with freeze_time(now - timedelta(hours=1)):
            parents_with_changes = SignalFactory.create_batch(3)
            parents_without_changes = SignalFactory.create_batch(2)

        with freeze_time(now):
            for parent_signal in parents_with_changes:
                SignalFactory(parent=parent_signal)

            for parent_signal in parents_without_changes:
                SignalFactory(parent=parent_signal)

        with freeze_time(now + timedelta(hours=1)):
            for parent_signal in parents_without_changes:
                parent_signal.save()

        filter_params = {'has_changed_children': ['true', 0]}
        ids = self._request_filter_signals(filter_params)
        self.assertEqual(
            len(ids),
            len(parents_with_changes) + len(parents_without_changes))
Beispiel #6
0
    def setUp(self):
        self.signal = SignalFactory(id=1,
                                    location__id=1,
                                    status__id=1,
                                    category_assignment__id=1,
                                    reporter__id=1,
                                    priority__id=1)

        self.sia_read_write_user.user_permissions.add(
            Permission.objects.get(codename='sia_can_view_all_categories'))

        # Forcing authentication
        self.client.force_authenticate(user=self.sia_read_write_user)

        # Add one note to the signal
        self.note = NoteFactory(id=1, _signal=self.signal)
Beispiel #7
0
    def setUp(self):
        self.signal = SignalFactory()
        self.category = CategoryFactory()
        self.category_assignment = CategoryAssignment.objects.create(
            category=self.category, _signal_id=self.signal.id)

        self.link_category = '/signals/v1/public/terms/categories/{}/sub_categories/{}'.format(
            self.category.parent.slug, self.category.slug)
        geometry = MultiPolygon(
            [Polygon.from_bbox([4.877157, 52.357204, 4.929686, 52.385239])],
            srid=4326)
        self.pt_in_center = Point(4.88, 52.36)
        self.pt_out_center = Point(6, 53)
        self.area = AreaFactory.create(geometry=geometry,
                                       name='Centrum',
                                       code='centrum',
                                       _type__code='district')
Beispiel #8
0
    def test_feedback_received_action_context(self):
        text = 'my text'
        text_extra = 'my extra text'
        signal = SignalFactory()
        feedback = FeedbackFactory.create(text=text,
                                          text_extra=text_extra,
                                          allows_contact=True,
                                          is_satisfied=False,
                                          token=uuid.uuid4(),
                                          _signal=signal)

        action = MailService._system_actions.get('feedback_received')()
        action(signal=signal, feedback=feedback)
        result = action.get_additional_context(signal)

        self.assertIn('feedback_text', result)
        self.assertIn('feedback_text_extra', result)
        self.assertIn('feedback_allows_contact', result)
        self.assertIn('feedback_is_satisfied', result)
        self.assertEqual(result['feedback_text'], text)
        self.assertEqual(result['feedback_text_extra'], text_extra)
        self.assertTrue(result['feedback_allows_contact'])
        self.assertFalse(result['feedback_is_satisfied'])
Beispiel #9
0
    def test_from_signal_and_category(self):
        """
        Call into the deadline calculation service using Django ORM objects.
        """
        tzinfo = get_default_timezone()
        start = datetime(2021, 2, 19, 12, 0, 0, tzinfo=tzinfo)
        true_deadline = datetime(2021, 2, 22, 12, 0, 0, tzinfo=tzinfo)
        true_deadline_factor_3 = datetime(2021, 2, 24, 12, 0, 0, tzinfo=tzinfo)

        cat = CategoryFactory.create()
        ServiceLevelObjectiveFactory.create(n_days=1,
                                            use_calendar_days=False,
                                            category=cat)

        with freeze_time(start):
            signal = SignalFactory(category_assignment__category=cat)

        deadline, deadline_factor_3 = DeadlineCalculationService.from_signal_and_category(
            signal, cat)
        self.assertEqual(deadline, true_deadline)
        self.assertEqual(deadline_factor_3, true_deadline_factor_3)
        self.assertTrue(is_aware(deadline))
        self.assertTrue(is_aware(deadline_factor_3))
Beispiel #10
0
 def test_send_system_email_dry_run(self):
     action = MailService._system_actions.get('feedback_received')()
     signal = SignalFactory()
     feedback = FeedbackFactory.create(token=uuid.uuid4(), _signal=signal)
     self.assertTrue(action(signal=signal, dry_run=True, feedback=feedback))