Test fixes for UrlParser, HtmlElementCreator
All checks were successful
CI / ci-tests (push) Successful in 15s
All checks were successful
CI / ci-tests (push) Successful in 15s
Also fix old parseQueryString and alias it to getQueryStringParam
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
node_modules/
|
||||
coverage/*
|
||||
|
||||
@@ -52,6 +52,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
console.log('AELX OUT: %o', aelx_out);
|
||||
build_test.innerHTML += aelx_out;
|
||||
|
||||
// console.log("TEST URL: %o", parseQueryString("http://foor.org/?key=value"));
|
||||
console.log("TEST URL: %o", getQueryStringParam('', "http://foor.org/?param=foo¶m=other", true));
|
||||
console.log("TEST URL: %o", parseQueryString("http://foor.org/?param=foo¶m=other", ''));
|
||||
// console.log("TEST URL: %o", getQueryStringParam('', "http://foor.org/?key=value&key=other&key=value&bar="));
|
||||
|
||||
// console.log('TR: %s', l10n.__('Original'));
|
||||
// console.log('TR: %s', l10n.__('Not exists'));
|
||||
});
|
||||
|
||||
2
coverage/.gitignore
vendored
2
coverage/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
@@ -19,6 +19,9 @@ function formatBytes(bytes)
|
||||
if (typeof bytes === "bigint") {
|
||||
bytes = Number(bytes);
|
||||
}
|
||||
if (isNaN(bytes)) {
|
||||
return bytes.toString();
|
||||
}
|
||||
do {
|
||||
bytes = bytes / 1024;
|
||||
i++;
|
||||
|
||||
@@ -5,9 +5,10 @@ Creator: Clemens Schwaighofer
|
||||
*/
|
||||
|
||||
export { parseQueryString, getQueryStringParam };
|
||||
import { keyInObject } from './JavaScriptHelpers.mjs';
|
||||
|
||||
/**
|
||||
* NOTE: this original code was wrong, now using URL and parsing through
|
||||
* getQueryStringParam
|
||||
* parses a query string from window.location.search.substring(1)
|
||||
* ALTERNATIVE CODE
|
||||
* var url = new URL(window.location.href);
|
||||
@@ -16,44 +17,13 @@ import { keyInObject } from './JavaScriptHelpers.mjs';
|
||||
* if not set will auto fill
|
||||
* @param {String} [return_key=''] if set only returns this key entry
|
||||
* or empty for none
|
||||
* @param {Boolean} [single=false] if set to true then only the first found
|
||||
* will be returned
|
||||
* @return {Object|String} parameter entry list
|
||||
*/
|
||||
function parseQueryString(query = '', return_key = '')
|
||||
function parseQueryString(query = '', return_key = '', single = false)
|
||||
{
|
||||
if (!query) {
|
||||
query = window.location.search.substring(1);
|
||||
}
|
||||
var vars = query.split('&');
|
||||
var query_string = {};
|
||||
for (var i = 0; i < vars.length; i++) {
|
||||
var pair = vars[i].split('=');
|
||||
var key = decodeURIComponent(pair[0]);
|
||||
var value = decodeURIComponent(pair[1]);
|
||||
// skip over run if there is nothing
|
||||
if (!key || value === 'undefined') {
|
||||
continue;
|
||||
}
|
||||
// If first entry with this name
|
||||
if (typeof query_string[key] === 'undefined') {
|
||||
query_string[key] = decodeURIComponent(value);
|
||||
// If second entry with this name
|
||||
} else if (typeof query_string[key] === 'string') {
|
||||
var arr = [query_string[key], decodeURIComponent(value)];
|
||||
query_string[key] = arr;
|
||||
// If third or later entry with this name
|
||||
} else {
|
||||
query_string[key].push(decodeURIComponent(value));
|
||||
}
|
||||
}
|
||||
if (return_key) {
|
||||
if (keyInObject(return_key, query_string)) {
|
||||
return query_string[return_key];
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
} else {
|
||||
return query_string;
|
||||
}
|
||||
return getQueryStringParam(return_key, query, single);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,6 +7,11 @@ import {
|
||||
} from '../src/utils/FormatBytes.mjs';
|
||||
|
||||
let bytes_map = [
|
||||
{
|
||||
"in": "120MB",
|
||||
"out": "120MB",
|
||||
"out_l": "120MB",
|
||||
},
|
||||
{
|
||||
"in": -123123123,
|
||||
"out": "-120237.42kB",
|
||||
@@ -57,6 +62,7 @@ describe("formatBytes", () => {
|
||||
it('convert bytes to human readable, round up to next set', () => {
|
||||
// expect(formatBytes(1021152)).toBe('0.97MB');
|
||||
for (const bytes of bytes_map) {
|
||||
// @ts-ignore
|
||||
expect(formatBytes(bytes.in)).toBe(bytes.out);
|
||||
}
|
||||
});
|
||||
@@ -66,6 +72,7 @@ describe("formatBytesLong", () => {
|
||||
it('convert bytes to human readable, keep on current set', () => {
|
||||
expect(formatBytesLong(1021152)).toBe('997.22 KB');
|
||||
for (const bytes of bytes_map) {
|
||||
// @ts-ignore
|
||||
expect(formatBytesLong(bytes.in)).toBe(bytes.out_l);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -257,6 +257,41 @@ describe("ael", () => {
|
||||
"tag": "div"
|
||||
}
|
||||
);
|
||||
let test_cel = hec.ael(
|
||||
hec.cel('div', 'block-id'),
|
||||
hec.cel('div', 'sub-id'),
|
||||
);
|
||||
expect(hec.ael(test_cel, hec.cel('div', 'new-block'), 'sub-id')).toEqual(
|
||||
{
|
||||
"content": "",
|
||||
"css": [],
|
||||
"id": "block-id",
|
||||
"name": undefined,
|
||||
"options": {},
|
||||
"sub": [
|
||||
{
|
||||
"content": "",
|
||||
"css": [],
|
||||
"id": "sub-id",
|
||||
"name": undefined,
|
||||
"options": {},
|
||||
"sub": [
|
||||
{
|
||||
"content": "",
|
||||
"css": [],
|
||||
"id": "new-block",
|
||||
"name": undefined,
|
||||
"options": {},
|
||||
"sub": [],
|
||||
"tag": "div"
|
||||
}
|
||||
],
|
||||
"tag": "div"
|
||||
}
|
||||
],
|
||||
"tag": "div"
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -640,11 +675,11 @@ describe("phfo", () => {
|
||||
"id": "block test",
|
||||
"in": hec.aelx(hec.cel('div', 'outer-id'),
|
||||
hec.aelx(hec.cel('div', 'inner-id'),
|
||||
hec.cel('input', 'some-id', '', ['abc'], {"type": "button", "onclick": "send()"})
|
||||
|
||||
hec.cel('input', 'some-id', '', ['abc'], {"type": "button", "onclick": "send()"}),
|
||||
hec.cel('div', '', 'content')
|
||||
)
|
||||
),
|
||||
"out": '<div id="outer-id"><div id="inner-id"><input id="some-id" name="some-id" class="abc" type="button" onclick="send()"></div></div>'
|
||||
"out": '<div id="outer-id"><div id="inner-id"><input id="some-id" name="some-id" class="abc" type="button" onclick="send()"><div>content</div></div></div>'
|
||||
}
|
||||
];
|
||||
for (const cel_entry of cel_list) {
|
||||
|
||||
@@ -24,6 +24,8 @@ describe("roundPrecision", () => {
|
||||
it('should round numbers to a given precision', () => {
|
||||
let val = roundPrecision(10.1234, 2);
|
||||
expect(val).toBe(10.12);
|
||||
// @ts-ignore
|
||||
expect(roundPrecision("abc", 2)).toBe("abc");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -5,17 +5,99 @@ import {
|
||||
getQueryStringParam,
|
||||
} from '../src/utils/UrlParser.mjs';
|
||||
|
||||
describe("parseQueryString", () => {
|
||||
it('Should parse query string for key', () => {
|
||||
let kv = parseQueryString("http://foor.org?key=value");
|
||||
expect(kv).toEqual({"http://foor.org?key": "value"});
|
||||
});
|
||||
});
|
||||
|
||||
let url_list = [
|
||||
{
|
||||
"id": "no params",
|
||||
"in": {
|
||||
"query": "http://foor.org",
|
||||
"search": "",
|
||||
"single": false
|
||||
},
|
||||
"out": {}
|
||||
},
|
||||
{
|
||||
"id": "no params",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param",
|
||||
"search": "",
|
||||
"single": false
|
||||
},
|
||||
"out": {"param": ""}
|
||||
},
|
||||
{
|
||||
"id": "one params",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo",
|
||||
"search": "",
|
||||
"single": false
|
||||
},
|
||||
"out": {"param": "foo"}
|
||||
},
|
||||
{
|
||||
"id": "two params",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo&bar=other",
|
||||
"search": "",
|
||||
"single": false
|
||||
},
|
||||
"out": {"param": "foo", "bar": "other"}
|
||||
},
|
||||
{
|
||||
"id": "two params, select",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo&bar=other",
|
||||
"search": "bar",
|
||||
"single": false
|
||||
},
|
||||
"out": "other"
|
||||
},
|
||||
{
|
||||
"id": "two params, same",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo¶m=other",
|
||||
"search": "",
|
||||
"single": false
|
||||
},
|
||||
"out": {"param": ["foo", "other"]}
|
||||
},
|
||||
{
|
||||
"id": "two params, same, single but no search",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo¶m=other",
|
||||
"search": "",
|
||||
"single": true
|
||||
},
|
||||
// "out": {"param": ["foo", "other"]}
|
||||
"out": {"param": "foo"}
|
||||
},
|
||||
{
|
||||
"id": "three params, same, search",
|
||||
"in": {
|
||||
"query": "http://foor.org/?param=foo¶m=other&different=1",
|
||||
"search": "param",
|
||||
"single": false
|
||||
},
|
||||
"out": ["foo", "other"]
|
||||
},
|
||||
];
|
||||
describe("getQueryStringParam", () => {
|
||||
it('Should parse query string for key', () => {
|
||||
let kv = getQueryStringParam("key", "http://foor.org?key=value");
|
||||
expect(kv).toEqual("value");
|
||||
for (const url of url_list) {
|
||||
expect(
|
||||
getQueryStringParam(url.in.search, url.in.query, url.in.single)
|
||||
).toEqual(url.out);
|
||||
}
|
||||
});
|
||||
});
|
||||
describe("parseQueryString", () => {
|
||||
it('Should parse query string for key', () => {
|
||||
// let kv = getQueryStringParam("key", "http://foor.org?key=value");
|
||||
// expect(kv).toEqual("value");
|
||||
for (const url of url_list) {
|
||||
expect(
|
||||
parseQueryString(url.in.query, url.in.search, url.in.single)
|
||||
).toEqual(url.out);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user