const parsePackageURL = require("../parsePackageURL"); describe("parsePackageURL", () => { it("parses plain packages", () => { expect(parsePackageURL("/history@1.0.0/umd/history.min.js")).toEqual({ pathname: "/history@1.0.0/umd/history.min.js", search: "", query: {}, packageName: "history", packageVersion: "1.0.0", filename: "/umd/history.min.js" }); }); it("parses plain packages with a hyphen in the name", () => { expect(parsePackageURL("/query-string@5.0.0/index.js")).toEqual({ pathname: "/query-string@5.0.0/index.js", search: "", query: {}, packageName: "query-string", packageVersion: "5.0.0", filename: "/index.js" }); }); it("parses plain packages with no version specified", () => { expect(parsePackageURL("/query-string/index.js")).toEqual({ pathname: "/query-string/index.js", search: "", query: {}, packageName: "query-string", packageVersion: "latest", filename: "/index.js" }); }); it("parses plain packages with version spec", () => { expect(parsePackageURL("/query-string@>=4.0.0/index.js")).toEqual({ pathname: "/query-string@>=4.0.0/index.js", search: "", query: {}, packageName: "query-string", packageVersion: ">=4.0.0", filename: "/index.js" }); }); it("parses scoped packages", () => { expect(parsePackageURL("/@angular/router@4.3.3/src/index.d.ts")).toEqual({ pathname: "/@angular/router@4.3.3/src/index.d.ts", search: "", query: {}, packageName: "@angular/router", packageVersion: "4.3.3", filename: "/src/index.d.ts" }); }); it("parses package names with a period in them", () => { expect(parsePackageURL("/index.js")).toEqual({ pathname: "/index.js", search: "", query: {}, packageName: "index.js", packageVersion: "latest", filename: "" }); }); it("parses valid query parameters", () => { expect(parsePackageURL("/history?main=browser")).toEqual({ pathname: "/history", search: "?main=browser", query: { main: "browser" }, packageName: "history", packageVersion: "latest", filename: "" }); }); });