You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

category_tests.py 2.3KB

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