Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

category_tests.py 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.core.urlresolvers import reverse
  2. from oscar.test.testcases import WebTestCase
  3. from oscar.apps.catalogue.models import Category
  4. from oscar.apps.catalogue.categories import create_from_breadcrumbs
  5. from oscar.test.factories import UserFactory
  6. class TestCategoryDashboard(WebTestCase):
  7. def setUp(self):
  8. self.staff = UserFactory(is_staff=True)
  9. create_from_breadcrumbs('A > B > C')
  10. def test_redirects_to_main_dashboard_after_creating_top_level_category(self):
  11. a = Category.objects.get(name='A')
  12. category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
  13. user=self.staff)
  14. form = category_add.form
  15. form['name'] = 'Top-level category'
  16. form['_position'] = 'right'
  17. form['_ref_node_id'] = a.id
  18. response = form.submit()
  19. self.assertRedirects(response,
  20. reverse('dashboard:catalogue-category-list'))
  21. def test_redirects_to_parent_list_after_creating_child_category(self):
  22. b = Category.objects.get(name='B')
  23. c = Category.objects.get(name='C')
  24. category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
  25. user=self.staff)
  26. form = category_add.form
  27. form['name'] = 'Child category'
  28. form['_position'] = 'left'
  29. form['_ref_node_id'] = c.id
  30. response = form.submit()
  31. self.assertRedirects(
  32. response,
  33. reverse('dashboard:catalogue-category-detail-list', args=(b.pk,)))
  34. def test_handles_invalid_form_gracefully(self):
  35. dashboard_index = self.app.get(reverse('dashboard:index'),
  36. user=self.staff)
  37. category_index = dashboard_index.click("Categories")
  38. category_add = category_index.click("Create new category")
  39. response = category_add.form.submit()
  40. self.assertEqual(200, response.status_code)