From 1f47bdd69d4c07c2d183cdaf8d86dcf5ecf4b662 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Tue, 2 Mar 2021 19:09:58 +0100 Subject: [PATCH] test(op_crates/web): add regression tests for past URL bugs (#9639) (#9639) Closes: #9383 --- cli/tests/unit/url_test.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/cli/tests/unit/url_test.ts b/cli/tests/unit/url_test.ts index e32cab72a9..8d280ccb5a 100644 --- a/cli/tests/unit/url_test.ts +++ b/cli/tests/unit/url_test.ts @@ -1,5 +1,11 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -import { assert, assertEquals, assertThrows, unitTest } from "./test_util.ts"; +import { + assert, + assertEquals, + assertStrictEquals, + assertThrows, + unitTest, +} from "./test_util.ts"; unitTest(function urlParsing(): void { const url = new URL( @@ -470,3 +476,22 @@ unitTest(function emptyPortForSchemeDefaultPort(): void { url2.protocol = "http"; assertEquals(url2.port, ""); }); + +unitTest(function assigningPortPropertyAffectsReceiverOnly() { + // Setting `.port` should update only the receiver. + const u1 = new URL("http://google.com/"); + // deno-lint-ignore no-explicit-any + const u2 = new URL(u1 as any); + u2.port = "123"; + assertStrictEquals(u1.port, ""); + assertStrictEquals(u2.port, "123"); +}); + +unitTest(function urlSearchParamsIdentityPreserved() { + // URLSearchParams identity should not be lost when URL is updated. + const u = new URL("http://foo.com/"); + const sp1 = u.searchParams; + u.href = "http://bar.com/?baz=42"; + const sp2 = u.searchParams; + assertStrictEquals(sp1, sp2); +});