forked from erp-dev/erp
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
from datetime import date
|
|
from unittest.mock import patch
|
|
|
|
from django.test import TestCase
|
|
|
|
from basic_info import models as basic_models
|
|
from settlement.models import (
|
|
DailySettlementConfig,
|
|
NotificationChannelEnum,
|
|
SettlementModuleEnum,
|
|
)
|
|
from settlement.tasks import run_daily_settlement
|
|
|
|
|
|
class SettlementTableMappingIntegrationTestCase(TestCase):
|
|
def test_daily_settlement_config_can_persist_in_real_db(self):
|
|
merchant = basic_models.Merchant.objects.create(
|
|
name='表映射测试商户',
|
|
type=basic_models.MerchantTypeEnum.FACTORY,
|
|
)
|
|
|
|
config = DailySettlementConfig.objects.create(
|
|
merchant=merchant,
|
|
settlement_modules=[SettlementModuleEnum.PLATE_ORDER],
|
|
notification_enabled=False,
|
|
notification_channel=NotificationChannelEnum.NONE,
|
|
)
|
|
|
|
fetched = DailySettlementConfig.objects.get(id=config.id)
|
|
self.assertEqual(fetched.merchant_id, merchant.id)
|
|
self.assertEqual(fetched.settlement_modules, [SettlementModuleEnum.PLATE_ORDER])
|
|
|
|
@patch('settlement.tasks.run_merchant_daily_settlement.delay')
|
|
@patch('settlement.tasks.timezone.localdate')
|
|
def test_run_daily_settlement_queries_real_config_table(
|
|
self,
|
|
mock_localdate,
|
|
mock_delay,
|
|
):
|
|
mock_localdate.return_value = date(2026, 2, 9)
|
|
|
|
merchant = basic_models.Merchant.objects.create(
|
|
name='任务查询测试商户',
|
|
type=basic_models.MerchantTypeEnum.FACTORY,
|
|
)
|
|
DailySettlementConfig.objects.create(
|
|
merchant=merchant,
|
|
settlement_modules=[SettlementModuleEnum.PLATE_ORDER],
|
|
notification_enabled=False,
|
|
notification_channel=NotificationChannelEnum.NONE,
|
|
)
|
|
|
|
result = run_daily_settlement.run()
|
|
|
|
self.assertEqual(result['total_merchants'], 1)
|
|
self.assertEqual(result['settlement_date'], '2026-02-08')
|
|
mock_delay.assert_called_once_with(
|
|
merchant_id=merchant.id,
|
|
settlement_date='2026-02-08',
|
|
)
|