diff options
Diffstat (limited to 'integration/bunjs-only-snippets')
-rw-r--r-- | integration/bunjs-only-snippets/url.test.ts | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/integration/bunjs-only-snippets/url.test.ts b/integration/bunjs-only-snippets/url.test.ts new file mode 100644 index 000000000..9bead1f4e --- /dev/null +++ b/integration/bunjs-only-snippets/url.test.ts @@ -0,0 +1,102 @@ +import { describe, it, expect } from "bun:test"; + +describe("url", () => { + it("works", () => { + const inputs: [ + [ + string, + { + hash: string; + host: string; + hostname: string; + href: string; + origin: string; + password: string; + pathname: string; + port: string; + protocol: string; + search: string; + username: string; + } + ] + ] = [ + [ + "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", + { + hash: "#to-use-as-a-placeholder", + host: "api.foo.bar.com:9999", + hostname: "api.foo.bar.com", + href: "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", + origin: "https://api.foo.bar.com:9999", + password: "password", + pathname: "/baz/okay/i/123", + port: "9999", + protocol: "https:", + search: "?ran=out&of=things", + username: "username", + }, + ], + [ + "https://url.spec.whatwg.org/#url-serializing", + { + hash: "#url-serializing", + host: "url.spec.whatwg.org", + hostname: "url.spec.whatwg.org", + href: "https://url.spec.whatwg.org/#url-serializing", + origin: "https://url.spec.whatwg.org", + password: "", + pathname: "/", + port: "", + protocol: "https:", + search: "", + username: "", + }, + ], + [ + "https://url.spec.whatwg.org#url-serializing", + { + hash: "#url-serializing", + host: "url.spec.whatwg.org", + hostname: "url.spec.whatwg.org", + href: "https://url.spec.whatwg.org/#url-serializing", + origin: "https://url.spec.whatwg.org", + password: "", + pathname: "/", + port: "", + protocol: "https:", + search: "", + username: "", + }, + ], + ]; + + for (let [url, values] of inputs) { + const result = new URL(url); + expect(result.hash).toBe(values.hash); + expect(result.host).toBe(values.host); + expect(result.hostname).toBe(values.hostname); + expect(result.href).toBe(values.href); + expect(result.origin).toBe(values.origin); + expect(result.password).toBe(values.password); + expect(result.pathname).toBe(values.pathname); + expect(result.port).toBe(values.port); + expect(result.protocol).toBe(values.protocol); + expect(result.search).toBe(values.search); + expect(result.username).toBe(values.username); + } + + expect(new URL("example.com").pathname).toBe("/"); + expect(new URL("https://example.com").protocol).toBe("https:"); + expect(new URL("http://example.com").protocol).toBe("http:"); + expect(new URL("example.com/foo").pathname).toBe("/foo"); + expect(new URL("example.com/foo/bar/").pathname).toBe("/foo/bar/"); + expect(new URL("example.com/foo/bar/?search=true").search).toBe( + "?search=true" + ); + expect(new URL("example.com/foo/bar/?search=true#fragment").search).toBe( + "?search=true" + ); + expect(new URL("https://example.com").href).toBe("https://example.com/"); + expect(new URL("example.com").hostname).toBe("example.com"); + }); +}); |