blob: e94150187f6babbc800fbb553728699f1e21626a [file] [log] [blame]
import './index.js'
import { $ } from 'common-sk/modules/dom'
let container = document.createElement('div');
document.body.appendChild(container);
afterEach(function() {
container.innerHTML = "";
});
describe('sort-sk', function() {
it('sorts numerically by default', function() {
return window.customElements.whenDefined('sort-sk').then(() => {
container.innerHTML = `
<sort-sk target=stuffToBeSorted>
<button id=cluster data-key=clustersize data-default=up>Cluster Size</button>
<button id=size data-key=stepsize>Step Size</button>
</sort-sk>
<div id=stuffToBeSorted>
<pre data-clustersize=10 data-stepsize=1.2>Size=10 Step=1.2</pre>
<pre data-clustersize=50 data-stepsize=0.5>Size=50 Step=0.5</pre>
<pre data-clustersize=100 data-stepsize=0.6>Size=100 Step=0.6</pre>
</div>`;
const getValues = (name) => $('#stuffToBeSorted pre', container).map((ele) => +ele.dataset[name]);
const clusterButton = container.querySelector('#cluster');
const stepButton = container.querySelector('#size');
clusterButton.click();
assert.deepEqual([100, 50, 10], getValues('clustersize'), 'Defaults to up, so sort down on first click.');
clusterButton.click();
assert.deepEqual([10, 50, 100], getValues('clustersize'), 'Switch to up.');
stepButton.click();
assert.deepEqual([1.2, 0.6, 0.5], getValues('stepsize'), 'No default, so start sorting down.');
stepButton.click();
assert.deepEqual([0.5, 0.6, 1.2], getValues('stepsize'), 'Switch to up.');
})
});
it('sorts alphabetically with alpha attribute', function() {
return window.customElements.whenDefined('sort-sk').then(() => {
container.innerHTML = `
<sort-sk target=stuffToBeSorted2>
<button id=name data-key=name data-default=down data-sort-type=alpha>Name</button>
<button id=level data-key=level data-sort-type=alpha>Level</button>
</sort-sk>
<div id=stuffToBeSorted2>
<pre data-name=foo data-level=alpha>foo alpha</pre>
<pre data-name=baz data-level=beta >baz beta</pre>
<pre data-name=bar data-level=gamma>bar gamma</pre>
</div>
`;
const getValues = (name) => $('#stuffToBeSorted2 pre', container).map((ele) => ele.dataset[name]);
const nameButton = container.querySelector('#name');
const levelButton = container.querySelector('#level');
nameButton.click();
assert.deepEqual(['bar', 'baz', 'foo'], getValues('name'), 'Defaults to down, so sort up.');
nameButton.click();
assert.deepEqual(['foo', 'baz', 'bar'], getValues('name'), 'Now switch to down.');
levelButton.click();
assert.deepEqual(['gamma', 'beta', 'alpha'], getValues('level'), 'No default, so sort down.');
levelButton.click();
assert.deepEqual(['alpha', 'beta', 'gamma'], getValues('level'), 'Now switch to up.');
})
});
});