Proposal #4159, Removed all Cypress reconciliation tests (#4161)

This commit is contained in:
Florian Giroud 2021-09-17 12:56:10 +02:00 committed by GitHub
parent dc180faf30
commit 13f97c246d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 0 additions and 517 deletions

View File

@ -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',
],
},
{

View File

@ -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');
});
});

View File

@ -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');
});
});

View File

@ -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');
});
});

View File

@ -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
});
});

View File

@ -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);
});
});

View File

@ -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');
});
});

View File

@ -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');
});
});

View File

@ -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);
});
});