diff --git a/main/tests/cypress/build-test-matrix.js b/main/tests/cypress/build-test-matrix.js index d450c2c4a..a8076bd22 100644 --- a/main/tests/cypress/build-test-matrix.js +++ b/main/tests/cypress/build-test-matrix.js @@ -24,14 +24,12 @@ const groups = [ specs: [ 'cypress/integration/project/grid/column/edit-column/**/*.spec.js', 'cypress/integration/project/grid/column/facet/**/*.spec.js', - 'cypress/integration/project/grid/column/facet/reconcile/**/*.spec.js', ], }, { specs: [ 'cypress/integration/project/grid/column/transpose/**/*.spec.js', 'cypress/integration/project/grid/column/view/**/*.spec.js', - 'cypress/integration/project/grid/column/reconcile/**/*.spec.js', ], }, { diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/.gitkeep b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/clear_reconciliation_data.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/clear_reconciliation_data.spec.js deleted file mode 100644 index 347a0566f..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/clear_reconciliation_data.spec.js +++ /dev/null @@ -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'); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/discard_reconciliation_judgments.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/discard_reconciliation_judgments.spec.js deleted file mode 100644 index 5f21bf566..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/discard_reconciliation_judgments.spec.js +++ /dev/null @@ -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'); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/match_to_best_candidate.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/match_to_best_candidate.spec.js deleted file mode 100644 index 023aa00e9..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/actions/match_to_best_candidate.spec.js +++ /dev/null @@ -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'); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/add_entity_identifiers.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/add_entity_identifiers.spec.js deleted file mode 100644 index 66d8235e3..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/add_entity_identifiers.spec.js +++ /dev/null @@ -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 - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/copy_reconciliation_data.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/copy_reconciliation_data.spec.js deleted file mode 100644 index e10a9183e..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/copy_reconciliation_data.spec.js +++ /dev/null @@ -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); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/facets/by_judgment.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/facets/by_judgment.spec.js deleted file mode 100644 index 93eb07fae..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/facets/by_judgment.spec.js +++ /dev/null @@ -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'); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/reconcile.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/reconcile.spec.js deleted file mode 100644 index fcb1912ed..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/reconcile.spec.js +++ /dev/null @@ -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'); - }); -}); diff --git a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/use_values_as_identifiers.spec.js b/main/tests/cypress/cypress/integration/project/grid/column/reconcile/use_values_as_identifiers.spec.js deleted file mode 100644 index d8d4750c8..000000000 --- a/main/tests/cypress/cypress/integration/project/grid/column/reconcile/use_values_as_identifiers.spec.js +++ /dev/null @@ -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); - }); -});