forked from erp-dev/erp
test: before all tests
This commit is contained in:
@@ -146,10 +146,10 @@ class PrintingJobAPITestCase(TestCase):
|
||||
|
||||
response = self.client.get('/api/v1/printing-jobs/')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 2)
|
||||
self.assertEqual(response.data['count'], 2)
|
||||
|
||||
# 新增字段:批量推进记录(稳定输出 key)
|
||||
for item in response.data:
|
||||
for item in response.data['results']:
|
||||
self.assertIn('batch_advance_records', item)
|
||||
self.assertIsInstance(item['batch_advance_records'], list)
|
||||
self.assertEqual(len(item['batch_advance_records']), 0)
|
||||
@@ -202,7 +202,7 @@ class PrintingJobAPITestCase(TestCase):
|
||||
# list: 应包含 batch_advance_records
|
||||
response = self.client.get('/api/v1/printing-jobs/')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
target = next(item for item in response.data if item['id'] == job.id)
|
||||
target = next(item for item in response.data['results'] if item['id'] == job.id)
|
||||
|
||||
self.assertIn('batch_advance_records', target)
|
||||
self.assertEqual(len(target['batch_advance_records']), 1)
|
||||
@@ -337,8 +337,8 @@ class PrintingJobAPITestCase(TestCase):
|
||||
|
||||
response = self.client.get(f'/api/v1/printing-jobs/?printing_order={self.printing_order.id}')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 1)
|
||||
self.assertEqual(response.data[0]['printing_order'], self.printing_order.id)
|
||||
self.assertEqual(response.data['count'], 1)
|
||||
self.assertEqual(response.data['results'][0]['printing_order'], self.printing_order.id)
|
||||
|
||||
def test_filter_by_product(self):
|
||||
"""测试按产品过滤"""
|
||||
@@ -369,8 +369,8 @@ class PrintingJobAPITestCase(TestCase):
|
||||
|
||||
response = self.client.get(f'/api/v1/printing-jobs/?product={self.product.id}')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 1)
|
||||
self.assertEqual(response.data[0]['product'], self.product.id)
|
||||
self.assertEqual(response.data['count'], 1)
|
||||
self.assertEqual(response.data['results'][0]['product'], self.product.id)
|
||||
|
||||
def test_filter_by_quantity_range(self):
|
||||
"""测试按数量范围过滤"""
|
||||
@@ -401,8 +401,8 @@ class PrintingJobAPITestCase(TestCase):
|
||||
|
||||
response = self.client.get('/api/v1/printing-jobs/?quantity_min=100&quantity_max=200')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 1)
|
||||
self.assertEqual(response.data[0]['quantity'], 150)
|
||||
self.assertEqual(response.data['count'], 1)
|
||||
self.assertEqual(response.data['results'][0]['quantity'], 150)
|
||||
|
||||
def test_search_by_product_name(self):
|
||||
"""测试按产品名称搜索"""
|
||||
@@ -433,8 +433,8 @@ class PrintingJobAPITestCase(TestCase):
|
||||
|
||||
response = self.client.get('/api/v1/printing-jobs/?search=特殊')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(len(response.data), 1)
|
||||
self.assertIn('特殊', response.data[0]['product_name'])
|
||||
self.assertEqual(response.data['count'], 1)
|
||||
self.assertIn('特殊', response.data['results'][0]['product_name'])
|
||||
|
||||
def test_ordering(self):
|
||||
"""测试排序"""
|
||||
@@ -458,13 +458,13 @@ class PrintingJobAPITestCase(TestCase):
|
||||
# 按数量升序
|
||||
response = self.client.get('/api/v1/printing-jobs/?ordering=quantity')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data[0]['quantity'], 100)
|
||||
self.assertEqual(response.data[1]['quantity'], 200)
|
||||
self.assertEqual(response.data['results'][0]['quantity'], 100)
|
||||
self.assertEqual(response.data['results'][1]['quantity'], 200)
|
||||
|
||||
# 按数量降序
|
||||
response = self.client.get('/api/v1/printing-jobs/?ordering=-quantity')
|
||||
self.assertEqual(response.data[0]['quantity'], 200)
|
||||
self.assertEqual(response.data[1]['quantity'], 100)
|
||||
self.assertEqual(response.data['results'][0]['quantity'], 200)
|
||||
self.assertEqual(response.data['results'][1]['quantity'], 100)
|
||||
|
||||
def test_validate_quantity_positive(self):
|
||||
"""测试数量必须大于0"""
|
||||
@@ -570,8 +570,8 @@ class PrintingJobAPITestCase(TestCase):
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
# 验证列表中的状态字段
|
||||
self.assertIn('status', response.data[0])
|
||||
self.assertIn('is_completed', response.data[0])
|
||||
self.assertIn('status', response.data['results'][0])
|
||||
self.assertIn('is_completed', response.data['results'][0])
|
||||
|
||||
def test_job_completion_status(self):
|
||||
"""测试任务完成状态判断"""
|
||||
|
||||
@@ -5,7 +5,6 @@ from rest_framework import viewsets, filters, status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import BasePermission
|
||||
from rest_framework.pagination import LimitOffsetPagination
|
||||
from rest_framework.permissions import DjangoModelPermissions
|
||||
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
|
||||
from django.db.models import CharField, Prefetch
|
||||
@@ -15,6 +14,8 @@ from django.utils.decorators import method_decorator
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django_filters import rest_framework as django_filters
|
||||
from django_filters import IsoDateTimeFilter
|
||||
|
||||
from flower.viewsets import LimitedModelViewSet
|
||||
from printing import models
|
||||
from basic_info.models import MerchantTypeEnum
|
||||
|
||||
@@ -83,7 +84,7 @@ class PrintingOrderFilterSet(django_filters.FilterSet):
|
||||
|
||||
|
||||
@method_decorator(cache_page(20), name='list')
|
||||
class PrintingOrderViewSet(viewsets.ModelViewSet):
|
||||
class PrintingOrderViewSet(LimitedModelViewSet):
|
||||
"""
|
||||
印染订单 ViewSet
|
||||
|
||||
@@ -113,7 +114,6 @@ class PrintingOrderViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
queryset = models.PrintingOrder.objects.all()
|
||||
permission_classes = [DjangoModelPermissions]
|
||||
pagination_class = LimitOffsetPagination
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
|
||||
filterset_class = PrintingOrderFilterSet
|
||||
search_fields = ['customer__name', 'fabric', 'area', 'craft', 'description']
|
||||
@@ -253,7 +253,7 @@ class PrintingJobFilterSet(django_filters.FilterSet):
|
||||
fields = ['printing_order', 'product']
|
||||
|
||||
|
||||
class PrintingJobViewSet(viewsets.ModelViewSet):
|
||||
class PrintingJobViewSet(LimitedModelViewSet):
|
||||
"""
|
||||
印染款式明细 ViewSet
|
||||
|
||||
@@ -288,7 +288,6 @@ class PrintingJobViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
queryset = models.PrintingJob.objects.all()
|
||||
permission_classes = [DjangoModelPermissions, IsPrintingFactory]
|
||||
pagination_class = LimitOffsetPagination
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
|
||||
filterset_class = PrintingJobFilterSet
|
||||
search_fields = ['product__name', 'unit', 'size', 'description']
|
||||
@@ -558,7 +557,7 @@ class PlateOrderFilterSet(django_filters.FilterSet):
|
||||
|
||||
|
||||
@method_decorator(cache_page(20), name='list')
|
||||
class PlateOrderViewSet(viewsets.ModelViewSet):
|
||||
class PlateOrderViewSet(LimitedModelViewSet):
|
||||
"""
|
||||
开版订单 ViewSet
|
||||
|
||||
@@ -607,7 +606,6 @@ class PlateOrderViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.PlateOrder.objects.all()
|
||||
permission_classes = [DjangoModelPermissions]
|
||||
parser_classes = [MultiPartParser, FormParser, JSONParser] # 支持文件上传
|
||||
pagination_class = LimitOffsetPagination
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
|
||||
filterset_class = PlateOrderFilterSet
|
||||
# design_code_normalized: 当 design_code 为空时用 id 兜底,便于搜索数字编号
|
||||
|
||||
Reference in New Issue
Block a user