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/');
});
});