control-freak-ide/server/nodejs/tests/mixins/Selector.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

97 lines
3.1 KiB
JavaScript

define([
'intern!tdd',
'intern/chai!assert',
'dojo/_base/declare',
'dojo/query',
'dgrid/OnDemandGrid',
'dgrid/Selection',
'dgrid/Selector',
'dgrid/test/data/testStore'
], function (test, assert, declare, query, OnDemandGrid, Selection, Selector, testStore) {
test.suite('selector column plugin', function () {
var grid;
test.beforeEach(function () {
grid = new (declare([OnDemandGrid, Selection, Selector]))({
collection: testStore,
columns: {
select: { selector: 'checkbox', label: 'Select' },
col1: 'Column 1',
col2: 'Column 2',
col5: 'Column 5'
}
});
document.body.appendChild(grid.domNode);
grid.startup();
});
test.afterEach(function () {
grid.destroy();
});
test.test('programmatic row selection', function () {
var rowNode,
checkboxNode,
rowCount = testStore.data.length,
rowIndex = 0,
expectedSelection = {},
lastSelectedRow;
grid.on('dgrid-select, dgrid-deselect', function (event) {
lastSelectedRow = event.rows[0].id;
});
// Test selecting every row in grid
for (rowIndex = 0; rowIndex < rowCount; rowIndex++) {
// initialize to invalid value
lastSelectedRow = -1;
grid.select(rowIndex);
expectedSelection[rowIndex] = true;
assert.deepEqual(grid.selection, expectedSelection,
'grid.selection object should match expected values');
rowNode = grid.row(rowIndex).element;
if (rowNode) {
// This checks if lastSelectedRow was updated by the event handler for dgrid-select
// The event is not fired for rows that are not in the DOM, so the test is in this conditional block
assert.strictEqual(lastSelectedRow, rowIndex,
'dgrid-select event: last selected row should be ' + rowIndex + '; real: ' + lastSelectedRow);
// Rows not in the DOM will also not have any checkbox/radio, so only run this test
// if rowNode exists
checkboxNode = query('.field-select input', rowNode)[0];
assert.isTrue(checkboxNode.checked,
'Checkbox for selected row ' + rowIndex + ' should be checked');
}
}
// Test deselecting every row in grid
for (rowIndex = 0; rowIndex < rowCount; rowIndex++) {
// initialize to invalid value
lastSelectedRow = -1;
grid.deselect(rowIndex);
delete expectedSelection[rowIndex];
assert.deepEqual(grid.selection, expectedSelection,
'grid.selection object should match expected values');
rowNode = grid.row(rowIndex).element;
if (rowNode) {
// This checks if lastSelectedRow was updated by the event handler for dgrid-deselect
// The event is not fired for rows that are not in the DOM, so the test is in this conditional block
assert.strictEqual(lastSelectedRow, rowIndex,
'dgrid-deselect event: last deselected row should be ' + rowIndex + '; real: ' + lastSelectedRow
);
// Rows not in the DOM will also not have any checkbox/radio, so only run this test
// if rowNode exists
checkboxNode = query('.field-select input', rowNode)[0];
assert.isFalse(checkboxNode.checked,
'Checkbox for selected row ' + rowIndex + ' should NOT be checked');
}
}
});
});
});