Files
lotteryLaravel/e2e/tests/api/13.credit-settlement-win.spec.ts
kang 6ec9634704
Some checks failed
lotterLaravel CI / test (push) Has been cancelled
feat: 添加E2E测试环境配置支持
添加LOTTERY_E2E环境变量来控制E2E测试相关功能,
包括绕过验证码、登录限制和钱包API URL验证,
同时更新composer.json以包含E2E专用的提供者和服务。
2026-06-18 14:42:22 +08:00

64 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* E2E信用盘中奖结算 → game_settlement_win 释额 + 玩家流水 win_credit。
*/
import { test, expect } from '@playwright/test';
import {
adminLoginViaBypass,
e2e,
fetchOpenDrawNo,
playerLoginViaBypass,
playerCtxOf,
setupCreditPlayer,
} from './_helper';
import { runWalletDrawSettlement } from './helpers/draw-settlement';
test('信用玩家中奖结算 → credit_ledger game_settlement_win + 钱包流水 win_credit', async () => {
test.setTimeout(240_000);
const winNumber = `7${String(Date.now()).slice(-3)}`;
const credit = await setupCreditPlayer({
credit_limit: 100_000,
username: `e2e_win_${Date.now()}`,
});
const drawNo = await fetchOpenDrawNo();
const adminSession = await adminLoginViaBypass();
const playerSession = await playerLoginViaBypass({
site_code: credit.site_code,
username: credit.username,
password: credit.password,
});
await runWalletDrawSettlement({
adminToken: adminSession.accessToken,
playerToken: playerSession.access_token,
drawNo,
betNumber: winNumber,
betAmount: 10_000,
expectWalletIncrease: false,
});
const ledger = await e2e<any>(
'GET',
`/inspect/credit-ledger?player_id=${credit.player_id}&limit=20`,
);
const hold = ledger.data.rows.find((r: any) => r.reason === 'bet_hold');
const winRow = ledger.data.rows.find((r: any) => r.reason === 'game_settlement_win');
expect(hold, '下注后应有 bet_hold').toBeTruthy();
expect(winRow, '中奖结算后应有 game_settlement_win').toBeTruthy();
expect(Number(winRow.amount)).toBeGreaterThan(0);
const ctx = await playerCtxOf(playerSession.access_token);
const logs = await ctx.get('/api/v1/wallet/logs?page=1&size=20');
expect(logs.ok()).toBeTruthy();
const logsBody = (await logs.json()) as any;
expect(logsBody.code).toBe(0);
expect(logsBody.data.ledger_source).toBe('credit_ledger');
const winLog = logsBody.data.items.find(
(i: any) => i.biz_type === 'game_settlement_win' || i.type === 'win_credit',
);
expect(winLog, '玩家流水应展示中奖释额').toBeTruthy();
await ctx.dispose();
});