parent
dc180faf30
commit
13f97c246d
@ -24,14 +24,12 @@ const groups = [
|
|||||||
specs: [
|
specs: [
|
||||||
'cypress/integration/project/grid/column/edit-column/**/*.spec.js',
|
'cypress/integration/project/grid/column/edit-column/**/*.spec.js',
|
||||||
'cypress/integration/project/grid/column/facet/**/*.spec.js',
|
'cypress/integration/project/grid/column/facet/**/*.spec.js',
|
||||||
'cypress/integration/project/grid/column/facet/reconcile/**/*.spec.js',
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
specs: [
|
specs: [
|
||||||
'cypress/integration/project/grid/column/transpose/**/*.spec.js',
|
'cypress/integration/project/grid/column/transpose/**/*.spec.js',
|
||||||
'cypress/integration/project/grid/column/view/**/*.spec.js',
|
'cypress/integration/project/grid/column/view/**/*.spec.js',
|
||||||
'cypress/integration/project/grid/column/reconcile/**/*.spec.js',
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
describe('Clear reconciliation data', () => {
|
|
||||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
cy.columnActionClick('species', [
|
|
||||||
'Reconcile',
|
|
||||||
'Actions',
|
|
||||||
'Clear reconciliation data',
|
|
||||||
]);
|
|
||||||
|
|
||||||
cy.get('table.data-table').should('not.to.contain', 'Choose new match');
|
|
||||||
// the green bar for matched item should be invisible
|
|
||||||
cy.get(
|
|
||||||
'table.data-table thead div.column-header-recon-stats-matched'
|
|
||||||
).should('not.be.visible');
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,40 +0,0 @@
|
|||||||
describe('Discard reconciliation judgments', () => {
|
|
||||||
it('Test discard existing reconciliation judgments', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
cy.columnActionClick('species', [
|
|
||||||
'Reconcile',
|
|
||||||
'Actions',
|
|
||||||
'Discard reconciliation judgments',
|
|
||||||
]);
|
|
||||||
|
|
||||||
cy.assertNotificationContainingText('Discard recon judgments for 6 cells');
|
|
||||||
|
|
||||||
// Check that all matches are gone (they contains Choose new match )
|
|
||||||
cy.get('table.data-table td .data-table-cell-content').should(
|
|
||||||
'not.to.contain',
|
|
||||||
'Choose new match'
|
|
||||||
);
|
|
||||||
|
|
||||||
// ensure none of the cells contains 'Search for match'
|
|
||||||
// which means they are not matched and reconciliation judgments are gone
|
|
||||||
cy.getCell(0, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(1, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(2, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(3, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(4, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(5, 'species').should('to.contain', 'Search for match');
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,45 +0,0 @@
|
|||||||
describe('Match each cell to its best candidate', () => {
|
|
||||||
it('Match each cell to its best candidate', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
// here reconcileColumn is called with automatch = false
|
|
||||||
cy.reconcileColumn('species', false);
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// before matching, ensure we have no matches
|
|
||||||
cy.getCell(0, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(1, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(2, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(3, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(4, 'species').should('to.contain', 'Search for match');
|
|
||||||
cy.getCell(5, 'species').should('to.contain', 'Search for match');
|
|
||||||
|
|
||||||
cy.columnActionClick('species', [
|
|
||||||
'Reconcile',
|
|
||||||
'Actions',
|
|
||||||
'Match each cell to its best candidate',
|
|
||||||
]);
|
|
||||||
|
|
||||||
cy.assertNotificationContainingText(
|
|
||||||
'Match each of 6 cells to its best candidate'
|
|
||||||
);
|
|
||||||
|
|
||||||
// ensure all cells contains 'Choose new match'
|
|
||||||
// which means they are matched
|
|
||||||
cy.getCell(0, 'species').should('to.contain', 'Choose new match');
|
|
||||||
cy.getCell(1, 'species').should('to.contain', 'Choose new match');
|
|
||||||
cy.getCell(2, 'species').should('to.contain', 'Choose new match');
|
|
||||||
cy.getCell(3, 'species').should('to.contain', 'Choose new match');
|
|
||||||
cy.getCell(4, 'species').should('to.contain', 'Choose new match');
|
|
||||||
cy.getCell(5, 'species').should('to.contain', 'Choose new match');
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,38 +0,0 @@
|
|||||||
describe('Add entity identifiers', () => {
|
|
||||||
it('Add a new column that contains the reconciliation id', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
cy.columnActionClick('species', [
|
|
||||||
'Reconcile',
|
|
||||||
'Add entity identifiers column',
|
|
||||||
]);
|
|
||||||
|
|
||||||
// check the dialog, enter a new column name "id_column"
|
|
||||||
cy.get('.dialog-container .dialog-header').should(
|
|
||||||
'to.contain',
|
|
||||||
'Add column containing entity identifiers on species'
|
|
||||||
);
|
|
||||||
cy.get('.dialog-container .dialog-body input').type('id_column');
|
|
||||||
cy.get('.dialog-container .dialog-footer input').contains('OK').click();
|
|
||||||
|
|
||||||
// Check the cells content for the new column
|
|
||||||
cy.assertCellEquals(0, 'id_column', '2253634'); // untouched
|
|
||||||
cy.assertCellEquals(1, 'id_column', '2328088'); // blanked
|
|
||||||
cy.assertCellEquals(2, 'id_column', '2868241'); // untouched
|
|
||||||
cy.assertCellEquals(3, 'id_column', null); // untouched
|
|
||||||
cy.assertCellEquals(4, 'id_column', '8211794'); // blanked
|
|
||||||
cy.assertCellEquals(5, 'id_column', null); // blanked
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,43 +0,0 @@
|
|||||||
describe('Copy reconciliation data', () => {
|
|
||||||
it('Copy reconciliation data from species to species_copy', () => {
|
|
||||||
const fixture = [
|
|
||||||
['species_original', 'species_copy'],
|
|
||||||
['Hypsibius dujardini', 'Hypsibius dujardini'],
|
|
||||||
['Protula bispiralis', 'Protula bispiralis'],
|
|
||||||
[null, 'Hypsibius dujardini'], // new line to ensure copy is done one multiple rows
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species_original');
|
|
||||||
cy.assertColumnIsReconciled('species_original');
|
|
||||||
|
|
||||||
cy.columnActionClick('species_original', [
|
|
||||||
'Reconcile',
|
|
||||||
'Copy reconciliation data',
|
|
||||||
]);
|
|
||||||
|
|
||||||
// check the dialog, enter a new column name "id_column"
|
|
||||||
cy.get('.dialog-container .dialog-header').should(
|
|
||||||
'to.contain',
|
|
||||||
'Copy recon judgments from column species_original'
|
|
||||||
);
|
|
||||||
cy.get('.dialog-container select[bind="toColumnSelect"]').select(
|
|
||||||
'species_copy'
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// cy.assertColumnIsReconciled('species_copy');
|
|
||||||
|
|
||||||
cy.get('.dialog-container .dialog-footer button').contains('Copy').click();
|
|
||||||
|
|
||||||
cy.assertNotificationContainingText(
|
|
||||||
'Copy 3 recon judgments from column species_original to species_copy'
|
|
||||||
);
|
|
||||||
|
|
||||||
// ensure 5 rows are matched based on the identifier
|
|
||||||
// 2 on the original column, 3 on the copy
|
|
||||||
cy.get(
|
|
||||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
|
||||||
).should('have.length', 5);
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,30 +0,0 @@
|
|||||||
describe('Facet by judgment', () => {
|
|
||||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// cleanup automatic facets before doing any testing
|
|
||||||
cy.get('#or-proj-facFil').click();
|
|
||||||
cy.get('div.browsing-panel-controls').should('be.visible');
|
|
||||||
cy.get('#refine-tabs-facets a')
|
|
||||||
.contains('Remove All')
|
|
||||||
.should('be.visible')
|
|
||||||
.click();
|
|
||||||
|
|
||||||
cy.columnActionClick('species', ['Reconcile', 'Facets', 'By judgment']);
|
|
||||||
|
|
||||||
// ensure a new facet has been added
|
|
||||||
cy.getFacetContainer('species: judgment').should('exist');
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,260 +0,0 @@
|
|||||||
// import 'fixture-species';
|
|
||||||
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
|
||||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
|
||||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility method used by several tests of this scenario
|
|
||||||
* It adds the CSV reconciliation service in the interface
|
|
||||||
*/
|
|
||||||
const addReconciliationService = () => {
|
|
||||||
cy.get('.recon-dialog-service-list', { log: false }).then(($list) => {
|
|
||||||
if ($list.find('.recon-dialog-service-selector').length > 0) {
|
|
||||||
// cy.get('.recon-dialog-service-selector-remove').click({ multiple: true });
|
|
||||||
|
|
||||||
cy.get('.recon-dialog-service-selector', { log: false }).each(($btn) => {
|
|
||||||
cy.get(
|
|
||||||
'.recon-dialog-service-selector:first-child .recon-dialog-service-selector-remove',
|
|
||||||
{ log: false }
|
|
||||||
).click({ log: false });
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// Checking that the list is empty ensure the deletion of all previous services is completed
|
|
||||||
cy.get('.recon-dialog-service-list', { log: false }).should('be.empty');
|
|
||||||
|
|
||||||
cy.get('.dialog-container button', { log: false })
|
|
||||||
.contains('Add Standard Service...', { log: false })
|
|
||||||
.click({ log: false });
|
|
||||||
cy.get('.dialog-container:last-child input', {
|
|
||||||
log: false,
|
|
||||||
}).type('http://localhost:8000/reconcile', { log: false });
|
|
||||||
|
|
||||||
cy.get('.dialog-container:last-child button', { log: false })
|
|
||||||
.contains('Add Service', { log: false })
|
|
||||||
.click({ log: false });
|
|
||||||
|
|
||||||
// Checking that the list have only one service ensures that the services has been added
|
|
||||||
cy.get('.recon-dialog-service-selector', { log: false }).should('have.length', 1);
|
|
||||||
|
|
||||||
cy.get('.recon-dialog-service-selector:last-child').should(
|
|
||||||
'to.contain',
|
|
||||||
'CSV Reconciliation service'
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get('.recon-dialog-service-selector:last-child', { log: false }).click({
|
|
||||||
log: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.get('.recon-dialog-service-list').should('to.have.css', 'display', 'none');
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('Base reconciliation tests', () => {
|
|
||||||
it('Load the reconciliation panel, test the layout', () => {
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
|
||||||
addReconciliationService();
|
|
||||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
|
||||||
cy.get('.dialog-header').should('to.contain', 'Reconcile column "species"');
|
|
||||||
cy.get('.dialog-body').should(
|
|
||||||
'to.contain',
|
|
||||||
'Reconcile each cell to an entity of one of these types'
|
|
||||||
);
|
|
||||||
cy.get('.dialog-body').should(
|
|
||||||
'to.contain',
|
|
||||||
'Reconcile each cell to an entity of one of these types'
|
|
||||||
);
|
|
||||||
cy.get('.dialog-body .recon-dialog-service-panel').should(
|
|
||||||
'to.contain',
|
|
||||||
'CSV-recon'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Reconcile with automatch disabled', () => {
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
|
||||||
addReconciliationService();
|
|
||||||
|
|
||||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
|
||||||
|
|
||||||
cy.get('.dialog-container span')
|
|
||||||
.contains('Auto-match')
|
|
||||||
.siblings('input')
|
|
||||||
.uncheck();
|
|
||||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
|
||||||
cy.wait(10000); // eslint-disable-line
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// "Choose new match" appear when there is a match, if it's not there it means nothing is matched
|
|
||||||
cy.get('table.data-table td .data-table-cell-content').should(
|
|
||||||
'not.to.contain',
|
|
||||||
'Choose new match'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Reconcile with automatch enabled', () => {
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
|
||||||
addReconciliationService();
|
|
||||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
|
||||||
|
|
||||||
cy.get('.dialog-container span')
|
|
||||||
.contains('Auto-match')
|
|
||||||
.siblings('input')
|
|
||||||
.check();
|
|
||||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
|
||||||
cy.wait(10000); // eslint-disable-line
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// 4 rows should have been automatched
|
|
||||||
cy.get(
|
|
||||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
|
||||||
).should('have.length', 4);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Max number of candidates', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
];
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
|
||||||
addReconciliationService();
|
|
||||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
|
||||||
cy.get('.dialog-container input[bind="maxCandidates"]').type(2);
|
|
||||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
|
||||||
cy.wait(10000); // eslint-disable-line
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
cy.get('.data-table-cell-content .data-table-recon-topic').should(
|
|
||||||
'have.length',
|
|
||||||
2
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Test reconciliation, in the grid', () => {
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
// Test 1, when there is a match
|
|
||||||
// simple assertion to ensure the content of the iframe is loaded for row 0 / species
|
|
||||||
// (recon loads match details from the recon endpoint in an iframe)
|
|
||||||
cy.getCell(0, 'species').within(() => {
|
|
||||||
cy.get('a[href^="http://localhost:8000/"]').trigger('mouseover');
|
|
||||||
cy.get(
|
|
||||||
'a[href^="http://localhost:8000/"] .data-table-topic-popup'
|
|
||||||
).should('to.exist');
|
|
||||||
|
|
||||||
cy.get('iframe').its('0.contentDocument').should('exist');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Test 2, when there are candidates
|
|
||||||
// ensure the first one loads an iframe on hover
|
|
||||||
cy.getCell(3, 'species').within(() => {
|
|
||||||
cy.get(
|
|
||||||
'.data-table-recon-candidate:first-child .data-table-recon-topic'
|
|
||||||
).trigger('mouseover');
|
|
||||||
cy.get(
|
|
||||||
'.data-table-recon-candidate:first-child .data-table-topic-popup'
|
|
||||||
).should('to.exist');
|
|
||||||
|
|
||||||
cy.get(
|
|
||||||
'.data-table-recon-candidate:first-child .data-table-topic-popup iframe'
|
|
||||||
)
|
|
||||||
.its('0.contentDocument')
|
|
||||||
.should('exist');
|
|
||||||
|
|
||||||
// verify the three buttons inside the popup
|
|
||||||
cy.get(
|
|
||||||
'.data-table-recon-candidate:first-child .data-table-topic-popup'
|
|
||||||
).within(() => {
|
|
||||||
cy.get('button').contains('Match this Cell').should('to.exist');
|
|
||||||
cy.get('button')
|
|
||||||
.contains('Match All Identical Cells')
|
|
||||||
.should('to.exist');
|
|
||||||
cy.get('button').contains('Cancel').should('to.exist');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Match this cell', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// over on a candidate (Lineus longissimus)
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('a')
|
|
||||||
.contains('Lineus longissimus')
|
|
||||||
.trigger('mouseover');
|
|
||||||
|
|
||||||
// click on match
|
|
||||||
cy.getCell(0, 'species').find('button').contains('Match this Cell').click();
|
|
||||||
|
|
||||||
// check notification
|
|
||||||
cy.assertNotificationContainingText('Match Lineus longissimus');
|
|
||||||
|
|
||||||
// check that candidates have disappeared, means matched
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('.data-table-recon-candidates')
|
|
||||||
.should('not.to.exist');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Match All identical cell', () => {
|
|
||||||
const fixture = [
|
|
||||||
['record_id', 'date', 'location', 'species'],
|
|
||||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
['16', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
|
||||||
];
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
cy.reconcileColumn('species');
|
|
||||||
cy.assertColumnIsReconciled('species');
|
|
||||||
|
|
||||||
// ensure both rows have candidates
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('.data-table-recon-candidate')
|
|
||||||
.should('have.length', 6);
|
|
||||||
|
|
||||||
cy.getCell(1, 'species')
|
|
||||||
.find('.data-table-recon-candidate')
|
|
||||||
.should('have.length', 6);
|
|
||||||
|
|
||||||
// over on a candidate (Lineus longissimus)
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('a')
|
|
||||||
.contains('Lineus longissimus')
|
|
||||||
.trigger('mouseover');
|
|
||||||
|
|
||||||
// click on match all
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('button')
|
|
||||||
.contains('Match All Identical Cells')
|
|
||||||
.click();
|
|
||||||
|
|
||||||
// check notification
|
|
||||||
cy.assertNotificationContainingText(
|
|
||||||
'Match item Lineus longissimus (2508430) for 2 cells'
|
|
||||||
);
|
|
||||||
|
|
||||||
// check that candidates have disappeared on both rows, means matched all
|
|
||||||
cy.getCell(0, 'species')
|
|
||||||
.find('.data-table-recon-candidates')
|
|
||||||
.should('not.to.exist');
|
|
||||||
|
|
||||||
cy.getCell(1, 'species')
|
|
||||||
.find('.data-table-recon-candidates')
|
|
||||||
.should('not.to.exist');
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,30 +0,0 @@
|
|||||||
describe('Use values as identifiers', () => {
|
|
||||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
|
||||||
const fixture = [
|
|
||||||
['identifier'],
|
|
||||||
['2253634'],
|
|
||||||
['2328088'],
|
|
||||||
['2868241'],
|
|
||||||
[null],
|
|
||||||
['8211794'],
|
|
||||||
[null],
|
|
||||||
];
|
|
||||||
|
|
||||||
cy.loadAndVisitProject(fixture);
|
|
||||||
|
|
||||||
cy.columnActionClick('identifier', [
|
|
||||||
'Reconcile',
|
|
||||||
'Use values as identifiers',
|
|
||||||
]);
|
|
||||||
|
|
||||||
cy.get('.dialog-container .dialog-footer button').contains('OK').click();
|
|
||||||
|
|
||||||
// ensure column is reconciled
|
|
||||||
cy.assertColumnIsReconciled('identifier');
|
|
||||||
|
|
||||||
// ensure 4 rows are matched based on the identifier
|
|
||||||
cy.get(
|
|
||||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
|
||||||
).should('have.length', 4);
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in New Issue
Block a user