UNPKG

muuri

Version:

Responsive, sortable, filterable and draggable grid layouts.

157 lines (115 loc) 4.63 kB
(function (window) { var Muuri = window.Muuri; var idList = utils.idList; QUnit.module('Grid methods'); QUnit.test('filter: should return the instance', function (assert) { assert.expect(1); var container = utils.createGridElements(); var grid = new Muuri(container); var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); }; assert.strictEqual(grid.filter(function () {}), grid); teardown(); }); QUnit.test('filter: should accept a function as the first argument', function (assert) { assert.expect(12); var container = utils.createGridElements(); var grid = new Muuri(container); var items = grid.getItems(); var firstItem = items[0]; var i = 0; var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); }; grid.filter(function (item) { assert.strictEqual(item._id, items[i]._id, 'predicate function should be called in ascending order for each item'); ++i; return item === firstItem; }); assert.strictEqual(i, 10, 'predicate function should be called for each item'); assert.deepEqual(idList(utils.getVisibleItems(grid)), idList([firstItem]), 'the items for which true were returned should be shown and others hidden'); teardown(); }); QUnit.test('filter: should accept a selector as the first argument', function (assert) { assert.expect(1); var container = utils.createGridElements(); var grid = new Muuri(container); var items = grid.getItems(); var firstItem = items[0]; var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); }; firstItem.getElement().classList.add('foo'); grid.filter('.foo'); assert.deepEqual(idList(utils.getVisibleItems(grid)), idList([firstItem])); teardown(); }); QUnit.test('filter: should not show/hide items instantly by default', function (assert) { assert.expect(2); var container = utils.createGridElements(); var grid = new Muuri(container); var items = grid.getItems(); var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); }; grid .hide(0, {instant: true}) .filter(function (item) { return item === items[0]; }); assert.deepEqual(idList(utils.getShowingItems(grid)), idList(items.slice(0, 1))); assert.deepEqual(idList(utils.getHidingItems(grid)), idList(items.slice(1))); teardown(); }); QUnit.test('filter: should show/hide items instantly if instant option is true', function (assert) { assert.expect(4); var container = utils.createGridElements(); var grid = new Muuri(container); var items = grid.getItems(); var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); }; grid .hide(0, {instant: true}) .filter(function (item) { return item === items[0]; }, {instant: true}); assert.strictEqual(utils.getShowingItems(grid).length, 0); assert.strictEqual(utils.getHidingItems(grid).length, 0); assert.deepEqual(idList(utils.getVisibleItems(grid)), idList(items.slice(0, 1))); assert.deepEqual(idList(utils.getHiddenItems(grid)), idList(items.slice(1))); teardown(); }); QUnit.test('filter: should call the onFinish callback once the animations are finished', function (assert) { assert.expect(5); var done = assert.async(); var container = utils.createGridElements(); var grid = new Muuri(container); var items = grid.getItems(); var showEndItems = null; var hideEndItems = null; var teardown = function () { grid.destroy(); container.parentNode.removeChild(container); done(); }; grid .hide(0, {instant: true}) .filter(function (item) { return item === items[0]; }, {onFinish: function (itemsToShow, itemsToHide) { assert.strictEqual(arguments.length, 2, 'callback: should receive two arguments'); assert.deepEqual(idList(itemsToShow), idList(items.slice(0, 1)), 'callback: should receive the shown items as it`s first argument'); assert.deepEqual(idList(itemsToHide), idList(items.slice(1)), 'callback: should receive the hidden items as it`s second argument'); assert.strictEqual(items[0].isVisible(), true, 'callback: the first argument items should be visible'); assert.strictEqual(items[1].isVisible(), false, 'callback: the second argument items should be hidden'); teardown(); }}); }); })(this);