Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

category_tests.py 3.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from django.core.urlresolvers import reverse
  2. from django.test import TestCase
  3. from oscar.test import ClientTestCase
  4. from oscar.apps.catalogue.models import Category
  5. from oscar.apps.dashboard.catalogue.forms import CategoryForm
  6. from oscar.apps.catalogue.categories import create_from_breadcrumbs
  7. def create_test_category_tree():
  8. trail = 'A > B > C'
  9. create_from_breadcrumbs(trail)
  10. trail = 'A > B > D'
  11. create_from_breadcrumbs(trail)
  12. trail = 'A > E > F'
  13. create_from_breadcrumbs(trail)
  14. trail = 'A > E > G'
  15. create_from_breadcrumbs(trail)
  16. class TestCategoryForm(TestCase):
  17. def setUp(self):
  18. Category.objects.all().delete()
  19. def test_conflicting_slugs_recognized(self):
  20. create_test_category_tree()
  21. f = CategoryForm()
  22. #root categories
  23. ref_node_pk = Category.objects.get(name='A').pk
  24. conflicting = f.is_slug_conflicting('A', ref_node_pk, 'right')
  25. self.assertEqual(conflicting, True)
  26. conflicting = f.is_slug_conflicting('A', None, 'left')
  27. self.assertEqual(conflicting, True)
  28. conflicting = f.is_slug_conflicting('A', None, 'first-child')
  29. self.assertEqual(conflicting, True)
  30. conflicting = f.is_slug_conflicting('B', None, 'left')
  31. self.assertEqual(conflicting, False)
  32. #subcategories
  33. ref_node_pk = Category.objects.get(name='C').pk
  34. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
  35. self.assertEqual(conflicting, True)
  36. ref_node_pk = Category.objects.get(name='B').pk
  37. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
  38. self.assertEqual(conflicting, True)
  39. ref_node_pk = Category.objects.get(name='F').pk
  40. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
  41. self.assertEqual(conflicting, False)
  42. ref_node_pk = Category.objects.get(name='E').pk
  43. conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
  44. self.assertEqual(conflicting, False)
  45. #updating
  46. f.instance = Category.objects.get(name='E')
  47. ref_node_pk = Category.objects.get(name='A').pk
  48. conflicting = f.is_slug_conflicting('E', ref_node_pk, 'first-child')
  49. self.assertEqual(conflicting, False)
  50. class CategoryTests(ClientTestCase):
  51. is_staff = True
  52. def setUp(self):
  53. super(CategoryTests, self).setUp()
  54. create_test_category_tree()
  55. def test_category_create(self):
  56. a = Category.objects.get(name='A')
  57. b = Category.objects.get(name='B')
  58. c = Category.objects.get(name='C')
  59. # Redirect to subcategory list view
  60. response = self.client.post(reverse('dashboard:catalogue-category-create'),
  61. {'name': 'Testee',
  62. '_position': 'left',
  63. '_ref_node_id': c.id,})
  64. self.assertIsRedirect(response, reverse('dashboard:catalogue-category-detail-list',
  65. args=(b.pk,)))
  66. # Redirect to main category list view
  67. response = self.client.post(reverse('dashboard:catalogue-category-create'),
  68. {'name': 'Testee',
  69. '_position': 'right',
  70. '_ref_node_id': a.id,})
  71. self.assertIsRedirect(response, reverse('dashboard:catalogue-category-list'))
  72. self.assertEqual(Category.objects.all().count(), 9)