优化斗鱼充值日志与配置
This commit is contained in:
@@ -32,6 +32,7 @@ class DouyuGoldRechargeChannelTests(unittest.TestCase):
|
||||
email="mail@example.com",
|
||||
email_password="mail-password",
|
||||
uid="10001",
|
||||
nickname="罗炅729",
|
||||
)
|
||||
self.session.add(self.account)
|
||||
self.session.commit()
|
||||
@@ -52,7 +53,7 @@ class DouyuGoldRechargeChannelTests(unittest.TestCase):
|
||||
self.engine.dispose()
|
||||
|
||||
@patch("web.backend.services.douyu_runner.FishFinRechargeClient")
|
||||
def test_supplier_channel_creates_order_using_uid_and_finishes_on_success(self, client_class):
|
||||
def test_supplier_channel_creates_order_using_nickname_and_finishes_on_success(self, client_class):
|
||||
supplier = Mock()
|
||||
supplier.create_order.return_value = {
|
||||
"code": 200,
|
||||
@@ -72,12 +73,13 @@ class DouyuGoldRechargeChannelTests(unittest.TestCase):
|
||||
self.session, self.task, self.account, "acf_uid=10001", config,
|
||||
)
|
||||
|
||||
expected_order_id = self.runner._supplier_out_order_id(self.task)
|
||||
supplier.create_order.assert_called_once_with(
|
||||
buy_num=10,
|
||||
pay_amount=unittest.mock.ANY,
|
||||
out_order_id=f"DYGF{self.task.id}",
|
||||
out_order_id=expected_order_id,
|
||||
product_id="gold-product",
|
||||
recharge_arg=[{"templateName": "斗鱼账号", "templateVal": "10001"}],
|
||||
recharge_arg=[{"templateName": "斗鱼账号", "templateVal": "罗炅729"}],
|
||||
order_type=0,
|
||||
notify_url=unittest.mock.ANY,
|
||||
)
|
||||
@@ -87,12 +89,40 @@ class DouyuGoldRechargeChannelTests(unittest.TestCase):
|
||||
self.assertEqual(self.task.result["recharge_channel"], "supplier_api")
|
||||
self.assertEqual(self.task.result["supplier_order_status"], 2)
|
||||
self.assertEqual(self.task.result["buy_num"], 10)
|
||||
self.assertEqual(self.task.result["out_order_id"], f"DYGF{self.task.id}")
|
||||
self.assertEqual(self.task.result["out_order_id"], expected_order_id)
|
||||
self.assertEqual(self.task.result["recharge_account"], "罗炅729")
|
||||
self.assertEqual(self.task.result["douyu_uid"], "10001")
|
||||
self.assertEqual(self.task.result["order_id"], "supplier-001")
|
||||
self.assertEqual(self.task.result["pay_amount"], "10")
|
||||
self.assertNotIn("pay_url", self.task.result)
|
||||
self.assertNotIn("sign", self.task.result["supplier_order"])
|
||||
|
||||
@patch("web.backend.services.douyu_runner.FishFinRechargeClient")
|
||||
def test_supplier_channel_rejects_account_without_nickname(self, client_class):
|
||||
self.account.nickname = ""
|
||||
self.session.commit()
|
||||
config = {
|
||||
"gold_recharge_channel": "supplier_api",
|
||||
"gold_api_product_id": "gold-product",
|
||||
"gold_api_account_template_name": "斗鱼昵称",
|
||||
}
|
||||
|
||||
self.runner._execute_create_gold_qr(
|
||||
self.session, self.task, self.account, "acf_uid=10001", config,
|
||||
)
|
||||
|
||||
client_class.assert_not_called()
|
||||
self.session.refresh(self.task)
|
||||
self.assertEqual(self.task.status, "failed")
|
||||
self.assertIn("斗鱼昵称", self.task.message)
|
||||
|
||||
def test_supplier_out_order_id_reuses_persisted_value(self):
|
||||
self.task.supplier_out_order_id = "DYGFHISTORICAL-001"
|
||||
self.assertEqual(
|
||||
self.runner._supplier_out_order_id(self.task),
|
||||
"DYGFHISTORICAL-001",
|
||||
)
|
||||
|
||||
@patch("web.backend.services.douyu_runner.FishFinRechargeClient")
|
||||
def test_supplier_channel_marks_non_200_create_response_as_failed(self, client_class):
|
||||
supplier = Mock()
|
||||
@@ -113,7 +143,7 @@ class DouyuGoldRechargeChannelTests(unittest.TestCase):
|
||||
self.assertEqual(self.task.message, "商品已下架")
|
||||
|
||||
def test_supplier_callback_verifies_signature_and_updates_terminal_task(self):
|
||||
self.task.supplier_out_order_id = f"DYGF{self.task.id}"
|
||||
self.task.supplier_out_order_id = f"DYGFBATCHT{self.task.id}"
|
||||
self.task.result = {"recharge_channel": "supplier_api", "out_order_id": self.task.supplier_out_order_id}
|
||||
self.session.commit()
|
||||
client = FishFinRechargeClient(FishFinRechargeConfig(
|
||||
|
||||
Reference in New Issue
Block a user