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())
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)
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
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')