• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3// Tests below are not from WPT.
4
5require('../common');
6const assert = require('assert');
7const { URL, URLSearchParams } = require('url');
8
9{
10  const params = new URLSearchParams();
11  assert.throws(() => {
12    params.delete.call(undefined);
13  }, {
14    code: 'ERR_INVALID_THIS',
15    name: 'TypeError',
16    message: 'Value of "this" must be of type URLSearchParams'
17  });
18  assert.throws(() => {
19    params.delete();
20  }, {
21    code: 'ERR_MISSING_ARGS',
22    name: 'TypeError',
23    message: 'The "name" argument must be specified'
24  });
25
26  const obj = {
27    toString() { throw new Error('toString'); },
28    valueOf() { throw new Error('valueOf'); }
29  };
30  const sym = Symbol();
31  assert.throws(() => params.delete(obj), /^Error: toString$/);
32  assert.throws(() => params.delete(sym),
33                /^TypeError: Cannot convert a Symbol value to a string$/);
34}
35
36// https://github.com/nodejs/node/issues/10480
37// Emptying searchParams should correctly update url's query
38{
39  const url = new URL('http://domain?var=1&var=2&var=3');
40  for (const param of url.searchParams.keys()) {
41    url.searchParams.delete(param);
42  }
43  assert.strictEqual(url.searchParams.toString(), '');
44  assert.strictEqual(url.search, '');
45  assert.strictEqual(url.href, 'http://domain/');
46}
47