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