166 lines
5.1 KiB
JavaScript
166 lines
5.1 KiB
JavaScript
describe('DataTable', function () {
|
|
it('instance is created without any errors', () => {
|
|
cy.visit('/');
|
|
|
|
cy.window()
|
|
.its('DataTable')
|
|
.then(DataTable => {
|
|
// eslint-disable-next-line
|
|
new DataTable('#datatable2', {
|
|
columns: ['Name', 'Position'],
|
|
data: [
|
|
['Faris', 'Developer']
|
|
]
|
|
});
|
|
});
|
|
|
|
cy.get('#datatable2 .datatable')
|
|
.contains('Faris');
|
|
});
|
|
|
|
describe('Cell', function () {
|
|
before(function () {
|
|
cy.visit('/');
|
|
});
|
|
|
|
it('focuses cell on click', function () {
|
|
cy.clickCell(2, 0)
|
|
.should('have.class', 'dt-cell--focus');
|
|
});
|
|
|
|
it('not focuses cell which are not focusable', function () {
|
|
cy.clickCell(1, 0)
|
|
.should('not.have.class', 'dt-cell--focus');
|
|
});
|
|
|
|
it('edit cell on enter press', function () {
|
|
cy.getCell(4, 0).type('{enter}')
|
|
.should('have.class', 'dt-cell--editing')
|
|
.type('{enter}')
|
|
.should('not.have.class', 'dt-cell--editing');
|
|
});
|
|
|
|
it('edit cell on double click', function () {
|
|
cy.getCell(4, 0)
|
|
.as('target')
|
|
.dblclick({ force: true })
|
|
.should('have.class', 'dt-cell--editing');
|
|
|
|
cy.clickCell(3, 0);
|
|
|
|
cy.get('@target').should('not.have.class', 'dt-cell--editing');
|
|
});
|
|
|
|
it('edit cell', function () {
|
|
cy.getCell(4, 1).dblclick();
|
|
cy.getCell(4, 1).find('input').click();
|
|
cy.focused().type('{selectall}{del}Test{enter}');
|
|
cy.getCell(4, 1).contains('Test');
|
|
});
|
|
|
|
it('if editing is false: editing should not activate', function () {
|
|
cy.getCell(3, 0).dblclick({ force: true })
|
|
.should('not.have.class', 'dt-cell--editing');
|
|
});
|
|
|
|
it('navigation using arrow keys', function () {
|
|
cy.clickCell(2, 0)
|
|
.type('{rightarrow}');
|
|
|
|
cy.get('.dt-cell--focus')
|
|
.should('have.class', 'dt-cell--3-0')
|
|
.click({ force: true })
|
|
.type('{downarrow}');
|
|
|
|
cy.get('.dt-cell--focus')
|
|
.should('have.class', 'dt-cell--3-1');
|
|
// TODO: test navigation over hidden rows
|
|
});
|
|
|
|
it('navigation using ctrl + arrow keys', function () {
|
|
cy.clickCell(2, 0)
|
|
.type('{ctrl}{rightarrow}');
|
|
cy.get('.dt-cell--focus')
|
|
.should('have.class', 'dt-cell--7-0');
|
|
});
|
|
|
|
it('cell selection using shift + arrow keys', function () {
|
|
cy.getCell(2, 1)
|
|
.type('{shift}{rightarrow}{rightarrow}{downarrow}');
|
|
|
|
// 6 cells and 2 headers
|
|
cy.get('.dt-cell--highlight').should('have.length', 6 + 2);
|
|
|
|
cy.clickCell(2, 0);
|
|
});
|
|
|
|
it('mouse selection', function () {
|
|
// TODO
|
|
// cy.getCell(2, 1)
|
|
// .trigger('mousedown', { which: 1, pageX: 331, pageY: 207, force: true })
|
|
// .trigger('mousemove', { which: 1, pageX: 489, pageY: 312 })
|
|
// .trigger('mouseup');
|
|
});
|
|
});
|
|
|
|
describe('Column', function () {
|
|
before(function () {
|
|
cy.visit('/');
|
|
});
|
|
|
|
it('header dropdown toggles on click', function () {
|
|
cy.getColumnCell(2)
|
|
.find('.dt-dropdown__toggle')
|
|
.as('toggle')
|
|
.click();
|
|
cy.getColumnCell(2)
|
|
.find('.dt-dropdown__list')
|
|
.as('dropdown-list')
|
|
.should('be.visible');
|
|
|
|
cy.get('@toggle').click();
|
|
|
|
cy.get('@dropdown-list').should('not.be.visible');
|
|
});
|
|
|
|
it('sort ascending button should work', function () {
|
|
cy.clickDropdown(2);
|
|
cy.clickDropdownItem(2, 'Sort Ascending');
|
|
|
|
cy.window().then(win => win.datatable.getColumn(2))
|
|
.its('sortOrder')
|
|
.should('eq', 'asc');
|
|
|
|
cy.window().then(win => win.datatable.datamanager)
|
|
.its('currentSort.colIndex')
|
|
.should('eq', 2);
|
|
|
|
cy.get('.dt-body .dt-row:first')
|
|
.contains('Airi Satou');
|
|
|
|
cy.clickDropdownItem(2, 'Reset sorting');
|
|
});
|
|
|
|
it('removes column using dropdown action', function () {
|
|
cy.get('.dt-cell--header').should('have.length', 8);
|
|
|
|
cy.clickDropdown(5);
|
|
cy.clickDropdownItem(5, 'Remove column');
|
|
|
|
cy.get('.dt-cell--header').should('have.length', 7);
|
|
});
|
|
});
|
|
|
|
describe('Row', function () {
|
|
it('check / uncheck row', function () {
|
|
cy.get('.dt-body .dt-row:first')
|
|
.find('input[type="checkbox"]')
|
|
.click();
|
|
|
|
cy.get('[data-row-index="0"]').should('have.class', 'dt-row--highlight');
|
|
|
|
cy.get('.dt-toast').contains('1 row selected');
|
|
});
|
|
});
|
|
});
|