import * as AssetUris from '../AssetUris'; describe('getFilename', () => { it(`gets the filename from a URL`, () => { let url = 'https://d1wp6m56sqw74a.cloudfront.net/~assets/4bd45bcdf50493e345e817c9281bffbf.png'; expect(AssetUris.getFilename(url)).toBe('4bd45bcdf50493e345e817c9281bffbf.png'); }); it(`returns an empty string when the URL has no path`, () => { let url = 'https://example.com'; expect(AssetUris.getFilename(url)).toBe(''); }); }); describe('getExtension', () => { it(`gets the file extension from a URL`, () => { let url = 'https://d1wp6m56sqw74a.cloudfront.net/~assets/4bd45bcdf50493e345e817c9281bffbf.png'; expect(AssetUris.getFileExtension(url)).toBe('.png'); }); it(`returns an empty string when there is no extension`, () => { let url = 'https://example.com/'; expect(AssetUris.getFileExtension(url)).toBe(''); }); it(`returns an empty string for hidden files with no extension`, () => { let url = 'https://example.com/.hidden'; expect(AssetUris.getFileExtension(url)).toBe(''); }); it(`gets the extension for hidden files with an extension`, () => { let url = 'https://example.com/.hidden.txt'; expect(AssetUris.getFileExtension(url)).toBe('.txt'); }); }); describe('getManifestBaseUrl', () => { it(`returns a URL without the manifest's filename`, () => { let manifestUrl = 'https://expo.io/@user/app/index.exp'; expect(AssetUris.getManifestBaseUrl(manifestUrl)).toBe('https://expo.io/@user/app/'); }); it(`returns the same URL when there is no filename`, () => { let manifestUrl = 'https://expo.io/@user/app/'; expect(AssetUris.getManifestBaseUrl(manifestUrl)).toBe('https://expo.io/@user/app/'); }); it(`normalizes Expo client URI schemes`, () => { let expUrl = 'exp://expo.io/@user/app/index.exp'; expect(AssetUris.getManifestBaseUrl(expUrl)).toBe('http://expo.io/@user/app/'); let expsUrl = 'exps://expo.io/@user/app/index.exp'; expect(AssetUris.getManifestBaseUrl(expsUrl)).toBe('https://expo.io/@user/app/'); }); it(`removes query parameters and fragments`, () => { let manifestUrl = 'https://expo.io/@user/app/index.exp?query=test#hash'; expect(AssetUris.getManifestBaseUrl(manifestUrl)).toBe('https://expo.io/@user/app/'); }); });