controls-multimix.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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('Controls', () => {
  9. describe('Multimix', () => {
  10. let frag = document.createDocumentFragment();
  11. let container = dom.getContainer();
  12. let controls = dom.getMultimixControls();
  13. container.insertBefore(controls, container.children[0]);
  14. frag.appendChild(container);
  15. let mixer = mixitup(container, {
  16. controls: {
  17. scope: 'local'
  18. }
  19. }, frag);
  20. after(() => mixer.destroy());
  21. it('should detect nested filter controls and set active states upon instantiation', () => {
  22. let control = controls.querySelector('[data-filter="all"][data-sort="default:asc"]');
  23. chai.assert.isOk(control.matches('.mixitup-control-active'));
  24. });
  25. it('should read filter and sort actions simultaneously', () => {
  26. let control = controls.querySelector('[data-filter=".category-b"][data-sort="published"]');
  27. control.click();
  28. let state = mixer.getState();
  29. chai.assert.equal(state.activeFilter.selector, '.category-b');
  30. chai.assert.equal(state.activeSort.sortString, 'published');
  31. chai.assert.isOk(control.matches('.mixitup-control-active'));
  32. });
  33. });
  34. });