// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair /* eslint-disable @typescript-eslint/no-non-null-assertion */ import * as configFunctions from '../../../helpers/functions.config.js' import { testUpdate } from '../../../test/_globals.js' import type { MapRecord } from '../../../types/recordTypes.js' import { logout, login } from '../../support/index.js' describe('Update - Maps', () => { beforeEach('Loads page', () => { logout() login(testUpdate) }) afterEach(logout) it('Has a "Create" link on the Map Search', () => { cy.visit('/maps') cy.location('pathname').should('equal', '/maps') cy.get("a[href$='/maps/new']").should('exist') }) it('Creates a new map', () => { cy.visit('/maps/new') cy.log('Check the accessibility') cy.injectAxe() cy.checkA11y() cy.log('Populate the fields') // eslint-disable-next-line promise/catch-or-return, promise/always-return cy.fixture('map.json').then((mapJSON: MapRecord) => { cy.get("input[name='mapName']").clear().type(mapJSON.mapName!) cy.get("textarea[name='mapDescription']") .clear() .type(mapJSON.mapDescription!) cy.get("input[name='mapAddress1']").clear().type(mapJSON.mapAddress1!) cy.get("input[name='mapAddress2']").clear().type(mapJSON.mapAddress2!) cy.get("input[name='mapPostalCode']").clear().type(mapJSON.mapPostalCode!) cy.get("input[name='mapPhoneNumber']") .clear() .type(mapJSON.mapPhoneNumber!) cy.get("input[name='mapLatitude']") .clear() .type(mapJSON.mapLatitude!.toString()) cy.get("input[name='mapLongitude']") .clear() .type(mapJSON.mapLongitude!.toString()) }) cy.log('Ensure the default city and province are used') cy.get("input[name='mapCity']").should( 'have.value', configFunctions.getProperty('settings.map.mapCityDefault') ) cy.get("input[name='mapProvince']").should( 'have.value', configFunctions.getProperty('settings.map.mapProvinceDefault') ) cy.log('Submit the form') cy.get('#form--map').submit() cy.wait(1000) cy.location('pathname') .should('not.contain', '/new') .should('contain', '/edit') // eslint-disable-next-line promise/catch-or-return, promise/always-return cy.fixture('map.json').then((mapJSON: MapRecord) => { cy.get("input[name='mapName']").should('have.value', mapJSON.mapName) cy.get("textarea[name='mapDescription']").should( 'have.value', mapJSON.mapDescription ) cy.get("input[name='mapAddress1']").should( 'have.value', mapJSON.mapAddress1 ) cy.get("input[name='mapAddress2']").should( 'have.value', mapJSON.mapAddress2 ) cy.get("input[name='mapCity']").should( 'have.value', configFunctions.getProperty('settings.map.mapCityDefault') ) cy.get("input[name='mapProvince']").should( 'have.value', configFunctions.getProperty('settings.map.mapProvinceDefault') ) cy.get("input[name='mapPostalCode']").should( 'have.value', mapJSON.mapPostalCode ) cy.get("input[name='mapPhoneNumber']").should( 'have.value', mapJSON.mapPhoneNumber ) cy.get("input[name='mapLatitude']").should( 'have.value', mapJSON.mapLatitude!.toString() ) cy.get("input[name='mapLongitude']").should( 'have.value', mapJSON.mapLongitude!.toString() ) }) }) })