parent
b8982d1d6e
commit
3ce9292b66
@ -0,0 +1,28 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure cells are blanked down', function () {
|
||||||
|
const fixture = [
|
||||||
|
['a', 'b', 'c'],
|
||||||
|
|
||||||
|
['0a', 'identical', '0c'],
|
||||||
|
['1a', 'identical', '1c'],
|
||||||
|
['2a', '2b', '2c'],
|
||||||
|
['3a', 'also identical', '3c'],
|
||||||
|
['4a', 'also identical', '4c'],
|
||||||
|
['5a', 'also identical', '5c'],
|
||||||
|
]
|
||||||
|
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
|
||||||
|
// click
|
||||||
|
cy.columnActionClick('b', ['Edit cells', 'Blank down'])
|
||||||
|
|
||||||
|
// ensure notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Blank down 3 cells')
|
||||||
|
cy.assertCellEquals(0, 'b', 'identical') // untouched
|
||||||
|
cy.assertCellEquals(1, 'b', null) // blanked
|
||||||
|
cy.assertCellEquals(2, 'b', '2b') // untouched
|
||||||
|
cy.assertCellEquals(3, 'b', 'also identical') // untouched
|
||||||
|
cy.assertCellEquals(4, 'b', null) // blanked
|
||||||
|
cy.assertCellEquals(5, 'b', null) // blanked
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,23 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure multiple whitespaces are collapsed', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'Shrt_Desc'],
|
||||||
|
['01001', 'THIS IS A TEST'],
|
||||||
|
['01002', 'THIS IS ANOTHER TEST'],
|
||||||
|
['01003', 'THIS IS a THIRD TEST'],
|
||||||
|
]
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
|
||||||
|
cy.columnActionClick('Shrt_Desc', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'Collapse consecutive whitespace',
|
||||||
|
])
|
||||||
|
|
||||||
|
// Check notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Text transform on 2 cells')
|
||||||
|
cy.assertCellEquals(0, 'Shrt_Desc', 'THIS IS A TEST')
|
||||||
|
cy.assertCellEquals(1, 'Shrt_Desc', 'THIS IS ANOTHER TEST')
|
||||||
|
cy.assertCellEquals(2, 'Shrt_Desc', 'THIS IS a THIRD TEST')
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,28 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure only some cells are converted to dates', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'A Date'],
|
||||||
|
['01001', '2021-01-01'],
|
||||||
|
['01002', '2021-01-01 05:35:15'],
|
||||||
|
['01003', 'THIS SHOULD NOT BE TOUCHED'],
|
||||||
|
]
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
|
||||||
|
// Update grid
|
||||||
|
cy.columnActionClick('A Date', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'To date',
|
||||||
|
])
|
||||||
|
|
||||||
|
// Check notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Text transform on 2 cells')
|
||||||
|
cy.assertCellEquals(0, 'A Date', '2021-01-01T00:00:00Z')
|
||||||
|
cy.assertCellEquals(1, 'A Date', '2021-01-01T05:35:15Z')
|
||||||
|
cy.assertCellEquals(2, 'A Date', 'THIS SHOULD NOT BE TOUCHED')
|
||||||
|
|
||||||
|
// ensure cells are marked as non-string
|
||||||
|
cy.assertCellNotString(0, 'A Date')
|
||||||
|
cy.assertCellNotString(1, 'A Date')
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,52 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure some cells are converted to numbers, and some remains untouched (int)', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'A Number'],
|
||||||
|
['01001', 'This is not a number'],
|
||||||
|
['01002', '42'],
|
||||||
|
['01003', '43'],
|
||||||
|
]
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
|
||||||
|
// click
|
||||||
|
cy.columnActionClick('A Number', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'To number',
|
||||||
|
])
|
||||||
|
|
||||||
|
// Ensure notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Text transform on 2 cells')
|
||||||
|
cy.assertCellEquals(0, 'A Number', 'This is not a number')
|
||||||
|
cy.assertCellEquals(1, 'A Number', '42')
|
||||||
|
cy.assertCellEquals(2, 'A Number', '43')
|
||||||
|
|
||||||
|
// Ensure a numeric type is applied to the cell
|
||||||
|
cy.assertCellNotString(1, 'A Number')
|
||||||
|
cy.assertCellNotString(2, 'A Number')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Ensure toNumber works with floats', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'A Number'],
|
||||||
|
['01001', '42.2'],
|
||||||
|
['01002', '43.5'],
|
||||||
|
['01002', '43.50000'],
|
||||||
|
['01002', '43.500001'],
|
||||||
|
]
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
|
||||||
|
// click
|
||||||
|
cy.columnActionClick('A Number', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'To number',
|
||||||
|
])
|
||||||
|
|
||||||
|
// Ensure cell content
|
||||||
|
cy.assertCellEquals(0, 'A Number', '42.2')
|
||||||
|
cy.assertCellEquals(1, 'A Number', '43.5')
|
||||||
|
cy.assertCellEquals(2, 'A Number', '43.5')
|
||||||
|
cy.assertCellEquals(3, 'A Number', '43.500001')
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,21 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure multiple leading/tailing whitespaces are trimmed', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'A column'],
|
||||||
|
['01001', 'TEST'],
|
||||||
|
]
|
||||||
|
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
cy.editCell(0, 'A column', ' TEST ')
|
||||||
|
|
||||||
|
cy.columnActionClick('A column', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'Trim leading and trailing whitespace',
|
||||||
|
])
|
||||||
|
|
||||||
|
// ensure notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Text transform on 1 cells')
|
||||||
|
cy.assertCellEquals(0, 'A column', 'TEST')
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,22 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure escaped html entities are unescaped', function () {
|
||||||
|
const fixture = [
|
||||||
|
['NDB_No', 'A column'],
|
||||||
|
['01001', '<img src="test" />'],
|
||||||
|
['01001', '<img src="test" />'],
|
||||||
|
]
|
||||||
|
|
||||||
|
cy.loadAndVisitProject(fixture, 'ok')
|
||||||
|
|
||||||
|
cy.columnActionClick('A column', [
|
||||||
|
'Edit cells',
|
||||||
|
'Common transforms',
|
||||||
|
'Unescape HTML entities',
|
||||||
|
])
|
||||||
|
|
||||||
|
// ensure notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Text transform on 1 cells')
|
||||||
|
cy.assertCellEquals(0, 'A column', '<img src="test" />')
|
||||||
|
cy.assertCellEquals(1, 'A column', '<img src="test" />')
|
||||||
|
})
|
||||||
|
})
|
@ -0,0 +1,27 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Ensure cells are filled down', function () {
|
||||||
|
const fixture = [
|
||||||
|
['a', 'b', 'c'],
|
||||||
|
|
||||||
|
['0a', '0b', '0c'],
|
||||||
|
['1a', null, '1c'],
|
||||||
|
['2a', '2b', '2c'],
|
||||||
|
['3a', null, '3c'],
|
||||||
|
['4a', null, '4c'],
|
||||||
|
['5a', '5b', '5c'],
|
||||||
|
]
|
||||||
|
|
||||||
|
cy.loadAndVisitProject(fixture)
|
||||||
|
// click
|
||||||
|
cy.columnActionClick('b', ['Edit cells', 'Fill down'])
|
||||||
|
|
||||||
|
// ensure notification and cell content
|
||||||
|
cy.assertNotificationContainingText('Fill down 3 cells in column b')
|
||||||
|
cy.assertCellEquals(0, 'b', '0b') // untouched
|
||||||
|
cy.assertCellEquals(1, 'b', '0b') // filled
|
||||||
|
cy.assertCellEquals(2, 'b', '2b') // untouched
|
||||||
|
cy.assertCellEquals(3, 'b', '2b') // filled
|
||||||
|
cy.assertCellEquals(4, 'b', '2b') // filled
|
||||||
|
cy.assertCellEquals(5, 'b', '5b') // untouched
|
||||||
|
})
|
||||||
|
})
|
@ -13,7 +13,19 @@ import 'cypress-wait-until'
|
|||||||
// const fs = require('fs-extra');
|
// const fs = require('fs-extra');
|
||||||
// var uniqid = require('uniqid');
|
// var uniqid = require('uniqid');
|
||||||
//
|
//
|
||||||
//
|
|
||||||
|
/**
|
||||||
|
* Edit a cell, for a given row index, a column name and a value
|
||||||
|
*/
|
||||||
|
Cypress.Commands.add('editCell', (rowIndex, columnName, value) => {
|
||||||
|
cy.getCell(rowIndex, columnName)
|
||||||
|
.trigger('mouseover')
|
||||||
|
.find('a.data-table-cell-edit')
|
||||||
|
.click()
|
||||||
|
cy.get('.menu-container.data-table-cell-editor textarea').type(value)
|
||||||
|
cy.get('.menu-container button[bind="okButton"]').click()
|
||||||
|
})
|
||||||
|
|
||||||
Cypress.Commands.add('assertTextareaHaveJsonValue', (selector, json) => {
|
Cypress.Commands.add('assertTextareaHaveJsonValue', (selector, json) => {
|
||||||
cy.get(selector).then((el) => {
|
cy.get(selector).then((el) => {
|
||||||
// expected json needs to be parsed / restringified, to avoid inconsitencies about spaces and tabs
|
// expected json needs to be parsed / restringified, to avoid inconsitencies about spaces and tabs
|
||||||
@ -90,7 +102,12 @@ Cypress.Commands.add('assertCellEquals', (rowIndex, columnName, value) => {
|
|||||||
cy.get(
|
cy.get(
|
||||||
`table.data-table tbody tr:nth-child(${cssRowIndex}) td:nth-child(${columnIndex}) div.data-table-cell-content > span`
|
`table.data-table tbody tr:nth-child(${cssRowIndex}) td:nth-child(${columnIndex}) div.data-table-cell-content > span`
|
||||||
).should(($cellSpan) => {
|
).should(($cellSpan) => {
|
||||||
expect($cellSpan.text()).equals(value)
|
if (value == null) {
|
||||||
|
// weird, "null" is returned as a string in this case, bug in Chai ?
|
||||||
|
expect($cellSpan.text()).equals('null')
|
||||||
|
} else {
|
||||||
|
expect($cellSpan.text()).equals(value)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -147,3 +164,16 @@ Cypress.Commands.add(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Cypress.Commands.add('assertNotificationContainingText', (text) => {
|
||||||
|
cy.get('#notification').should('to.contain', text)
|
||||||
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'assertCellNotString',
|
||||||
|
(rowIndex, columnName, expectedType) => {
|
||||||
|
cy.getCell(rowIndex, columnName)
|
||||||
|
.find('.data-table-value-nonstring')
|
||||||
|
.should('to.exist')
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user