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("")); }); }); });