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({ force: true }); 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'); }); });