const MOCK_PATIENT = { id: 'test-patient-uuid', name_family: 'Robot', name_given: ['Robbert'], birth_date: '1990-01-01', identifier_client_number: '99001', }; const FHIR_RESPONSE = { entry: [{ resource: { id: MOCK_PATIENT.id, name: [{ family: MOCK_PATIENT.name_family, given: MOCK_PATIENT.name_given }], birthDate: MOCK_PATIENT.birth_date, identifier: [{ system: 'http://example.com/client/999.7.6', value: MOCK_PATIENT.identifier_client_number }], }, }], }; describe('Agenda', () => { beforeEach(() => { cy.login(); cy.visit('/epd/agenda'); }); it('laadt de agendapagina', () => { cy.contains('h1', 'Agenda').should('be.visible'); cy.contains('Nieuwe Afspraak').should('be.visible'); }); it('toont navigatieknoppen en weergave-switcher', () => { cy.contains('Vandaag').should('be.visible'); cy.contains('Dag').should('be.visible'); }); }); describe('Afspraak maken', () => { beforeEach(() => { cy.intercept('GET', '/api/fhir/Patient**', FHIR_RESPONSE).as('patientSearch'); cy.login(); cy.visit('/epd/agenda'); }); it('opent de "Nieuwe Afspraak" modal', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').should('be.visible'); cy.get('[role="dialog"]').contains('Nieuwe Afspraak'); }); it('modal toont alle verplichte velden', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').within(() => { cy.get('input[placeholder*="Zoek op naam"]').should('be.visible'); cy.get('input[type="date"]').should('be.visible'); cy.get('input[type="time"]').first().should('be.visible'); cy.contains('button', 'Afspraak maken').should('be.visible'); }); }); it('zoeken naar patiënt toont resultaat', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').within(() => { cy.get('input[placeholder*="Zoek op naam"]').type('Robbert'); }); cy.wait('@patientSearch'); cy.contains('Robbert Robot').should('be.visible'); }); it('selecteren van patiënt vult het veld in', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').within(() => { cy.get('input[placeholder*="Zoek op naam"]').type('Robbert'); }); cy.wait('@patientSearch'); cy.contains('Robbert Robot').click(); cy.get('.bg-teal-50').should('be.visible'); }); it('afspraak maken knop is uitgeschakeld zonder patiënt', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').within(() => { cy.contains('button', 'Afspraak maken').should('be.disabled'); }); }); it('sluiten sluit de modal', () => { cy.contains('Nieuwe Afspraak').click(); cy.get('[role="dialog"]').should('be.visible'); cy.get('[role="dialog"]').contains('button', 'Sluiten').click(); cy.get('[role="dialog"]').should('not.exist'); }); });