You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.0 KiB
95 lines
3.0 KiB
2 years ago
|
/* global describe, it */
|
||
|
|
||
|
var assert = require('chai').assert;
|
||
|
var RecentItems = require('app/common/RecentItems');
|
||
|
|
||
|
describe('RecentItems', function() {
|
||
|
let simpleList = ['foo', 'bar', 'baz'];
|
||
|
|
||
|
let objList = [
|
||
|
{ name: 'foo', path: '/foo' },
|
||
|
{ name: 'bar', path: '/bar' },
|
||
|
{ name: 'baz', path: '/baz' },
|
||
|
];
|
||
|
|
||
|
describe("listItems", function() {
|
||
|
it("should return a valid list", function() {
|
||
|
let recentItems = new RecentItems({
|
||
|
intialItems: simpleList
|
||
|
});
|
||
|
assert.deepEqual(recentItems.listItems(), ['foo', 'bar', 'baz']);
|
||
|
});
|
||
|
|
||
|
it("should return a valid list given a keyFunc", function() {
|
||
|
let recentItems = new RecentItems({
|
||
|
intialItems: objList,
|
||
|
keyFunc: item => item.path
|
||
|
});
|
||
|
assert.deepEqual(recentItems.listItems(), [
|
||
|
{ name: 'foo', path: '/foo' },
|
||
|
{ name: 'bar', path: '/bar' },
|
||
|
{ name: 'baz', path: '/baz' },
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
it("should produce a list of objects with unique keys", function() {
|
||
|
let recentItems = new RecentItems({
|
||
|
intialItems: [
|
||
|
{ name: 'foo', path: '/foo' },
|
||
|
{ name: 'bar', path: '/bar' },
|
||
|
{ name: 'foo', path: '/foo' },
|
||
|
{ name: 'baz', path: '/baz' },
|
||
|
{ name: 'foobar', path: '/foo' },
|
||
|
],
|
||
|
keyFunc: item => item.path
|
||
|
});
|
||
|
assert.deepEqual(recentItems.listItems(), [
|
||
|
{ name: 'bar', path: '/bar' },
|
||
|
{ name: 'baz', path: '/baz' },
|
||
|
{ name: 'foobar', path: '/foo' }
|
||
|
]);
|
||
|
let recentItems2 = new RecentItems({
|
||
|
intialItems: simpleList,
|
||
|
});
|
||
|
assert.deepEqual(recentItems2.listItems(), ['foo', 'bar', 'baz']);
|
||
|
for(let i = 0; i < 30; i++) {
|
||
|
recentItems2.addItems(simpleList);
|
||
|
}
|
||
|
assert.deepEqual(recentItems2.listItems(), ['foo', 'bar', 'baz']);
|
||
|
});
|
||
|
|
||
|
it("should produce a list with the correct max length", function() {
|
||
|
let recentItems = new RecentItems({
|
||
|
intialItems: objList,
|
||
|
maxCount: 2,
|
||
|
keyFunc: item => item.path
|
||
|
});
|
||
|
assert.deepEqual(recentItems.listItems(), [
|
||
|
{ name: 'bar', path: '/bar' },
|
||
|
{ name: 'baz', path: '/baz' }
|
||
|
]);
|
||
|
recentItems.addItem({ name: 'foo', path: '/foo' });
|
||
|
assert.deepEqual(recentItems.listItems(), [
|
||
|
{ name: 'baz', path: '/baz' },
|
||
|
{ name: 'foo', path: '/foo' }
|
||
|
]);
|
||
|
recentItems.addItem({name: 'BAZ', path: '/baz'});
|
||
|
assert.deepEqual(recentItems.listItems(), [
|
||
|
{ name: 'foo', path: '/foo' },
|
||
|
{ name: 'BAZ', path: '/baz' }
|
||
|
]);
|
||
|
let recentItems2 = new RecentItems({
|
||
|
intialItems: simpleList,
|
||
|
maxCount: 10
|
||
|
});
|
||
|
let alphabet = "abcdefghijklmnopqrstuvwxyz".split("");
|
||
|
recentItems2.addItems(alphabet);
|
||
|
assert.deepEqual(recentItems2.listItems(), 'qrstuvwxyz'.split(""));
|
||
|
recentItems2.addItem('a');
|
||
|
assert.deepEqual(recentItems2.listItems(), 'rstuvwxyza'.split(""));
|
||
|
recentItems2.addItem('r');
|
||
|
assert.deepEqual(recentItems2.listItems(), 'stuvwxyzar'.split(""));
|
||
|
});
|
||
|
});
|
||
|
});
|