import path from 'node:path'; import { beforeEach, describe, expect, test, vi } from 'vitest'; import { loadCommonJsModule } from '../test-utils/loadCommonJsModule.js'; const TEST_TEMPLATE_ID = 'm5z7BkkBhJGbcH0cdDeHaeRU2tViDEguP38XdrRRCdU'; const subscribeBridgePath = path.resolve( process.cwd(), 'miniprogram/host-bridge/subscribeMessage.js', ); const subscribeShellPath = path.resolve( process.cwd(), 'miniprogram/shell/subscribeMessage.js', ); describe('wechat subscribe-message shell page', () => { let createSubscribeMessagePage; beforeEach(() => { globalThis.wx = { navigateBack: vi.fn(), requestSubscribeMessage: vi.fn(), setStorageSync: vi.fn(), }; const subscribeMessageBridge = loadCommonJsModule(subscribeBridgePath); const subscribeMessageShell = loadCommonJsModule(subscribeShellPath, { '../host-bridge/subscribeMessage': subscribeMessageBridge, }); createSubscribeMessagePage = subscribeMessageShell.createSubscribeMessagePage; }); test('requests generation-result subscribe template and stores result', () => { globalThis.wx.requestSubscribeMessage.mockImplementationOnce((options) => { options.success?.({ [TEST_TEMPLATE_ID]: 'accept', }); }); const page = createSubscribeMessagePage( { setData: vi.fn() }, { templateId: TEST_TEMPLATE_ID }, ); page.onLoad({ requestId: 'request-1' }); page.requestSubscribe(); expect(globalThis.wx.requestSubscribeMessage).toHaveBeenCalledWith({ tmplIds: [TEST_TEMPLATE_ID], success: expect.any(Function), fail: expect.any(Function), }); expect(globalThis.wx.setStorageSync).toHaveBeenCalledWith( 'genarrative:wechat-subscribe-result', 'request-1:success', ); expect(globalThis.wx.navigateBack).toHaveBeenCalled(); }); });