diff --git a/frontend/cypress/e2e/admin/students/list.cy.ts b/frontend/cypress/e2e/admin/students/list.cy.ts index 79faa96..a01641d 100644 --- a/frontend/cypress/e2e/admin/students/list.cy.ts +++ b/frontend/cypress/e2e/admin/students/list.cy.ts @@ -2,7 +2,7 @@ describe('Admin Student CRUD', () => { beforeEach(() => { cy.visit('/login') - cy.wait(1000) + cy.wait(3000) cy.get('input[type="email"]').type('test@example.com') cy.get('input[type="password"]').type('password') @@ -101,4 +101,83 @@ describe('Admin Student CRUD', () => { expect(count).to.be.eq(initialRowCount - 1) }) }) + + it('should be able to edit a student', () => { + // Náhodné sety + const firstNames = ['Ján', 'Peter', 'Martin', 'Tomáš', 'Michal', 'Anna', 'Mária', 'Eva', 'Katarína', 'Lucia', 'Adam', 'Cypress'] + const lastNames = ['Novák', 'Kováč', 'Horváth', 'Varga', 'Molnár', 'Tóth', 'Nagy', 'Lukáč', 'Szabó', 'Kiss', 'Jablko', 'Tester'] + + // Výber náhodného študenta + cy.get('table tbody tr').then($rows => { + const randomIndex = Math.floor(Math.random() * $rows.length) + const randomRow = $rows.eq(randomIndex) + + cy.wrap(randomIndex).as('selectedIndex') + cy.wrap(randomRow).as('selectedRow') + }) + + // Kliknutie na "Editovať" + cy.get('@selectedRow').within(() => { + cy.contains('Editovať').click() + }) + + // Generovanie náhodného mena + + const randomFirstName = firstNames[Math.floor(Math.random() * firstNames.length)] + const randomLastName = lastNames[Math.floor(Math.random() * lastNames.length)] + const randomStudentEmail = `cypress.test.${Date.now()}@student.ukf.sk` + const randomPhone = `+421${Math.floor(Math.random() * 900000000 + 100000000)}` + const randomPersonalEmail = `cypress.test.${Date.now()}@gmail.com` + const randomHouseNumber = Math.floor(Math.random() * 200 + 1) + const randomAddress = `Hlavná ${randomHouseNumber}/1, Komárno, 946 01` + + // Kontrola cesty + cy.url().should('include', '/dashboard/admin/students/edit/') + + // Zmena mena + cy.get('#input-v-1-1').clear().type(randomFirstName) // meno + cy.get('#input-v-1-4').clear().type(randomLastName) // priezvisko + + // Zmena e-mailu + cy.get('#input-v-1-7').clear().type(randomStudentEmail) + + // Zmena telefónu + cy.get('#input-v-1-10').clear().type(randomPhone) + + // Zmena študijného programu + cy.get('#input-v-1-13').clear().type('aplikovaná informatika') + + // Zmena osobného e-mailu + cy.get('#input-v-1-16').clear().type(randomPersonalEmail) + + // Zmena adresy + cy.get('#input-v-1-19').clear().type(randomAddress) + + // Uložiť zmeny + cy.contains('Uložiť zmeny').click() + + // Počkanie na uloženie + cy.wait(2000) + cy.url().should('include', '/dashboard/admin/students') + + // Overenie zmien v tabuľke + cy.get('@selectedIndex').then((index) => { + cy.get('table tbody tr').eq(index as number).within(() => { + const expectedValues = [ + `${randomFirstName} ${randomLastName}`, + randomStudentEmail, + randomPhone, + 'aplikovaná informatika', + randomPersonalEmail, + randomAddress + ] + + cy.get('td').then($cells => { + expectedValues.forEach((expectedValue, i) => { + expect($cells.eq(i).text().trim()).to.equal(expectedValue) + }) + }) + }) + }) + }) }) \ No newline at end of file