From fe90de8cf53dc74525eff2d580c94f57ee6befdf Mon Sep 17 00:00:00 2001 From: Matthias Kestenholz Date: Tue, 17 Jan 2012 08:36:04 +0100 Subject: [PATCH] Fix the admin tests, adapt them for the much simpler product and price model --- plata/tests/__init__.py | 2 +- plata/tests/admin.py | 241 ++-------------------------------------- plata/tests/views.py | 3 + 3 files changed, 16 insertions(+), 230 deletions(-) diff --git a/plata/tests/__init__.py b/plata/tests/__init__.py index 65fab9f8..f3e2a048 100644 --- a/plata/tests/__init__.py +++ b/plata/tests/__init__.py @@ -1,3 +1,3 @@ -#from admin import AdminTest +from admin import AdminTest from models import ModelTest from views import ViewTest diff --git a/plata/tests/admin.py b/plata/tests/admin.py index 16be45af..28d1ea37 100644 --- a/plata/tests/admin.py +++ b/plata/tests/admin.py @@ -3,12 +3,14 @@ from django.contrib.auth.models import User from django.forms.models import model_to_dict +import plata from plata.discount.models import Discount -from plata.product.modules.options.models import Product, \ - ProductVariation, OptionGroup, Option, ProductPrice from plata.shop.models import TaxClass -from options.tests.base import PlataTest +from plata.tests.base import PlataTest + + +Product = plata.product_model() class AdminTest(PlataTest): @@ -36,186 +38,33 @@ def test_01_products(self): rate=Decimal('7.60'), ) - self.client.post('/admin/product/optiongroup/add/', { - 'name': 'size', - - 'options-INITIAL_FORMS': 0, - 'options-MAX_NUM_FORMS': '', - 'options-TOTAL_FORMS': 2, - - 'options-0-name': 'S', - 'options-0-value': 's', - 'options-0-ordering': 10, - - 'options-1-name': 'M', - 'options-1-value': 'm', - 'options-1-ordering': 20, - }) - - self.client.post('/admin/product/optiongroup/add/', { - 'name': 'color', - - 'options-INITIAL_FORMS': 0, - 'options-MAX_NUM_FORMS': '', - 'options-TOTAL_FORMS': 2, - - 'options-0-name': 'red', - 'options-0-value': 'red', - 'options-0-ordering': 10, - - 'options-1-name': 'blue', - 'options-1-value': 'blue', - 'options-1-ordering': 20, - }) - - self.client.post('/admin/product/producer/add/', { - 'is_active': True, - 'name': 'Producer', - 'slug': 'producer', - 'ordering': 0, - }) - product_data = { - 'description': '', - 'images-INITIAL_FORMS': '0', - 'images-MAX_NUM_FORMS': '', - 'images-TOTAL_FORMS': '0', - 'is_active': 'on', 'name': 'Product 3', - 'slug': '324wregft5re', - 'ordering': '100', - 'sku': '324wregft5re', - 'option_groups': [1,2], - 'producer': 1, - 'create_variations': True, + 'items_in_stock': 0, 'prices-0-id': '', 'prices-0-product': '', 'prices-0-_unit_price': '79.90', 'prices-0-currency': 'CHF', - 'prices-0-is_active': 'on', 'prices-0-tax_class': '1', 'prices-0-tax_included': 'on', - 'prices-0-valid_from': '2010-05-19', - 'prices-0-valid_until': '', 'prices-INITIAL_FORMS': '0', 'prices-MAX_NUM_FORMS': '', 'prices-TOTAL_FORMS': '1', - - 'rawcontent_set-INITIAL_FORMS': '0', - 'rawcontent_set-MAX_NUM_FORMS': '', - 'rawcontent_set-TOTAL_FORMS': '0', - - 'mediafilecontent_set-INITIAL_FORMS': '0', - 'mediafilecontent_set-MAX_NUM_FORMS': '', - 'mediafilecontent_set-TOTAL_FORMS': '0', - - 'variations-INITIAL_FORMS': '0', - 'variations-MAX_NUM_FORMS': '', - 'variations-TOTAL_FORMS': '0', } self.client.post(self.product_admin_url + 'add/', product_data) self.assertEqual(Product.objects.count(), 1) - self.assertEqual(ProductVariation.objects.count(), 4) - self.assertEqual(ProductPrice.objects.count(), 1) - self.assertEqual(OptionGroup.objects.count(), 2) - self.assertEqual(Option.objects.count(), 4) - product_data['slug'] += '-' - product_data['sku'] += '-' self.assertEqual( self.client.post(self.product_admin_url + 'add/', product_data).status_code, 302) - # Next post should not redirect (e.g. yield validation errors) - self.assertEqual( - self.client.post(self.product_admin_url + 'add/', product_data).status_code, - 200) - self.assertEqual(Product.objects.count(), 2) - self.assertEqual(ProductVariation.objects.count(), 8) - self.assertEqual(ProductPrice.objects.count(), 2) - self.assertEqual(OptionGroup.objects.count(), 2) - self.assertEqual(Option.objects.count(), 4) - - product_data.update({ - 'variations-0-id': '5', - 'variations-0-product': '2', - - 'variations-0-is_active': 'on', - 'variations-0-items_in_stock': '0', - 'variations-0-ordering': '0', - 'variations-0-options': [1, 3], - - 'variations-1-id': '6', - 'variations-1-product': '2', - - 'variations-1-is_active': 'on', - 'variations-1-items_in_stock': '0', - 'variations-1-ordering': '0', - 'variations-1-options': [1, 4], - - 'variations-2-id': '7', - 'variations-2-product': '2', - - 'variations-2-is_active': 'on', - 'variations-2-items_in_stock': '0', - 'variations-2-ordering': '0', - 'variations-2-options': [2, 3], - - 'variations-3-id': '8', - 'variations-3-product': '2', - - 'variations-3-is_active': 'on', - 'variations-3-items_in_stock': '0', - 'variations-3-ordering': '0', - 'variations-3-options': [2, 4], - - 'variations-INITIAL_FORMS': '4', - 'variations-MAX_NUM_FORMS': '', - 'variations-TOTAL_FORMS': '4', - }) - - self.assertRedirects(self.client.post(self.product_admin_url + '2/', product_data), - self.product_admin_url) - - product_data.update({ - 'variations-0-sku': '324wregft5re-0', - 'variations-1-sku': '324wregft5re-1', - 'variations-2-sku': '324wregft5re-2', - 'variations-3-sku': '324wregft5re-3', - }) - - self.assertRedirects(self.client.post(self.product_admin_url + '2/', product_data), - self.product_admin_url) - - product_data['variations-0-options'] = [1, 4] - self.assertContains(self.client.post(self.product_admin_url + '2/', product_data), - 'Combination of options already encountered') - product_data['variations-0-options'] = [1, 3] p = Product.objects.get(pk=2) - options = list(OptionGroup.objects.all()) - p.option_groups.remove(options[1]) - - self.assertEqual(p.option_groups.count(), 1) - - # The change at DB level does not have much influence anymore, - # because we fetch the option groups from the form, not from - # the database. - product_data['option_groups'] = [1] - - self.assertContains(self.client.post(self.product_admin_url + '2/', product_data), - 'Please select options from the following groups') - - product_data['variations-0-options'] = [1, 2] - self.assertContains(self.client.post(self.product_admin_url + '2/', product_data), - 'Please select options from the following groups') - self.assertContains(self.client.post(self.product_admin_url + '2/', product_data), - 'Only one option per group allowed') discount_data = { 'name': 'Discount 1', @@ -232,6 +81,9 @@ def test_01_products(self): self.assertContains(self.client.post('/admin/discount/discount/add/', discount_data), 'required') + # Does not redirect + self.assertEqual(self.client.post('/admin/discount/discount/add/', discount_data).status_code, 200) + discount_data['config_options'] = ('all',) self.assertRedirects(self.client.post('/admin/discount/discount/add/', discount_data), '/admin/discount/discount/') @@ -242,30 +94,11 @@ def test_01_products(self): self.assertContains(self.client.get('/admin/discount/discount/2/'), 'Discount configuration: Exclude sale prices') - discount_data['config_options'] = ('products',) - discount_data['code'] += '-' - - # Does not redirect (invalid configuration) - self.assertEqual(self.client.post('/admin/discount/discount/add/', discount_data).status_code, 200) - - discount_data['products_products'] = ('1',) + discount_data['name'] = 'Discount 2' + discount_data['code'] = 'discount2' self.assertRedirects(self.client.post('/admin/discount/discount/add/', discount_data), '/admin/discount/discount/') - discount_data = model_to_dict(Discount.objects.get(pk=3)) - discount_data.update({ - 'config_options': ('products',), - 'products_products': ('1', '2'), - 'valid_from': '2010-01-01', - 'valid_until': '', - 'allowed_uses': '', - 'used': 0, - 'currency': '', - 'tax_class': '', - }) - self.assertRedirects(self.client.post('/admin/discount/discount/3/', discount_data), - '/admin/discount/discount/') - discount_data = model_to_dict(Discount.objects.get(pk=3)) discount_data.update({ 'config_options': ('products',), @@ -279,57 +112,7 @@ def test_01_products(self): # Manually modified config_json overrides anything selected in the # generated form items - 'config_json': u'{"products": {"products": [2]}}', + 'config_json': u'{"all": {}}', }) self.assertRedirects(self.client.post('/admin/discount/discount/3/', discount_data), '/admin/discount/discount/') - - self.assertEqual(Discount.objects.get(pk=3).config['products']['products'], [2]) - - product_data = { - 'description': '', - 'images-INITIAL_FORMS': '0', - 'images-MAX_NUM_FORMS': '', - 'images-TOTAL_FORMS': '0', - 'is_active': 'on', - 'name': 'Product 4', - 'slug': '324wregftjkh5re', - 'ordering': '100', - 'sku': '324wregft5rekjh', - 'producer': 1, - 'create_variations': False, - - 'prices-0-id': '', - 'prices-0-product': '', - - 'prices-0-_unit_price': '79.90', - 'prices-0-currency': 'CHF', - 'prices-0-is_active': 'on', - 'prices-0-tax_class': '1', - 'prices-0-tax_included': 'on', - 'prices-0-valid_from': '2010-05-19', - 'prices-0-valid_until': '', - - 'prices-INITIAL_FORMS': '0', - 'prices-MAX_NUM_FORMS': '', - 'prices-TOTAL_FORMS': '1', - - 'rawcontent_set-INITIAL_FORMS': '0', - 'rawcontent_set-MAX_NUM_FORMS': '', - 'rawcontent_set-TOTAL_FORMS': '0', - - 'mediafilecontent_set-INITIAL_FORMS': '0', - 'mediafilecontent_set-MAX_NUM_FORMS': '', - 'mediafilecontent_set-TOTAL_FORMS': '0', - - 'variations-INITIAL_FORMS': '0', - 'variations-MAX_NUM_FORMS': '', - 'variations-TOTAL_FORMS': '0', - } - - # Test automatic creation of one product variation in the absence of options - self.assertRedirects( - self.client.post(self.product_admin_url + 'add/', product_data), - self.product_admin_url) - p = Product.objects.get(pk=3) - self.assertEqual(p.variations.count(), 1) diff --git a/plata/tests/views.py b/plata/tests/views.py index 3176203f..4234dfd6 100644 --- a/plata/tests/views.py +++ b/plata/tests/views.py @@ -17,6 +17,9 @@ from plata.tests.base import PlataTest, get_request +Product = plata.product_model() + + class ViewTest(PlataTest): def setUp(self): self.ORIG_TEMPLATE_DIRS = settings.TEMPLATE_DIRS