示例#1
0
    def test_signal_kapot_to_vol(self):
        """
        Check that complaints in one of the broken container categories get
        children in one of the full container categories.
        """
        extra_properties = copy.deepcopy(self.extra_properties)

        full_slugs = set(
            AutoCreateChildrenService._type_2_category_slug.values())
        broken_slugs = AutoCreateChildrenService._trigger_types - full_slugs

        for sub_slug in broken_slugs:
            cat = Category.objects.get(slug=sub_slug, parent__isnull=False)
            cat_url = cat.get_absolute_url()
            extra_properties[0]['category_url'] = cat_url
            signal = SignalFactory.create(extra_properties=extra_properties,
                                          category_assignment__category=cat)

            self.assertFalse(signal.is_parent)
            self.assertEqual(signal.children.count(), 0)

            AutoCreateChildrenService.run(signal_id=signal.pk)

            signal.refresh_from_db()

            self.assertTrue(signal.is_parent)
            self.assertEqual(signal.children.count(), 4)

            for child in signal.children.all():
                self.assertIn(child.category_assignment.category.slug,
                              full_slugs)
示例#2
0
    def test_create_children_and_copy_attachments(self, mocked):
        extra_properties = copy.deepcopy(self.extra_properties)
        signal = SignalFactoryWithImage.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_container_is_vol)

        attachment_count = signal.attachments.filter(is_image=True).count()

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)
        self.assertEqual(attachment_count, 1)

        mocked.return_value = signal.location.geometrie

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertTrue(signal.is_parent)
        self.assertEqual(signal.children.count(), 4)

        for child in signal.children.all():
            self.assertEqual(
                child.attachments.filter(is_image=True).count(),
                attachment_count)
示例#3
0
    def test_too_many_containers_selected(self):
        extra_properties = copy.deepcopy(self.extra_properties)
        extra_properties[0]['answer'] = []

        for x in range(25):
            extra_properties[0]['answer'].append({
                'id':
                f'TEST-{x}',
                'type':
                'Rest',
                'description':
                'Restafval container'
            })

        signal = SignalFactory.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_container_is_vol)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)
示例#4
0
    def test_no_containers_selected(self):
        signal = SignalFactory.create(
            extra_properties=None,
            category_assignment__category=self.category_container_is_vol)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)
示例#5
0
    def test_signal_feature_disabled(self):
        extra_properties = copy.deepcopy(self.extra_properties)
        signal = SignalFactory.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_container_is_vol)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)
示例#6
0
    def test_multiple_extra_properties_for_containers(self, mocked):
        extra_properties = copy.deepcopy(self.extra_properties)
        extra_properties.append({
            'id':
            'extra_container',
            'label':
            'Container(s)',
            'answer': [
                {
                    'id': 'ID011',
                    'type': 'Rest',
                    'description': 'Restafval container'
                },
                {
                    'id': 'ID012',
                    'type': 'Plastic',
                    'description': 'Plasticafval container'
                },
                {
                    'id': 'ID013',
                    'type': 'Papier',
                    'description': 'Papierafval container'
                },
                {
                    'id': 'ID0014',
                    'type': 'Unknown',
                    'description': 'Unknown container'
                },
            ],
            'category_url':
            '/signals/v1/public/terms/categories/afval/sub_categories/container-is-vol'
        })

        signal = SignalFactory.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_container_is_vol)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        mocked.return_value = signal.location.geometrie

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertTrue(signal.is_parent)
        self.assertEqual(signal.children.count(), 8)
示例#7
0
    def test_create_children(self, mocked):
        extra_properties = copy.deepcopy(self.extra_properties)
        signal = SignalFactory.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_container_is_vol)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        mocked.return_value = signal.location.geometrie

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertTrue(signal.is_parent)
        self.assertEqual(signal.children.count(), 4)
示例#8
0
    def test_wrong_category(self):
        extra_properties = copy.deepcopy(self.extra_properties)
        extra_properties[0][
            'category_url'] = self.category_overig.get_absolute_url()

        signal = SignalFactory.create(
            extra_properties=extra_properties,
            category_assignment__category=self.category_overig)

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)

        AutoCreateChildrenService.run(signal_id=signal.pk)

        signal.refresh_from_db()

        self.assertFalse(signal.is_parent)
        self.assertEqual(signal.children.count(), 0)