coffeescript-ui
Version:
Coffeescript User Interface System
358 lines (306 loc) • 10.5 kB
JavaScript
require('../index');
describe('CUI.resolvedPromise', () => {
test("Returns a resolved promise", () => {
expect.assertions(1);
let promise = CUI.resolvedPromise();
promise.done(() => {
expect(true).toBeTruthy();
})
});
});
describe('CUI.rejectedPromise', () => {
test("Returns a rejected promise", () => {
expect.assertions(1);
let promise = CUI.rejectedPromise();
promise.fail(() => {
expect(true).toBeTruthy();
})
});
});
describe('CUI.chainedCall', () => {
test("Invoke each function in order.", () => {
expect.assertions(3);
let order = 0;
chainFunction = index => {
expect(order).toBe(index);
order++;
};
CUI.chainedCall(
() => chainFunction(0),
() => chainFunction(1),
() => chainFunction(2)
);
});
});
describe('CUI.chunkWork', () => {
test("With correct parameters", resolve => {
expect.assertions(3);
let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let chunkSize = 5;
let itemsDone = 0;
CUI.chunkWork.call(this, {
items: items,
chunk_size: chunkSize,
call: items => {
expect(items.length).toBe(chunkSize);
itemsDone += items.length;
}
}).done(() => {
expect(itemsDone).toBe(10);
resolve()
})
});
});
describe('CUI.setTimeout', () => {
test("With correct parameters", resolve => {
expect.assertions(1);
let timeoutSeconds = 1000;
let startTime = new Date().getTime();
CUI.setTimeout(() => {
let milliseconds = (new Date().getTime()) - startTime;
expect(milliseconds / 1000).toBeCloseTo(timeoutSeconds / 1000);
resolve()
}, timeoutSeconds)
});
});
describe('CUI.scheduleCallback', () => {
test("With correct parameters", resolve => {
expect.assertions(1);
let callItOnce = () => {
expect(true).toBeTruthy();
resolve()
};
CUI.scheduleCallback({
call: callItOnce,
ms: 1000
});
CUI.scheduleCallback({
call: callItOnce,
ms: 500
});
});
});
describe('CUI.scheduleCallbackCancel', () => {
test("With existing callback", () => {
expect.assertions(1);
let aFunction = () => expect(false).toBeTruthy();
CUI.scheduleCallback({
call: aFunction,
ms: 1000
});
let wasCancelled = CUI.scheduleCallbackCancel({
call: aFunction
});
expect(wasCancelled).toBeTruthy();
});
test("Without existing callback", () => {
expect.assertions(1);
let aFunction = () => expect(false).toBeTruthy();
let wasCancelled = CUI.scheduleCallbackCancel({
call: aFunction
});
expect(wasCancelled).toBeFalsy();
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.mergeMap', () => {
test("With valid maps", () => {
let targetMap = {
a: 1,
b: 2,
d: {
z: 100,
y: 200
}
};
let map = {
a: 100,
c: 3,
d: {
z: 200,
x: 300
},
e: {
a: 1
}
};
CUI.mergeMap(targetMap, map);
expect(targetMap.a).toBe(1);
expect(targetMap.b).toBe(2);
expect(targetMap.c).toBe(3);
expect(targetMap.d.z).toBe(100);
expect(targetMap.d.y).toBe(200);
expect(targetMap.d.x).toBe(300);
expect(targetMap.e.a).toBe(1);
});
test("With arguments as strings", () => {
let targetMap = "target map";
let result = CUI.mergeMap(targetMap, "map");
expect(result).toBe(targetMap);
});
});
describe('CUI.getParameterByName', () => {
test("With URL as parameter", () => {
let expectedValue = "hello";
let value = CUI.getParameterByName("test", "www.google.com?test=" + expectedValue);
expect(value).toBe(expectedValue);
});
test("Without URL as parameter", () => {
let parameterValue = CUI.getParameterByName("test");
expect(parameterValue).toBe("");
});
});
describe('CUI.encodeUrlData', () => {
test("With parameters", () => {
let expectedValue = "parameterOne=hello¶meterTwo=hello2";
let value = CUI.encodeUrlData({parameterOne: "hello", parameterTwo: "hello2"});
expect(value).toBe(expectedValue);
});
test("With different connectors characters", () => {
let expectedValue = "parameterOne||hello%parameterTwo||hello2";
let value = CUI.encodeUrlData({parameterOne: "hello", parameterTwo: "hello2"}, null, "%", "||");
expect(value).toBe(expectedValue);
});
test("Without parameters", () => {
let value = CUI.encodeUrlData();
expect(value).toBe("");
});
});
describe('CUI.decodeUrlData', () => {
test("With parameters", () => {
let expectedValue = {parameterOne: "hello", parameterTwo: "hello2"};
let value = CUI.decodeUrlData("parameterOne=hello¶meterTwo=hello2");
expect(value.parameterOne).toBe(expectedValue.parameterOne);
expect(value.parameterTwo).toBe(expectedValue.parameterTwo);
});
test("With different connectors characters", () => {
let expectedValue = {parameterOne: "hello", parameterTwo: "hello2"};
let value = CUI.decodeUrlData("parameterOne||hello%parameterTwo||hello2", null, "%", "||");
expect(value.parameterOne).toBe(expectedValue.parameterOne);
expect(value.parameterTwo).toBe(expectedValue.parameterTwo);
});
test("Without parameters", () => {
let value = CUI.decodeUrlData("");
expect(CUI.util.isEmpty(value)).toBeTruthy();
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.revertMap', () => {
test("With correct map", () => {
let map = {
a: "z",
b: "y",
c: "x"
};
let mapReverted = CUI.revertMap(map);
expect(mapReverted.z).toBe("a");
expect(mapReverted.y).toBe("b");
expect(mapReverted.x).toBe("c");
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.isFunction', () => {
test("True case", () => {
let aFunction = () => {};
let isFunction = CUI.isFunction(aFunction);
expect(isFunction).toBeTruthy();
});
test("False case", () => {
let aFunction = "";
let isFunction = CUI.isFunction(aFunction);
expect(isFunction).toBeFalsy();
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.isPlainObject', () => {
test("True case", () => {
let plainObject = {};
let isPlainObject = CUI.isPlainObject(plainObject);
expect(isPlainObject).toBeTruthy();
});
test("False case", () => {
let plainObject = "";
let isPlainObject = CUI.isPlainObject(plainObject);
expect(isPlainObject).toBeFalsy();
});
test("False case 2", () => {
let plainObject = CUI;
let isPlainObject = CUI.isPlainObject(plainObject);
expect(isPlainObject).toBeFalsy();
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.isEmptyObject', () => {
test("True case", () => {
let plainObject = {};
let isEmptyObject = CUI.isEmptyObject(plainObject);
expect(isEmptyObject).toBeTruthy();
});
test("False case", () => {
let plainObject = {a: 1};
let isEmptyObject = CUI.isEmptyObject(plainObject);
expect(isEmptyObject).toBeFalsy();
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.inArray', () => {
test("True case", () => {
let anArray = [1,2,3,4,5];
let isInArray = CUI.inArray(1, anArray);
expect(isInArray).toBe(0);
});
test("False case", () => {
let anArray = [1,2,3,5];
let isInArray = CUI.inArray(4, anArray);
expect(isInArray).toBe(-1);
});
});
// Deprecated. Remove when implementation is removed.
describe('CUI.isString', () => {
test("True case", () => {
let aString = "test";
let isString = CUI.isString(aString);
expect(isString).toBeTruthy();
});
test("False case", () => {
let aString = {};
let isString = CUI.isString(aString);
expect(isString).toBeFalsy();
});
});
describe('CUI.appendToUrl', () => {
test("Without parameters", () => {
let url = "www.google.com";
let parameters = {parameterOne: "test", parameterTwo: "test2"};
let urlWithParameters = CUI.appendToUrl(url, parameters);
expect(urlWithParameters).toBe(url + "?parameterOne=test¶meterTwo=test2");
});
test("With existing parameters", () => {
let url = "www.google.com?parameterOne=test";
let parameters = {parameterTwo: "test2"};
let urlWithParameters = CUI.appendToUrl(url, parameters);
expect(urlWithParameters).toBe(url + "¶meterTwo=test2");
});
});
describe('CUI.parseLocation', () => {
test("With a full URL", () => {
// Example: "http://www.google.com.ar:1000/uri/to/somewhere?parameterOne=test¶meterTwo=test2#someAnchor";
let url = "www.google.com.ar";
let port = "1000";
let protocol = "http";
let uri = "/uri/to/somewhere";
let parameters = "?parameterOne=test¶meterTwo=test2";
let anchor = "#someAnchor";
let location = protocol + "://" + url + ":" + port + uri + parameters + anchor;
let resultObject = CUI.parseLocation(location);
expect(resultObject.origin).toBe(protocol + "://" + url + ":" + port);
expect(resultObject.path).toBe(uri + parameters + anchor);
expect(resultObject.protocol).toBe(protocol);
expect(resultObject.search).toBe(parameters);
expect(resultObject.href).toBe(location);
expect(resultObject.hostname).toBe(url);
expect(resultObject.pathname).toBe(uri);
expect(resultObject.hash).toBe(anchor);
expect(resultObject.port).toBe(port);
});
});