From 0f44d649ee815b5bf2de3d97f9d07a1ab47a4737 Mon Sep 17 00:00:00 2001 From: juhanikat Date: Fri, 2 Oct 2026 12:50:03 +0300 Subject: [PATCH] fix incorrect tab numbers in tests, and update tests that navigate from locality to occurrence/species details --- cypress/e2e/locality.cy.js | 65 +++++++++++++++++++++++++++++++++++--- cypress/e2e/misc.cy.js | 2 +- cypress/e2e/museum.cy.js | 8 ++--- cypress/e2e/ui.cy.js | 24 ++++++++++---- 4 files changed, 83 insertions(+), 16 deletions(-) diff --git a/cypress/e2e/locality.cy.js b/cypress/e2e/locality.cy.js index 3cc08844..cce2c913 100644 --- a/cypress/e2e/locality.cy.js +++ b/cypress/e2e/locality.cy.js @@ -4,7 +4,6 @@ before('Reset database', () => { const buildLocalityName = (base = 'Bugat') => `${base} ${Date.now()}-${Math.floor(Math.random() * 1e6)}` - // TODO: these tests are obsolete now that the Species tab has been removed from Locality details. // I'm leaving the code here in case it has to be re-enabled in the future. // Some of these tests should also probably be modified and copied over to the Occurrence tab testing. @@ -607,6 +606,64 @@ describe('Editing a locality', () => { cy.contains(speciesName) }) + it('does not create a species already used by another, saved occurrence', () => { + const speciesName = `saveddoublespecies` + + cy.visit(`/locality/20920?tab=2`) + cy.contains('Lantian-Shuijiazui') + cy.get('[id=edit-button]').click() + cy.get('[data-cy=new-occurrence-button]').click() + cy.contains('Add new Species').click() + cy.get('[name=order_name]').type('Neworder') + cy.get('[name=family_name]').type('Newfamily') + cy.get('[name=genus_name]').type('Newgenus') + cy.get('[name=species_name]').type(speciesName) + cy.get('[id=editing-modal-save-button]').click() + cy.contains('Save occurrence').should('not.be.disabled').click() + cy.addReferenceAndSave() + + cy.visit(`/locality/20920?tab=2`) + cy.contains('Lantian-Shuijiazui') + cy.get('[id=edit-button]').click() + cy.contains(speciesName) + cy.get('[data-cy=new-occurrence-button]').click() + cy.contains('Add new Species').click() + cy.get('[name=order_name]').type('Neworder') + cy.get('[name=family_name]').type('Newfamily') + cy.get('[name=genus_name]').type('Newgenus') + cy.get('[name=species_name]').type(speciesName) + cy.get('[id=editing-modal-save-button]').click() + cy.contains('The taxon already exists in the database.').should('be.visible') + cy.contains('Save occurrence').should('be.disabled') + }) + + it('does not create a species already used by another, unsaved occurrence', () => { + const speciesName = `unsaveddoublespecies` + + cy.visit(`/locality/20920?tab=2`) + cy.contains('Lantian-Shuijiazui') + cy.get('[id=edit-button]').click() + cy.get('[data-cy=new-occurrence-button]').click() + cy.contains('Add new Species').click() + cy.get('[name=order_name]').type('Neworder') + cy.get('[name=family_name]').type('Newfamily') + cy.get('[name=genus_name]').type('Newgenus') + cy.get('[name=species_name]').type(speciesName) + cy.get('[id=editing-modal-save-button]').click() + cy.contains('Save occurrence').should('not.be.disabled').click() + cy.contains(speciesName) + + cy.get('[data-cy=new-occurrence-button]').click() + cy.contains('Add new Species').click() + cy.get('[name=order_name]').type('Neworder') + cy.get('[name=family_name]').type('Newfamily') + cy.get('[name=genus_name]').type('Newgenus') + cy.get('[name=species_name]').type(speciesName) + cy.get('[id=editing-modal-save-button]').click() + cy.contains('The taxon already exists in the database.').should('be.visible') + cy.contains('Save occurrence').should('be.disabled') + }) + it('shows taxonomy check error when copied taxonomy is unchanged', () => { cy.visit(`/locality/20920?tab=2`) cy.contains('Lantian-Shuijiazui') @@ -748,7 +805,7 @@ describe('Linking projects to an existing locality', () => { beforeEach('Login as admin and open projects tab', () => { cy.loginWithSession('testSu') - cy.visit(`/locality/${localityId}?tab=10`) + cy.visit(`/locality/${localityId}?tab=9`) cy.contains('Dmanisi') }) @@ -763,7 +820,7 @@ describe('Linking projects to an existing locality', () => { cy.addReferenceAndSave() cy.contains('Edited item successfully.') - cy.visit(`/locality/${localityId}?tab=10`) + cy.visit(`/locality/${localityId}?tab=9`) cy.contains(newProjectCode) cy.get('[id=edit-button]').click() @@ -771,7 +828,7 @@ describe('Linking projects to an existing locality', () => { cy.addReferenceAndSave() cy.contains('Edited item successfully.') - cy.visit(`/locality/${localityId}?tab=10`) + cy.visit(`/locality/${localityId}?tab=9`) cy.contains(newProjectCode).should('not.exist') }) }) diff --git a/cypress/e2e/misc.cy.js b/cypress/e2e/misc.cy.js index 4e27a5f8..f3282858 100644 --- a/cypress/e2e/misc.cy.js +++ b/cypress/e2e/misc.cy.js @@ -33,7 +33,7 @@ before('Reset database', () => { describe('Test individual features across the app', () => { it('Locality update tab opens, detailed modal works, view-link works', () => { - cy.visit(`/locality/24750?tab=11`) + cy.visit(`/locality/24750?tab=10`) cy.contains('2006-10-16') cy.contains( 'Cande (1992). A new geomagnetic polarity time scale for the Late Cretaceous and Cenozoic. Geology 97: 13917-13951.' diff --git a/cypress/e2e/museum.cy.js b/cypress/e2e/museum.cy.js index 634450f8..dcf39823 100644 --- a/cypress/e2e/museum.cy.js +++ b/cypress/e2e/museum.cy.js @@ -144,7 +144,7 @@ describe('Museum e2e flows', () => { it('links an existing museum to a locality and saves the locality', () => { cy.intercept('PUT', '**/locality').as('saveLocality') - cy.visit('/locality/20920?tab=9') + cy.visit('/locality/20920?tab=8') cy.get('[id=edit-button]').click() cy.contains('Select Museum').click() @@ -157,7 +157,7 @@ describe('Museum e2e flows', () => { cy.addReferenceAndSave() cy.wait('@saveLocality').its('response.statusCode').should('eq', 200) - cy.visit('/locality/20920?tab=9') + cy.visit('/locality/20920?tab=8') cy.contains(seedMuseum.institution).should('be.visible') }) @@ -170,7 +170,7 @@ describe('Museum e2e flows', () => { cy.intercept('PUT', '**/museum').as('saveMuseum') cy.intercept('PUT', '**/locality').as('saveLocality') - cy.visit('/locality/20920?tab=9') + cy.visit('/locality/20920?tab=8') cy.get('[id=edit-button]').click() cy.contains('Create Museum').click() @@ -185,7 +185,7 @@ describe('Museum e2e flows', () => { cy.addReferenceAndSave() cy.wait('@saveLocality').its('response.statusCode').should('eq', 200) - cy.visit('/locality/20920?tab=9') + cy.visit('/locality/20920?tab=8') cy.contains(institution).should('be.visible') }) }) diff --git a/cypress/e2e/ui.cy.js b/cypress/e2e/ui.cy.js index 69ad1764..b41405ac 100644 --- a/cypress/e2e/ui.cy.js +++ b/cypress/e2e/ui.cy.js @@ -70,19 +70,29 @@ describe('Button Tests', () => { cy.contains('Updates').should('be.visible') }) - it('Links between localities and species work', () => { + it('Links between localities and occurrences work', () => { cy.visit('/locality/21050') - cy.get('[role=tablist]').contains('Species').click() - cy.get('[data-cy="table-row-21426"]', { timeout: 10000 }).click() + cy.get('[role=tablist]').contains('Occurrences').click() + cy.get('[data-cy="table-row-21426"]').click() + cy.url().should('contain', '/occurrence/21050/21426') + cy.contains('Amblycoptus indet.') + + cy.contains('a', 'Dmanisi').click() + cy.url.should('contain', '/locality/21050') + cy.contains('Dmanisi') + }) + + it.todo('Links between localities and species work', () => { + cy.visit('/locality/21050') + cy.get('[role=tablist]').contains('Occurrences').click() + cy.get('[id=go-to-species-21426]').click() cy.url().should('contain', '/species/21426') cy.contains('Amblycoptus indet.') cy.contains('Mammalia') - cy.contains('Diet') + cy.get('[role=tablist]').contains('Localities').click() - cy.get('[data-cy="table-row-21050"]', { timeout: 10000 }).click() + cy.get('[data-cy="table-row-21050"]').click() cy.url().should('contain', '/locality/21050') cy.contains('Dmanisi') - cy.contains('Dating method') - cy.contains('Lithology') }) })