mixer-change-layout.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict';
  2. require('jsdom-global')();
  3. const chai = require('chai');
  4. const dom = require('../mock/dom');
  5. const mixitup = require('../../dist/mixitup.js');
  6. chai.use(require('chai-shallow-deep-equal'));
  7. chai.use(require('chai-as-promised'));
  8. describe('mixitup.Mixer', () => {
  9. let container = dom.getContainer();
  10. let newClass = 'mixitup-container__display-rows';
  11. let mixer = mixitup(container);
  12. describe('#changeLayout()', () => {
  13. it('should add a new class name to the container', () => {
  14. return mixer.changeLayout(newClass)
  15. .then(state => {
  16. chai.assert.equal(state.activeContainerClassName, newClass);
  17. chai.assert.isOk(container.matches('.' + newClass));
  18. });
  19. });
  20. it('should remove the class name from the container', () => {
  21. return mixer.changeLayout('')
  22. .then(state => {
  23. chai.assert.equal(state.activeContainerClassName, '');
  24. chai.assert.notOk(container.matches('.' + newClass));
  25. });
  26. });
  27. it('should accept a callback function which is invoked after filtering', () => {
  28. let promise = new Promise(resolve => mixer.changeLayout(newClass, resolve));
  29. chai.assert.isFulfilled(promise);
  30. return promise
  31. .then(state => {
  32. chai.assert.equal(state.activeContainerClassName, newClass);
  33. chai.assert.isOk(container.matches('.' + newClass));
  34. });
  35. });
  36. it('should accept a boolean allowing toggling off of animation', () => {
  37. return mixer.changeLayout('', false)
  38. .then(state => {
  39. chai.assert.equal(state.activeContainerClassName, '');
  40. chai.assert.notOk(container.matches('.' + newClass));
  41. });
  42. });
  43. });
  44. });