123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- 'use strict';
- require('jsdom-global')();
- const chai = require('chai');
- const dom = require('../mock/dom');
- const mixitup = require('../../dist/mixitup.js');
- describe('mixitup()', () => {
- it('should accept an `onMixStart` callback, invoked at the start of operations', () => {
- let container = dom.getContainer();
- let wasCalled = false;
- let mixer = mixitup(container, {
- callbacks: {
- onMixStart: (state, futureState) => {
- chai.assert.instanceOf(state, mixitup.State);
- chai.assert.instanceOf(futureState, mixitup.State);
- chai.assert.notEqual(state.totalShow, futureState.totalShow);
- wasCalled = true;
- }
- }
- });
- return mixer.hide()
- .then(() => chai.assert.equal(wasCalled, true));
- });
- it('should accept an `onMixBusy` callback, called if simulataneous operation is rejected', () => {
- let container = dom.getContainer();
- let wasCalled = false;
- let mixer = mixitup(container, {
- debug: {
- fauxAsync: true
- },
- animation: {
- duration: 200,
- queue: false
- },
- callbacks: {
- onMixBusy: (state) => {
- chai.assert.instanceOf(state, mixitup.State);
- wasCalled = true;
- }
- }
- });
- mixer.hide();
- return mixer.show()
- .then(() => chai.assert.equal(wasCalled, true));
- });
- it('should accept an `onMixEnd` callback, called at the end of an operation', () => {
- let container = dom.getContainer();
- let wasCalled = false;
- let endState;
- let mixer = mixitup(container, {
- callbacks: {
- onMixEnd: (state) => {
- endState = state;
- chai.assert.instanceOf(state, mixitup.State);
- wasCalled = true;
- }
- }
- });
- return mixer.hide()
- .then(state => {
- chai.assert.equal(state.totalShow, endState.totalShow);
- chai.assert.equal(wasCalled, true);
- });
- });
- it('should accept an `onMixFail` callback, called when a filter operation does not match any targets', () => {
- let container = dom.getContainer();
- let wasCalled = false;
- let mixer = mixitup(container, {
- callbacks: {
- onMixFail: (state) => {
- chai.assert.instanceOf(state, mixitup.State);
- wasCalled = true;
- }
- }
- });
- return mixer.filter('.category-x')
- .then(() => {
- chai.assert.equal(wasCalled, true);
- });
- });
- it('should accept an `onMixClick` callback invoked when a control is clicked', () => {
- let frag = document.createDocumentFragment();
- let container = dom.getContainer();
- let controls = dom.getFilterControls();
- let wasCalled = false;
- let filter = controls.querySelector('[data-filter="none"]');
- container.insertBefore(controls, container.children[0]);
- frag.appendChild(container);
- let mixer = mixitup(container, {
- controls: {
- scope: 'local'
- },
- callbacks: {
- onMixClick: function(state, originalEvent) {
- var self = this;
- chai.assert.instanceOf(state, mixitup.State);
- chai.assert.instanceOf(originalEvent, window.MouseEvent);
- chai.assert.equal(self, filter);
- wasCalled = true;
- }
- }
- }, frag);
- filter.click();
- return Promise.resolve()
- .then(() => {
- chai.assert.equal(wasCalled, true);
- mixer.destroy();
- });
- });
- it('should accept an `onMixClick` callback which can be cancelled by returning false', () => {
- let frag = document.createDocumentFragment();
- let container = dom.getContainer();
- let controls = dom.getFilterControls();
- let wasCalled = false;
- let filter = controls.querySelector('[data-filter="none"]');
- container.insertBefore(controls, container.children[0]);
- frag.appendChild(container);
- let mixer = mixitup(container, {
- controls: {
- scope: 'local'
- },
- callbacks: {
- onMixClick: () => {
- return false;
- },
- onMixEnd: () => {
- // Will not be called
- wasCalled = true;
- }
- }
- }, frag);
- filter.click();
- return Promise.resolve()
- .then(() => {
- chai.assert.equal(wasCalled, false);
- mixer.destroy();
- });
- });
- });
|