Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

category_tests.py 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from django.core.urlresolvers import reverse
  2. from django.contrib.auth.models import User
  3. from django.test import TestCase
  4. from django_dynamic_fixture import G
  5. from oscar.test import WebTestCase, ClientTestCase
  6. from oscar.apps.catalogue.models import Category
  7. from oscar.apps.dashboard.catalogue.forms import CategoryForm
  8. from oscar.apps.catalogue.categories import create_from_breadcrumbs
  9. def create_test_category_tree():
  10. trail = 'A > B > C'
  11. create_from_breadcrumbs(trail)
  12. trail = 'A > B > D'
  13. create_from_breadcrumbs(trail)
  14. trail = 'A > E > F'
  15. create_from_breadcrumbs(trail)
  16. trail = 'A > E > G'
  17. create_from_breadcrumbs(trail)
  18. class TestCategoryForm(TestCase):
  19. def setUp(self):
  20. Category.objects.all().delete()
  21. def test_conflicting_slugs_recognized(self):
  22. create_test_category_tree()
  23. f = CategoryForm()
  24. #root categories
  25. ref_node_pk = Category.objects.get(name='A').pk
  26. conflicting = f.is_slug_conflicting('A', ref_node_pk, 'right')
  27. self.assertEqual(conflicting, True)
  28. conflicting = f.is_slug_conflicting('A', None, 'left')
  29. self.assertEqual(conflicting, True)
  30. conflicting = f.is_slug_conflicting('A', None, 'first-child')
  31. self.assertEqual(conflicting, True)
  32. conflicting = f.is_slug_conflicting('B', None, 'left')
  33. self.assertEqual(conflicting, False)
  34. #subcategories
  35. ref_node_pk = Category.objects.get(name='C').pk
  36. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
  37. self.assertEqual(conflicting, True)
  38. ref_node_pk = Category.objects.get(name='B').pk
  39. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
  40. self.assertEqual(conflicting, True)
  41. ref_node_pk = Category.objects.get(name='F').pk
  42. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
  43. self.assertEqual(conflicting, False)
  44. ref_node_pk = Category.objects.get(name='E').pk
  45. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
  46. self.assertEqual(conflicting, False)
  47. #updating
  48. f.instance = Category.objects.get(name='E')
  49. ref_node_pk = Category.objects.get(name='A').pk
  50. conflicting = f.is_slug_conflicting('E', ref_node_pk, 'first-child')
  51. self.assertEqual(conflicting, False)
  52. class TestCategoryDashboard(WebTestCase):
  53. def setUp(self):
  54. self.staff = G(User, is_staff=True)
  55. create_from_breadcrumbs('A > B > C')
  56. def test_redirects_to_main_dashboard_after_creating_top_level_category(self):
  57. a = Category.objects.get(name='A')
  58. category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
  59. user=self.staff)
  60. form = category_add.form
  61. form['name'] = 'Top-level category'
  62. form['_position'] = 'right'
  63. form['_ref_node_id'] = a.id
  64. response = form.submit()
  65. self.assertRedirects(response,
  66. reverse('dashboard:catalogue-category-list'))
  67. def test_redirects_to_parent_list_after_creating_child_category(self):
  68. b = Category.objects.get(name='B')
  69. c = Category.objects.get(name='C')
  70. category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
  71. user=self.staff)
  72. form = category_add.form
  73. form['name'] = 'Child category'
  74. form['_position'] = 'left'
  75. form['_ref_node_id'] = c.id
  76. response = form.submit()
  77. self.assertRedirects(response,
  78. reverse('dashboard:catalogue-category-detail-list',
  79. args=(b.pk,)))
  80. def test_handles_invalid_form_gracefully(self):
  81. dashboard_index = self.app.get(reverse('dashboard:index'),
  82. user=self.staff)
  83. category_index = dashboard_index.click("Categories")
  84. category_add = category_index.click("Create a new category")
  85. response = category_add.form.submit()
  86. self.assertEqual(200, response.status_code)