1*8d307f52SEvan Baconimport nock from 'nock';
2*8d307f52SEvan Bacon
3*8d307f52SEvan Baconimport { getExpoApiBaseUrl } from '../endpoint';
4*8d307f52SEvan Baconimport { getNativeModuleVersionsAsync } from '../getNativeModuleVersions';
5*8d307f52SEvan Bacon
6*8d307f52SEvan BaconbeforeAll(() => {
7*8d307f52SEvan Bacon  process.env.EXPO_NO_CACHE = 'true';
8*8d307f52SEvan Bacon});
9*8d307f52SEvan Bacon
10*8d307f52SEvan Bacondescribe(getNativeModuleVersionsAsync, () => {
11*8d307f52SEvan Bacon  it('gets versions', async () => {
12*8d307f52SEvan Bacon    const scope = nock(getExpoApiBaseUrl())
13*8d307f52SEvan Bacon      .get('/v2/sdks/44.0.0/native-modules')
14*8d307f52SEvan Bacon      .reply(200, require('./fixtures/native-modules/44.0.0.json'));
15*8d307f52SEvan Bacon    const versions = await getNativeModuleVersionsAsync('44.0.0');
16*8d307f52SEvan Bacon
17*8d307f52SEvan Bacon    expect(Object.keys(versions).length).toBeGreaterThan(4);
18*8d307f52SEvan Bacon
19*8d307f52SEvan Bacon    for (const [key, value] of Object.entries(versions)) {
20*8d307f52SEvan Bacon      expect(key).toEqual(expect.any(String));
21*8d307f52SEvan Bacon      expect(value).toEqual(expect.any(String));
22*8d307f52SEvan Bacon    }
23*8d307f52SEvan Bacon
24*8d307f52SEvan Bacon    expect(scope.isDone()).toBe(true);
25*8d307f52SEvan Bacon  });
26*8d307f52SEvan Bacon  it('fails when the servers are down', async () => {
27*8d307f52SEvan Bacon    const scope = nock(getExpoApiBaseUrl())
28*8d307f52SEvan Bacon      .get('/v2/sdks/44.0.0/native-modules')
29*8d307f52SEvan Bacon      .reply(500, 'something went wrong');
30*8d307f52SEvan Bacon    await expect(getNativeModuleVersionsAsync('44.0.0')).rejects.toThrowError(/Expo server/);
31*8d307f52SEvan Bacon    expect(scope.isDone()).toBe(true);
32*8d307f52SEvan Bacon  });
33*8d307f52SEvan Bacon});
34