import axios from 'axios'; import * as api from '../../factory/api'; import BridgeFunction from '../../model/bridge/bridgeFunction'; import RequestInternal from '../../model/bridge/requestInternal'; import { MiniAppCBType } from '../../model/miniAppApi'; import { MiniAppError, MiniAppErrorType } from '../../model/miniAppError'; import * as miniAppRequest from '../../model/miniAppRequest'; import { BridgeCallbackHandlerMock } from './bridgeCallbackHandlerMock.test'; jest.mock('./../../model/miniAppRequest'); jest.mock('./../../factory/api'); let call: BridgeFunction; let cbHandler: BridgeCallbackHandlerMock; beforeAll(() => { window.open = jest.fn(); call = new RequestInternal(); cbHandler = new BridgeCallbackHandlerMock(); call.cbHandler = cbHandler; jest .spyOn(miniAppRequest, 'getRequest') .mockReturnValue(Promise.resolve(axios({}))); jest .spyOn(miniAppRequest, 'getHost') .mockReturnValue('https://app.paypay.ne.jp'); }); afterEach(() => { cbHandler.messages.length = 0; }); test('RequestInternal - with isInternal as false', async () => { await call.execute({}); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.fail, payload: new MiniAppError(MiniAppErrorType.invalidResponse), }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); }); test('RequestInternal with isInternal as true', async () => { jest .spyOn(api, 'getMiniAppDetail') .mockReturnValue( Promise.resolve({ data: { unsigned: { data: { isInternal: true } } } }) ); await call.execute({ header: '', path: '/v1/getOrder' }); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.fail, payload: new MiniAppError(MiniAppErrorType.invalidResponse), }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); }); test('RequestInternal - invalidResponse error', async () => { jest .spyOn(api, 'getMiniAppDetail') .mockReturnValue( Promise.resolve({ data: { unsigned: { data: { isInternal: true } } } }) ); await call.execute({ endpointType: 'bff', environment: 'stg', header: '', path: 'v1/getOrder', method: 'get', }); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.fail, payload: new MiniAppError(MiniAppErrorType.invalidResponse), }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); }); xtest('RequestInternal - success', async () => { jest.spyOn(miniAppRequest, 'getRequest').mockReturnValue( Promise.resolve({ data: {}, status: 200, statusText: '', headers: '', config: {}, }) ); await call.execute({ endpointType: 'bff', environment: 'stg', header: '', path: 'v1/getOrder', method: 'get', }); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.success, payload: { data: '{}', statusCode: 200, }, }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); });