forked from erp-dev/erp
feat: change segment_size to decimal in Product model
This commit is contained in:
@@ -4,7 +4,7 @@ from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase, TransactionTestCase, override_settings
|
||||
from django.db import connections
|
||||
from django.db import connections, close_old_connections
|
||||
from django.utils import timezone
|
||||
from unittest.mock import patch, MagicMock
|
||||
|
||||
@@ -1240,11 +1240,17 @@ class SalesOrderConcurrencyTestCase(TransactionTestCase):
|
||||
|
||||
def test_concurrent_sales_order_approval_updates_balance_once(self):
|
||||
def approve():
|
||||
services.review_sales_order(
|
||||
sales_order_id=self.sales_order.id,
|
||||
target_status=business_models.SalesOrderStatusEnum.APPROVED,
|
||||
reviewed_by=self.user,
|
||||
)
|
||||
# ThreadPoolExecutor 会复用线程;Django 的 DB connection 是线程局部的,
|
||||
# 若不显式关闭,可能导致测试 DB 在 teardown 时仍被占用,无法 DROP。
|
||||
close_old_connections()
|
||||
try:
|
||||
services.review_sales_order(
|
||||
sales_order_id=self.sales_order.id,
|
||||
target_status=business_models.SalesOrderStatusEnum.APPROVED,
|
||||
reviewed_by=self.user,
|
||||
)
|
||||
finally:
|
||||
connections.close_all()
|
||||
|
||||
with ThreadPoolExecutor(max_workers=2) as executor:
|
||||
futures = [executor.submit(approve) for _ in range(2)]
|
||||
|
||||
Reference in New Issue
Block a user