first commit
This commit is contained in:
76
mixitup-3.3.1/tests/unit/controls-sort.js
Normal file
76
mixitup-3.3.1/tests/unit/controls-sort.js
Normal file
@@ -0,0 +1,76 @@
|
||||
'use strict';
|
||||
|
||||
require('jsdom-global')();
|
||||
|
||||
const chai = require('chai');
|
||||
const dom = require('../mock/dom');
|
||||
const mixitup = require('../../dist/mixitup.js');
|
||||
|
||||
chai.use(require('chai-shallow-deep-equal'));
|
||||
chai.use(require('chai-as-promised'));
|
||||
|
||||
describe('Controls', () => {
|
||||
describe('Sort', () => {
|
||||
let frag = document.createDocumentFragment();
|
||||
let container = dom.getContainer();
|
||||
let controls = dom.getSortControls();
|
||||
|
||||
container.insertBefore(controls, container.children[0]);
|
||||
|
||||
frag.appendChild(container);
|
||||
|
||||
let mixer = mixitup(container, {
|
||||
controls: {
|
||||
scope: 'local'
|
||||
}
|
||||
}, frag);
|
||||
|
||||
after(() => mixer.destroy());
|
||||
|
||||
it('should detect nested sort controls and set active states upon instantiation', () => {
|
||||
let control1 = controls.querySelector('[data-sort="default"]');
|
||||
let control2 = controls.querySelector('[data-sort="default:asc"]');
|
||||
|
||||
chai.assert.isOk(control1.matches('.mixitup-control-active'));
|
||||
chai.assert.isOk(control2.matches('.mixitup-control-active'));
|
||||
});
|
||||
|
||||
it('should handle sort control clicks with a single sortString value', () => {
|
||||
let control = controls.querySelector('[data-sort="default:desc"]');
|
||||
|
||||
control.click();
|
||||
|
||||
let state = mixer.getState();
|
||||
|
||||
chai.assert.isOk(control.matches('.mixitup-control-active'));
|
||||
chai.assert.equal(state.activeSort.sortString, 'default:desc');
|
||||
chai.assert.equal(state.activeSort.attribute, '');
|
||||
chai.assert.equal(state.activeSort.order, 'desc');
|
||||
});
|
||||
|
||||
it('should handle sort control clicks with "random" value', () => {
|
||||
let control = controls.querySelector('[data-sort="random"]');
|
||||
|
||||
control.click();
|
||||
|
||||
let state = mixer.getState();
|
||||
|
||||
chai.assert.isOk(control.matches('.mixitup-control-active'));
|
||||
chai.assert.equal(state.activeSort.sortString, 'random');
|
||||
chai.assert.equal(state.activeSort.attribute, '');
|
||||
chai.assert.equal(state.activeSort.order, 'random');
|
||||
});
|
||||
|
||||
it('should activate buttons in response to matching API calls', () => {
|
||||
let control = controls.querySelector('[data-sort="published:asc views:desc"]');
|
||||
|
||||
return mixer.sort('published:asc views:desc')
|
||||
.then(state => {
|
||||
chai.assert.isOk(control.matches('.mixitup-control-active'));
|
||||
chai.assert.equal(state.activeSort.sortString, 'published:asc');
|
||||
chai.assert.isOk(state.activeSort.next);
|
||||
chai.assert.equal(state.activeSort.next.sortString, 'views:desc');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user