| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- from django.core.urlresolvers import reverse
- from django.contrib.auth.models import User
- from django.test import TestCase
- from django_dynamic_fixture import G
-
- from oscar.test import WebTestCase, ClientTestCase
- from oscar.apps.catalogue.models import Category
- from oscar.apps.dashboard.catalogue.forms import CategoryForm
- from oscar.apps.catalogue.categories import create_from_breadcrumbs
-
-
- def create_test_category_tree():
- trail = 'A > B > C'
- create_from_breadcrumbs(trail)
- trail = 'A > B > D'
- create_from_breadcrumbs(trail)
- trail = 'A > E > F'
- create_from_breadcrumbs(trail)
- trail = 'A > E > G'
- create_from_breadcrumbs(trail)
-
-
- class TestCategoryForm(TestCase):
-
- def setUp(self):
- Category.objects.all().delete()
-
- def test_conflicting_slugs_recognized(self):
- create_test_category_tree()
-
- f = CategoryForm()
-
- #root categories
- ref_node_pk = Category.objects.get(name='A').pk
- conflicting = f.is_slug_conflicting('A', ref_node_pk, 'right')
- self.assertEqual(conflicting, True)
-
- conflicting = f.is_slug_conflicting('A', None, 'left')
- self.assertEqual(conflicting, True)
-
- conflicting = f.is_slug_conflicting('A', None, 'first-child')
- self.assertEqual(conflicting, True)
-
- conflicting = f.is_slug_conflicting('B', None, 'left')
- self.assertEqual(conflicting, False)
-
- #subcategories
- ref_node_pk = Category.objects.get(name='C').pk
- conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
- self.assertEqual(conflicting, True)
-
- ref_node_pk = Category.objects.get(name='B').pk
- conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
- self.assertEqual(conflicting, True)
-
- ref_node_pk = Category.objects.get(name='F').pk
- conflicting = f.is_slug_conflicting('D', ref_node_pk, 'left')
- self.assertEqual(conflicting, False)
-
- ref_node_pk = Category.objects.get(name='E').pk
- conflicting = f.is_slug_conflicting('D', ref_node_pk, 'first-child')
- self.assertEqual(conflicting, False)
-
- #updating
- f.instance = Category.objects.get(name='E')
- ref_node_pk = Category.objects.get(name='A').pk
- conflicting = f.is_slug_conflicting('E', ref_node_pk, 'first-child')
- self.assertEqual(conflicting, False)
-
-
- class TestCategoryDashboard(WebTestCase):
-
- def setUp(self):
- self.staff = G(User, is_staff=True)
- create_from_breadcrumbs('A > B > C')
-
- def test_redirects_to_main_dashboard_after_creating_top_level_category(self):
- a = Category.objects.get(name='A')
- category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
- user=self.staff)
- form = category_add.form
- form['name'] = 'Top-level category'
- form['_position'] = 'right'
- form['_ref_node_id'] = a.id
- response = form.submit()
- self.assertRedirects(response,
- reverse('dashboard:catalogue-category-list'))
-
- def test_redirects_to_parent_list_after_creating_child_category(self):
- b = Category.objects.get(name='B')
- c = Category.objects.get(name='C')
- category_add = self.app.get(reverse('dashboard:catalogue-category-create'),
- user=self.staff)
- form = category_add.form
- form['name'] = 'Child category'
- form['_position'] = 'left'
- form['_ref_node_id'] = c.id
- response = form.submit()
- self.assertRedirects(response,
- reverse('dashboard:catalogue-category-detail-list',
- args=(b.pk,)))
-
- def test_handles_invalid_form_gracefully(self):
- dashboard_index = self.app.get(reverse('dashboard:index'),
- user=self.staff)
- category_index = dashboard_index.click("Categories")
- category_add = category_index.click("Create a new category")
- response = category_add.form.submit()
- self.assertEqual(200, response.status_code)
|