UNPKG

@applicaster/quick-brick-core

Version:

Core package for Applicaster's Quick Brick App

97 lines (80 loc) 2.55 kB
import * as helpers from "../index"; import btoa from "btoa"; describe("url scheme helpers", () => { describe("parseUrl", () => { it("returns a valid object", () => { const scheme = "foo"; const host = "host"; const path = "/path/to/file"; const queryString = "p=1&q=qVar"; const query = { p: "1", q: "qVar", }; const fragment = "hashValue"; const urlString = `${scheme}://${host}${path}?${queryString}#${fragment}`; expect(helpers.parseUrl(urlString)).toEqual( expect.objectContaining({ scheme, host, path, query, fragment, }) ); }); it("handles present?data_source=&entry_id=", () => { const scheme = "app"; const data_source_string = "data_source_string"; const data_source_string_encoded = "ZGF0YV9zb3VyY2Vfc3RyaW5n"; const entry_id_encoded = "QTEyMzQ="; const urlString = `${scheme}://present?data_source=${data_source_string_encoded}&entry_id=${entry_id_encoded}`; expect(helpers.parseUrl(urlString)).toEqual( expect.objectContaining({ scheme, host: "present", query: { data_source: data_source_string, entry_id: entry_id_encoded, }, }) ); }); }); describe("decodeUrl", () => { it("decodes an encoded url", () => { const decodedUrl = "feed://fetchData?type=foo&url=bar"; const encodedUrl = encodeURIComponent(btoa(decodedUrl)); expect(helpers.decodeUrl(encodedUrl)).toEqual(decodedUrl); }); it("returns the original string if it fails to be decoded", () => { const urlString = "not encoded string"; expect(helpers.decodeUrl(urlString)).not.toEqual(urlString); }); }); describe("unescapes html entities", () => { it("unescapes html entities", () => { const scheme = "foo"; const host = "host"; const path = "/path/to/file"; const queryString = "p=1&amp;q=qVar&amp;argWithEntities=&quot;this&gt;&lt;is%20a%20&apos;test"; const query = { p: "1", q: "qVar", argWithEntities: "\"this><is a 'test", }; const fragment = "hashValue"; const urlString = `${scheme}://${host}${path}?${queryString}#${fragment}`; expect(helpers.parseUrl(urlString)).toEqual( expect.objectContaining({ scheme, host, path, query, fragment, }) ); }); }); });