コード例 #1
0
    def test_category_two_deep(self):
        child_category = Category(name='Child category')
        child_category.parent = self.category
        child_category.save()

        self.category.refresh_from_db()
        self.assertEqual(1, self.category.children.count())
コード例 #2
0
    def test_category_three_deep_as_child(self):
        child_category = Category(name='Child category')
        child_category.save()

        grand_child_category = Category(name='Grandchild category')
        grand_child_category.parent = child_category
        grand_child_category.save()

        child_category.parent = self.category

        self.assertRaises(ValidationError, child_category.save)
コード例 #3
0
    def get_url(self, obj: Category, view_name, request, format):

        if obj.is_child():
            url_kwargs = {
                'slug': obj.parent.slug,
                'sub_slug': obj.slug,
            }
        else:
            url_kwargs = {
                'slug': obj.slug,
            }
        # print(obj)
        # url_kwargs = {
        #     'cat1': obj.category_level_name1,
        #     'cat2': obj.category_level_name2,
        #     'cat3': obj.category_level_name3,
        #     'cat4': obj.category_level_name4
        # }

        # Tricking DRF to use API version `v1` because our `category-detail` view lives in API
        # version 1. Afterwards we revert back to the origional API version from the request.
        original_version = request.version
        request.version = 'v1'
        url = reverse(view_name,
                      kwargs=url_kwargs,
                      request=request,
                      format=format)
        request.version = original_version

        return url
コード例 #4
0
    def test_slug_only_created_once(self):
        just_a_slug = slugify('just a slug')

        category = Category(slug=just_a_slug,
                            name='This will generate the slug only once')

        category.save()
        category.refresh_from_db()

        slug = slugify(category.name)

        self.assertNotEqual(just_a_slug, category.slug)
        self.assertEqual(slug, category.slug)
        self.assertEqual('This will generate the slug only once',
                         category.name)

        category.name = 'And now for something completely different'
        category.save()
        category.refresh_from_db()

        self.assertEqual(slug, category.slug)
        self.assertEqual('And now for something completely different',
                         category.name)

        this_should_not_be_the_slug = slugify(category.name)
        self.assertNotEqual(this_should_not_be_the_slug, category.slug)

        with self.assertRaises(ValidationError):
            category.slug = just_a_slug
            category.save()

        with self.assertRaises(ValidationError):
            category.save(slug='no-saving-me-please')