1e32ccf9fSEvan Baconimport { isInteractive } from '../../utils/interactive'; 2*065a44f7SCedric van Puttenimport { openBrowserAsync } from '../../utils/open'; 3e32ccf9fSEvan Baconimport { registerAsync } from '../registerAsync'; 4e32ccf9fSEvan Bacon 5*065a44f7SCedric van Puttenjest.mock('../../utils/open'); 6e32ccf9fSEvan Baconjest.mock('../../utils/interactive', () => ({ 7e32ccf9fSEvan Bacon isInteractive: jest.fn(() => true), 8e32ccf9fSEvan Bacon})); 9e32ccf9fSEvan Bacon 10e32ccf9fSEvan Baconconst originalEnv = process.env; 11e32ccf9fSEvan BaconbeforeEach(() => { 12e32ccf9fSEvan Bacon delete process.env.EXPO_OFFLINE; 13e32ccf9fSEvan Bacon delete process.env.CI; 14e32ccf9fSEvan Bacon}); 15e32ccf9fSEvan Bacon 16e32ccf9fSEvan BaconafterAll(() => { 17e32ccf9fSEvan Bacon process.env = originalEnv; 18e32ccf9fSEvan Bacon}); 19e32ccf9fSEvan Bacon 20e32ccf9fSEvan Baconit(`asserts that registration is not supported in offline-mode`, async () => { 21e32ccf9fSEvan Bacon process.env.EXPO_OFFLINE = '1'; 22e32ccf9fSEvan Bacon await expect(registerAsync()).rejects.toThrowErrorMatchingInlineSnapshot( 23e32ccf9fSEvan Bacon `"Cannot register an account in offline-mode"` 24e32ccf9fSEvan Bacon ); 25e32ccf9fSEvan Bacon expect(openBrowserAsync).not.toBeCalled(); 26e32ccf9fSEvan Bacon}); 27e32ccf9fSEvan Bacon 28e32ccf9fSEvan Baconit(`asserts that registration is not supported in non-interactive environments`, async () => { 29e32ccf9fSEvan Bacon jest.mocked(isInteractive).mockReturnValueOnce(false); 30e32ccf9fSEvan Bacon 31e32ccf9fSEvan Bacon await expect(registerAsync()).rejects.toThrow( 32e32ccf9fSEvan Bacon expect.objectContaining({ 33e32ccf9fSEvan Bacon name: 'CommandError', 34e32ccf9fSEvan Bacon message: expect.stringContaining('Cannot register an account in CI.'), 35e32ccf9fSEvan Bacon }) 36e32ccf9fSEvan Bacon ); 37e32ccf9fSEvan Bacon 38e32ccf9fSEvan Bacon expect(openBrowserAsync).not.toBeCalled(); 39e32ccf9fSEvan Bacon}); 40e32ccf9fSEvan Bacon 41e32ccf9fSEvan Baconit(`launches a registration window`, async () => { 42e32ccf9fSEvan Bacon jest.mocked(isInteractive).mockReturnValueOnce(true); 43e32ccf9fSEvan Bacon 44e32ccf9fSEvan Bacon await registerAsync(); 45e32ccf9fSEvan Bacon 46e32ccf9fSEvan Bacon expect(openBrowserAsync).toBeCalledWith('https://expo.dev/signup'); 47e32ccf9fSEvan Bacon}); 48