1import * as DevicePushTokenAutoRegistration from '../DevicePushTokenAutoRegistration.fx'; 2import { DevicePushToken } from '../Tokens.types'; 3import getDevicePushTokenAsync from '../getDevicePushTokenAsync'; 4import { updateDevicePushTokenAsync } from '../utils/updateDevicePushTokenAsync'; 5 6const ENABLED_REGISTRATION_FIXTURE: DevicePushTokenAutoRegistration.DevicePushTokenRegistration = { 7 isEnabled: true, 8}; 9const DISABLED_REGISTRATION_FIXTURE: DevicePushTokenAutoRegistration.DevicePushTokenRegistration = { 10 isEnabled: false, 11}; 12 13jest.mock('../utils/updateDevicePushTokenAsync'); 14jest.mock('../ServerRegistrationModule'); 15jest.mock('../getDevicePushTokenAsync'); 16 17describe('__handlePersistedRegistrationInfoAsync', () => { 18 it(`doesn't fail if persisted value is empty`, async () => { 19 const spy = jest.spyOn(console, 'warn').mockImplementation(); 20 await expect( 21 DevicePushTokenAutoRegistration.__handlePersistedRegistrationInfoAsync(null) 22 ).resolves.toBeUndefined(); 23 await expect( 24 DevicePushTokenAutoRegistration.__handlePersistedRegistrationInfoAsync(undefined) 25 ).resolves.toBeUndefined(); 26 await expect( 27 DevicePushTokenAutoRegistration.__handlePersistedRegistrationInfoAsync('{i-am-invalid-json') 28 ).resolves.toBeUndefined(); 29 spy.mockRestore(); 30 }); 31 32 it(`doesn't try to update registration if it's not enabled`, async () => { 33 await DevicePushTokenAutoRegistration.__handlePersistedRegistrationInfoAsync( 34 JSON.stringify(DISABLED_REGISTRATION_FIXTURE) 35 ); 36 expect(getDevicePushTokenAsync).not.toBeCalled(); 37 expect(updateDevicePushTokenAsync).not.toBeCalled(); 38 }); 39 40 it(`does try to update registration if it's enabled`, async () => { 41 const mockPendingDevicePushToken: DevicePushToken = { 42 data: 'i-want-to-be-sent-to-server', 43 type: 'ios', 44 }; 45 ( 46 getDevicePushTokenAsync as jest.MockedFunction<typeof getDevicePushTokenAsync> 47 ).mockResolvedValue(mockPendingDevicePushToken); 48 await DevicePushTokenAutoRegistration.__handlePersistedRegistrationInfoAsync( 49 JSON.stringify(ENABLED_REGISTRATION_FIXTURE) 50 ); 51 expect(updateDevicePushTokenAsync).toBeCalledWith( 52 expect.anything(), 53 mockPendingDevicePushToken 54 ); 55 }); 56}); 57