summaryrefslogtreecommitdiff
path: root/js/url_search_params_test.ts
blob: 46e8103d932d2a022ffe7c0d4f7e99eeb8f205c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Copyright 2018 the Deno authors. All rights reserved. MIT license.
import { test, assert, assertEqual } from "./test_util.ts";

test(function urlSearchParamsInitString() {
  const init = "c=4&a=2&b=3&%C3%A1=1";
  const searchParams = new URLSearchParams(init);
  assert(
    init === searchParams.toString(),
    "The init query string does not match"
  );
});

test(function urlSearchParamsInitIterable() {
  const init = [["a", "54"], ["b", "true"]];
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.toString(), "a=54&b=true");
});

test(function urlSearchParamsInitRecord() {
  const init = { a: "54", b: "true" };
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.toString(), "a=54&b=true");
});

test(function urlSearchParamsAppendSuccess() {
  const searchParams = new URLSearchParams();
  searchParams.append("a", "true");
  assertEqual(searchParams.toString(), "a=true");
});

test(function urlSearchParamsDeleteSuccess() {
  const init = "a=54&b=true";
  const searchParams = new URLSearchParams(init);
  searchParams.delete("b");
  assertEqual(searchParams.toString(), "a=54");
});

test(function urlSearchParamsGetAllSuccess() {
  const init = "a=54&b=true&a=true";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.getAll("a"), ["54", "true"]);
  assertEqual(searchParams.getAll("b"), ["true"]);
  assertEqual(searchParams.getAll("c"), []);
});

test(function urlSearchParamsGetSuccess() {
  const init = "a=54&b=true&a=true";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.get("a"), "54");
  assertEqual(searchParams.get("b"), "true");
  assertEqual(searchParams.get("c"), null);
});

test(function urlSearchParamsHasSuccess() {
  const init = "a=54&b=true&a=true";
  const searchParams = new URLSearchParams(init);
  assert(searchParams.has("a"));
  assert(searchParams.has("b"));
  assert(!searchParams.has("c"));
});

test(function urlSearchParamsSetSuccess() {
  const init = "a=54&b=true&a=true";
  const searchParams = new URLSearchParams(init);
  searchParams.set("a", "false");
  assertEqual(searchParams.toString(), "b=true&a=false");
});

test(function urlSearchParamsSortSuccess() {
  const init = "c=4&a=2&b=3&a=1";
  const searchParams = new URLSearchParams(init);
  searchParams.sort();
  assertEqual(searchParams.toString(), "a=2&a=1&b=3&c=4");
});

test(function urlSearchParamsForEachSuccess() {
  const init = [["a", "54"], ["b", "true"]];
  const searchParams = new URLSearchParams(init);
  let callNum = 0;
  searchParams.forEach((value, key, parent) => {
    assertEqual(searchParams, parent);
    assertEqual(value, init[callNum][1]);
    assertEqual(key, init[callNum][0]);
    callNum++;
  });
  assertEqual(callNum, init.length);
});

test(function urlSearchParamsMissingName() {
  const init = "=4";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.get(""), "4");
  assertEqual(searchParams.toString(), "=4");
});

test(function urlSearchParamsMissingValue() {
  const init = "4=";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.get("4"), "");
  assertEqual(searchParams.toString(), "4=");
});

test(function urlSearchParamsMissingEqualSign() {
  const init = "4";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.get("4"), "");
  assertEqual(searchParams.toString(), "4=");
});

test(function urlSearchParamsMissingPair() {
  const init = "c=4&&a=54&";
  const searchParams = new URLSearchParams(init);
  assertEqual(searchParams.toString(), "c=4&a=54");
});