fix: switch miniprogram channel by env version
This commit is contained in:
@@ -25,6 +25,9 @@ type MiniProgramPage = {
|
||||
|
||||
function createWxMock() {
|
||||
return {
|
||||
getAccountInfoSync: vi.fn(() => ({
|
||||
miniProgram: { envVersion: 'release' },
|
||||
})),
|
||||
getStorageSync: vi.fn(() => ''),
|
||||
getSystemInfoSync: vi.fn(() => ({ platform: 'ios' })),
|
||||
login: vi.fn(),
|
||||
@@ -57,6 +60,8 @@ function loadWebViewPage(
|
||||
if (requestPath === '../../config') {
|
||||
return {
|
||||
API_BASE_URL: 'https://www.genarrative.world/',
|
||||
DEV_API_BASE_URL: 'https://dev.genarrative.world/',
|
||||
DEV_WEB_VIEW_ENTRY_URL: 'https://dev.genarrative.world/',
|
||||
MINI_PROGRAM_APP_ID: 'wx-test-app',
|
||||
MINI_PROGRAM_ENV: 'release',
|
||||
WEB_VIEW_ENTRY_URL: 'https://www.genarrative.world/',
|
||||
@@ -182,6 +187,51 @@ describe('mini-program web-view auth page', () => {
|
||||
);
|
||||
});
|
||||
|
||||
test('体验版自动切到 dev 子域名并透传 trial 环境', async () => {
|
||||
const wxMock = createWxMock();
|
||||
wxMock.getAccountInfoSync.mockReturnValue({
|
||||
miniProgram: { envVersion: 'trial' },
|
||||
});
|
||||
const page = loadWebViewPage(wxMock);
|
||||
|
||||
await page.onLoad({});
|
||||
|
||||
expect(page.data.webViewUrl).toBe(
|
||||
'https://dev.genarrative.world/?clientType=mini_program&clientRuntime=wechat_mini_program&miniProgramEnv=trial',
|
||||
);
|
||||
});
|
||||
|
||||
test('开发版自动切到 dev 子域名并把 develop 规整为 dev', async () => {
|
||||
const wxMock = createWxMock();
|
||||
wxMock.getAccountInfoSync.mockReturnValue({
|
||||
miniProgram: { envVersion: 'develop' },
|
||||
});
|
||||
wxMock.login.mockImplementation(({ success }) => {
|
||||
success({ code: 'wx-login-code' });
|
||||
});
|
||||
wxMock.request.mockImplementation(({ success }) => {
|
||||
success({
|
||||
statusCode: 200,
|
||||
data: {
|
||||
token: 'jwt-pending-wechat',
|
||||
bindingStatus: 'pending_bind_phone',
|
||||
},
|
||||
});
|
||||
});
|
||||
const page = loadWebViewPage(wxMock);
|
||||
|
||||
await page.onLoad({ authAction: 'login', returnTo: 'previous' });
|
||||
|
||||
expect(wxMock.request).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
url: 'https://dev.genarrative.world/api/auth/wechat/miniprogram-login',
|
||||
header: expect.objectContaining({
|
||||
'x-mini-program-env': 'dev',
|
||||
}),
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
test('onShow 二次检查支付结果并写回 web-view hash', () => {
|
||||
const wxMock = createWxMock();
|
||||
wxMock.getStorageSync.mockImplementation((key) =>
|
||||
|
||||
Reference in New Issue
Block a user