wekan/packages/wekan-cfs-reactive-list/tests.js
2021-04-29 13:26:49 +03:00

104 lines
2.7 KiB
JavaScript

"use strict";
function equals(a, b) {
return !!(JSON.stringify(a) === JSON.stringify(b));
}
Tinytest.add('ReactiveList - definition', function(test) {
test.isTrue(typeof ReactiveList !== 'undefined', 'ReactiveList is undefined, make sure to add the reactive-list package');
});
// We do a small test of insert and remove
Tinytest.addAsync('ReactiveList - basic insert and remove - test 1', function test1 (test, onComplete) {
Meteor.setTimeout(function() {
var list = new ReactiveList({
reactive: true
});
var testLength = 500;
for (var i = 0; i < testLength; i++)
list.insert(i, 'value' + i);
test.equal(list._length, testLength, 'List length is not as expected');
var order = 0;
list.forEach(function(value, key) {
test.equal(key, order, 'order is not as expected');
test.equal(value, 'value'+order, 'order is not as expected');
order++;
});
test.equal(order, testLength, 'forEach length is not as expected');
list.forEachReverse(function(value, key) {
order--;
test.equal(key, order, 'order is not as expected');
test.equal(value, 'value'+order, 'order is not as expected');
});
test.equal(order, 0, 'forEachReverse length is not as expected');
// Remove all items
for (var i = 0; i < testLength; i++)
list.remove(i);
test.equal(list._length, 0, 'List length is not as expected');
test.isUndefined(list.first, 'First should now be undefined');
test.isUndefined(list.last, 'Last should now be undefined');
onComplete();
}, 1000);
});
// We test insert and remove on larger scale
Tinytest.addAsync('ReactiveList - basic insert and reset - test 2', function test2 (test, onComplete) {
Meteor.setTimeout(function() {
var list = new ReactiveList({
reactive: true
});
var testLength = 500;
for (var i = 0; i < testLength; i++)
list.insert(i, 'value' + i);
test.equal(list._length, testLength, 'List length is not as expected');
// Remove all items
list.reset();
test.equal(list._length, 0, 'List length is not as expected');
test.isUndefined(list.first, 'First should now be undefined');
test.isUndefined(list.last, 'Last should now be undefined');
onComplete();
}, 5000);
});
//Test API:
//test.isFalse(v, msg)
//test.isTrue(v, msg)
//test.equalactual, expected, message, not
//test.length(obj, len)
//test.include(s, v)
//test.isNaN(v, msg)
//test.isUndefined(v, msg)
//test.isNotNull
//test.isNull
//test.throws(func)
//test.instanceOf(obj, klass)
//test.notEqual(actual, expected, message)
//test.runId()
//test.exception(exception)
//test.expect_fail()
//test.ok(doc)
//test.fail(doc)
//test.equal(a, b, msg)