urlsearchparams-delete.any.js (3169B)
1 test(function() { 2 var params = new URLSearchParams('a=b&c=d'); 3 params.delete('a'); 4 assert_equals(params + '', 'c=d'); 5 params = new URLSearchParams('a=a&b=b&a=a&c=c'); 6 params.delete('a'); 7 assert_equals(params + '', 'b=b&c=c'); 8 params = new URLSearchParams('a=a&=&b=b&c=c'); 9 params.delete(''); 10 assert_equals(params + '', 'a=a&b=b&c=c'); 11 params = new URLSearchParams('a=a&null=null&b=b'); 12 params.delete(null); 13 assert_equals(params + '', 'a=a&b=b'); 14 params = new URLSearchParams('a=a&undefined=undefined&b=b'); 15 params.delete(undefined); 16 assert_equals(params + '', 'a=a&b=b'); 17 }, 'Delete basics'); 18 19 test(function() { 20 var params = new URLSearchParams(); 21 params.append('first', 1); 22 assert_true(params.has('first'), 'Search params object has name "first"'); 23 assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"'); 24 params.delete('first'); 25 assert_false(params.has('first'), 'Search params object has no "first" name'); 26 params.append('first', 1); 27 params.append('first', 10); 28 params.delete('first'); 29 assert_false(params.has('first'), 'Search params object has no "first" name'); 30 }, 'Deleting appended multiple'); 31 32 test(function() { 33 var url = new URL('http://example.com/?param1¶m2'); 34 url.searchParams.delete('param1'); 35 url.searchParams.delete('param2'); 36 assert_equals(url.href, 'http://example.com/', 'url.href does not have ?'); 37 assert_equals(url.search, '', 'url.search does not have ?'); 38 }, 'Deleting all params removes ? from URL'); 39 40 test(function() { 41 var url = new URL('http://example.com/?'); 42 url.searchParams.delete('param1'); 43 assert_equals(url.href, 'http://example.com/', 'url.href does not have ?'); 44 assert_equals(url.search, '', 'url.search does not have ?'); 45 }, 'Removing non-existent param removes ? from URL'); 46 47 test(() => { 48 const url = new URL('data:space ?test'); 49 assert_true(url.searchParams.has('test')); 50 url.searchParams.delete('test'); 51 assert_false(url.searchParams.has('test')); 52 assert_equals(url.search, ''); 53 assert_equals(url.pathname, 'space %20'); 54 assert_equals(url.href, 'data:space %20'); 55 }, 'Changing the query of a URL with an opaque path with trailing spaces'); 56 57 test(() => { 58 const url = new URL('data:space ?test#test'); 59 url.searchParams.delete('test'); 60 assert_equals(url.search, ''); 61 assert_equals(url.pathname, 'space %20'); 62 assert_equals(url.href, 'data:space %20#test'); 63 }, 'Changing the query of a URL with an opaque path with trailing spaces and a fragment'); 64 65 test(() => { 66 const params = new URLSearchParams(); 67 params.append('a', 'b'); 68 params.append('a', 'c'); 69 params.append('a', 'd'); 70 params.delete('a', 'c'); 71 assert_equals(params.toString(), 'a=b&a=d'); 72 }, "Two-argument delete()"); 73 74 test(() => { 75 const params = new URLSearchParams(); 76 params.append('a', 'b'); 77 params.append('a', 'c'); 78 params.append('b', 'c'); 79 params.append('b', 'd'); 80 params.delete('b', 'c'); 81 params.delete('a', undefined); 82 assert_equals(params.toString(), 'b=d'); 83 }, "Two-argument delete() respects undefined as second arg");