feat: add e2e test for student data editing for admins

This commit is contained in:
2025-11-17 16:55:32 +01:00
parent 0a3e9b4765
commit 5b9d7bedf5

View File

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