forked from erp-dev/erp
86 lines
2.9 KiB
Python
86 lines
2.9 KiB
Python
from django.contrib.admin.sites import AdminSite
|
|
from django.contrib.auth import get_user_model
|
|
from django.test import RequestFactory, TestCase
|
|
|
|
from basic_info import models as basic_models
|
|
from printing import admin as printing_admin
|
|
from printing import models as printing_models
|
|
from stateflow import models as stateflow_models
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class PrintingJobAdminSearchTestCase(TestCase):
|
|
def setUp(self):
|
|
self.site = AdminSite()
|
|
self.factory = RequestFactory()
|
|
self.admin_user = User.objects.create_superuser(
|
|
username='admin',
|
|
email='admin@example.com',
|
|
password='testpass123',
|
|
)
|
|
|
|
self.merchant = basic_models.Merchant.objects.create(
|
|
name='测试印花厂',
|
|
type=basic_models.MerchantTypeEnum.FACTORY,
|
|
)
|
|
self.customer = basic_models.Customer.objects.create(
|
|
merchant=self.merchant,
|
|
name='测试客户',
|
|
)
|
|
self.category = basic_models.ProductCategory.objects.create(
|
|
merchant=self.merchant,
|
|
name='测试分类',
|
|
)
|
|
self.product = basic_models.Product.objects.create(
|
|
merchant=self.merchant,
|
|
category=self.category,
|
|
name='测试产品',
|
|
human_id='TEST001',
|
|
unit=basic_models.ProductUnitEnum.METER,
|
|
)
|
|
self.process = stateflow_models.Process.objects.create(name='测试流程')
|
|
self.order = printing_models.PrintingOrder.objects.create(
|
|
customer=self.customer,
|
|
fabric='测试布料',
|
|
width='150cm',
|
|
process=self.process,
|
|
external_order_id='KD20432371',
|
|
)
|
|
self.job = printing_models.PrintingJob.objects.create(
|
|
printing_order=self.order,
|
|
product=self.product,
|
|
quantity=10,
|
|
unit='米',
|
|
size='10x10',
|
|
pieces=1,
|
|
)
|
|
|
|
def test_search_by_external_order_id_does_not_raise_and_returns_job(self):
|
|
model_admin = printing_admin.PrintingJobAdmin(printing_models.PrintingJob, self.site)
|
|
request = self.factory.get('/admin/printing/printingjob/', {'q': 'KD20432371'})
|
|
request.user = self.admin_user
|
|
|
|
queryset, may_have_duplicates = model_admin.get_search_results(
|
|
request,
|
|
printing_models.PrintingJob.objects.all(),
|
|
'KD20432371',
|
|
)
|
|
|
|
self.assertFalse(may_have_duplicates)
|
|
self.assertEqual(list(queryset), [self.job])
|
|
|
|
def test_printing_job_admin_uses_autocomplete_for_large_relations(self):
|
|
model_admin = printing_admin.PrintingJobAdmin(printing_models.PrintingJob, self.site)
|
|
|
|
self.assertEqual(
|
|
model_admin.autocomplete_fields,
|
|
(
|
|
'merchant',
|
|
'printing_order',
|
|
'product',
|
|
'business_object',
|
|
'created_by',
|
|
),
|
|
)
|