1
0
forked from erp-dev/erp

feat: change segment_size to decimal in Product model

This commit is contained in:
2025-12-27 14:48:24 +08:00
parent 69c3daa919
commit ce0cf3256c
8 changed files with 48 additions and 426 deletions

View File

@@ -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)]