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