@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
44 lines (38 loc) • 2.21 kB
JavaScript
import assert from 'assert/strict';
import test from 'node:test';
import { makeFullUrl, parseHash, parseQueryString, removeUrlKeyValue, setUrlKeyValue, } from './url';
test('parseQueryString', t => {
assert.deepEqual(parseQueryString(), {});
assert.deepEqual(parseQueryString("http://foo"), {});
assert.deepEqual(parseQueryString("http://foo?p1=1&p2=2"), { p1: '1', p2: '2' });
assert.deepEqual(parseQueryString("http://foo?p1=1&p2=2#someAnchor"), { p1: '1', p2: '2' });
});
test('parseHash', t => {
assert.deepEqual(parseHash(), {});
assert.deepEqual(parseHash("http://foo"), {});
assert.deepEqual(parseHash("http://foo?p1=1&p2=2"), {});
assert.deepEqual(parseHash("http://foo?p1=1&p2=2#someAnchor"), { someAnchor: '' });
assert.deepEqual(parseHash("http://foo?p1=3&p2=4#p1=1&p2=2"), { p1: '1', p2: '2' });
assert.deepEqual(parseHash("http://foo#p1=1&p2=2"), { p1: '1', p2: '2' });
});
test('makeFullUrl', t => {
assert.deepEqual(makeFullUrl("http://foo"), "http://foo");
assert.deepEqual(makeFullUrl("http://foo", "http://fii"), "http://foo");
assert.deepEqual(makeFullUrl("foo/fii", "http://host/folder"), "http://host/folder/foo/fii");
assert.deepEqual(makeFullUrl("/foo/fii", "http://host"), "http://host/foo/fii");
//fix # to full URL
assert.deepEqual(makeFullUrl("#hashnav", "http://foo"), "http://foo#hashnav");
assert.deepEqual(makeFullUrl("#hashnav2", "http://foo#hashnav"), "http://foo#hashnav2");
assert.deepEqual(makeFullUrl("#hashnav", "http://foo/page.aspx"), "http://foo/page.aspx#hashnav");
});
test('removeUrlKeyValue', t => {
let trueUrl = "https://www.domain.com/page.aspx?showindatasheet=true";
let falseUrl = "https://www.domain.com/page.aspx?showindatasheet=false";
let noParamUrl = "https://www.domain.com/page.aspx";
let output = removeUrlKeyValue("showindatasheet", trueUrl, true);
assert.deepEqual(output, noParamUrl);
output = removeUrlKeyValue("ShowInDataSheet", trueUrl, true);
assert.deepEqual(output, noParamUrl);
output = setUrlKeyValue("showindatasheet", "false", false, trueUrl);
assert.deepEqual(output, falseUrl)
});