1import nock from 'nock'; 2import { parse } from 'semver'; 3 4import { getExpoApiBaseUrl } from '../endpoint'; 5import { getReleasedVersionsAsync, getVersionsAsync } from '../getVersions'; 6 7beforeAll(() => { 8 process.env.EXPO_NO_CACHE = 'true'; 9}); 10 11describe(getVersionsAsync, () => { 12 it('gets versions', async () => { 13 const scope = nock(getExpoApiBaseUrl()) 14 .get('/v2/versions/latest') 15 .reply(200, require('./fixtures/versions-latest.json')); 16 const versions = await getVersionsAsync(); 17 expect(versions).toEqual(require('./fixtures/versions-latest.json').data); 18 expect(scope.isDone()).toBe(true); 19 }); 20 it('fails when the servers are down', async () => { 21 const scope = nock(getExpoApiBaseUrl()) 22 .get('/v2/versions/latest') 23 .reply(500, 'something went wrong'); 24 await expect(getVersionsAsync()).rejects.toThrowError(/Expo server/); 25 expect(scope.isDone()).toBe(true); 26 }); 27}); 28 29describe(getReleasedVersionsAsync, () => { 30 it('gets released versions', async () => { 31 const scope = nock(getExpoApiBaseUrl()) 32 .get('/v2/versions/latest') 33 .reply(200, require('./fixtures/versions-latest.json')); 34 const versions = await getReleasedVersionsAsync(); 35 // A list of SDK versions like `43.0.0` 36 expect( 37 Object.keys(versions).every((value) => { 38 return parse(value) && value.endsWith('.0.0'); 39 }) 40 ); 41 expect(scope.isDone()).toBe(true); 42 }); 43}); 44