import * as api from '../../factory/api'; import BridgeFunction from '../../model/bridge/bridgeFunction'; import GetUserProfile from '../../model/bridge/getUserProfile'; import { MiniAppCBType } from '../../model/miniAppApi'; import { MiniAppError, MiniAppErrorType } from '../../model/miniAppError'; import { BridgeCallbackHandlerMock } from './bridgeCallbackHandlerMock.test'; jest.mock('./../../factory/api'); let call: BridgeFunction; let cbHandler: BridgeCallbackHandlerMock; beforeAll(() => { call = new GetUserProfile(); cbHandler = new BridgeCallbackHandlerMock(); call.cbHandler = cbHandler; }); afterEach(() => { cbHandler.messages.length = 0; }); test('GetUserProfile - fail', async () => { jest .spyOn(api, 'getUserProfile') .mockReturnValue(Promise.resolve({ data: [] })); await call.execute(null); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.fail, payload: new MiniAppError(MiniAppErrorType.serverError), }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); }); test('GetUserProfile - success', async () => { jest.spyOn(api, 'getUserProfile').mockReturnValue( Promise.resolve({ data: { unsigned: { resultInfo: { code: 'SUCCESS' }, data: { firstName: 'first', lastName: 'last', displayName: '080******77', mobile: '08055551777', photoUrl: 'https://image.paypay.ne.jp/icon/user/photo.jpg', }, }, }, }) ); await call.execute(null); expect(cbHandler.messages.length).toBe(2); expect(cbHandler.messages[0]).toStrictEqual({ type: MiniAppCBType.success, payload: { avatarUrl: 'https://image.paypay.ne.jp/icon/user/photo.jpg', email: undefined, fullname: 'last first', nickName: '080******77', phoneNumber: '08055551777', }, }); expect(cbHandler.messages[1]).toStrictEqual({ type: MiniAppCBType.complete }); });