add test for the Manufacturer model

remotes/origin/ESHOP_refactor_products_app
FUNNYDMAN 7 years ago
parent 7cd4a3fbce
commit 06d39b615b
  1. 25
      cart/migrations/0002_auto_20181027_1653.py
  2. 2
      core/models.py
  3. 25
      products/migrations/0002_auto_20181027_1653.py
  4. 32
      products/models.py
  5. 24
      products/tests.py
  6. 4
      products/urls.py

@ -0,0 +1,25 @@
# Generated by Django 2.0.7 on 2018-10-27 16:53
import datetime
from django.db import migrations, models
from django.utils.timezone import utc
class Migration(migrations.Migration):
dependencies = [
('cart', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='discount',
name='code',
field=models.CharField(blank=True, default='866872fd-bf5a-48bc-8e22-c3581eb7a307', max_length=50, unique=True, verbose_name='Код'),
),
migrations.AlterField(
model_name='discount',
name='valid_to',
field=models.DateTimeField(blank=True, default=datetime.datetime(2018, 11, 3, 16, 53, 38, 906817, tzinfo=utc), verbose_name='Конец'),
),
]

@ -154,7 +154,7 @@ class Certificate(AbstractStatusModel):
})
name = models.CharField(_('Название'), max_length=255)
image = models.FileField(_('Изображение'), upload_to=upload_file_to, blank=True,null=True)
image = models.FileField(_('Изображение'), upload_to=upload_file_to, blank=True, null=True)
preview = models.FileField(_('Миниатюрка'), upload_to=upload_file_to)
class Meta:

@ -0,0 +1,25 @@
# Generated by Django 2.0.7 on 2018-10-27 16:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='manufacturer',
name='image',
field=models.ImageField(default=1, upload_to='producers', verbose_name='изображение'),
preserve_default=False,
),
migrations.AlterField(
model_name='manufacturer',
name='name',
field=models.CharField(default=1, max_length=256, verbose_name='название'),
preserve_default=False,
),
]

@ -69,12 +69,10 @@ STATUS_CHOICES = (
# verbose_name_plural = _('Аттрибуты продукта')
# @TODO: tranlsate into english and use traslation
class Manufacturer(AbstractStatusModel):
name = models.CharField(_('название'), max_length=64, blank=True, null=True, default=None)
name = models.CharField(_('название'), max_length=256, blank=False, null=False)
slug = AutoSlugField(verbose_name=_('код'), unique=True, populate_from='name')
image = models.ImageField(_('изображение'), upload_to='producers', blank=True, null=True)
image = models.ImageField(_('изображение'), upload_to='producers', blank=False, null=False)
status = models.SmallIntegerField(_('статус'), default=STATUS_DEFAULT, choices=STATUS_CHOICES)
def __str__(self):
@ -93,12 +91,11 @@ class ProductCategory(AbstractStatusMPTTModel):
'filename': filename
})
name = models.CharField(_('название'), db_index=True, unique=True, max_length=64, blank=True, null=True,
default=None)
name = models.CharField(_('название'), db_index=True, unique=True, max_length=64)
slug = AutoSlugField(_('код'), populate_from='name')
parent = TreeForeignKey('self', verbose_name=_('родительская категория'), on_delete=models.CASCADE, null=True,
blank=True, related_name='children')
image = models.FileField(_("иконка"), upload_to=get_file_path, blank=True)
image = models.FileField(_("иконка"), upload_to=get_file_path, blank=False, null=False)
status = models.SmallIntegerField(_('статус'), default=STATUS_DEFAULT, choices=STATUS_CHOICES)
def __str__(self):
@ -115,10 +112,9 @@ class ProductCategory(AbstractStatusMPTTModel):
class MPTTMeta:
order_insertion_by = ('name',)
# @TODO: tranlsate into english and use traslation
class Meta:
unique_together = ('slug', 'parent')
ordering = ('tree_id', 'level')
unique_together = (_('slug'), _('parent'))
ordering = (_('tree_id'), _('level'))
verbose_name = _("Категория")
verbose_name_plural = _("Категории")
@ -158,7 +154,6 @@ class Product(AbstractStatusMPTTModel):
verbose_name_plural = _('Продукты')
# @TODO: tranlsate into english and use traslation
class ProductRate(AbstractDateTimeModel):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
@ -169,21 +164,6 @@ class ProductRate(AbstractDateTimeModel):
verbose_name_plural = _('Рейтинг продукта')
#
# # @TODO: translate into english and use traslation
# class ProductAttributeValue(AbstractDateTimeModel):
# attribute = models.ForeignKey(ProductAttribute, on_delete=models.CASCADE, related_name='value')
# value = HStoreField(_('значение'),default="")
#
# def __str__(self):
# return self.value.serialize
#
# class Meta:
# unique_together = ('attribute', 'value')
# verbose_name = _('Значение аттрибута')
# verbose_name_plural = _('Значение аттрибутов')
# ----------------- PRODUCT IMAGE STATUS LIST ------------------
class ProductImageManager(models.Manager):

@ -1,3 +1,25 @@
from django.test import TestCase
from .models import Manufacturer, STATUS_DEFAULT
# Create your tests here.
class ManufactureTestCase(TestCase):
@classmethod
def setUpTestData(cls):
cls.mock_path_to_image = 'path/to/image/file.png'
Manufacturer.objects.create(name='TestManufacture', image=cls.mock_path_to_image, status=STATUS_DEFAULT)
def test_default_status(self):
manufacture_obj = Manufacturer.objects.get(name='TestManufacture')
self.assertEqual(manufacture_obj.status, STATUS_DEFAULT)
def test_path_to_image(self):
manufacture_obj = Manufacturer.objects.get(name='TestManufacture')
self.assertEqual(manufacture_obj.image, self.mock_path_to_image)
class ProductCategoryTestCase(TestCase):
pass
class ProductTestCase(TestCase):
pass

@ -1,11 +1,11 @@
import mptt_urls
from django.urls import re_path
from django.urls import re_path, path
from . import views
from .models import ProductCategory, Product
urlpatterns = [
re_path(r'^list/$', views.ProductListView.as_view(), name='product_list'),
path('list/', views.ProductListView.as_view(), name='product_list'),
re_path(r'^list/(?P<path>.*)',
mptt_urls.view(model=ProductCategory, view=views.ProductListView.as_view(), slug_field='slug'),
name='product_list'

Loading…
Cancel
Save