test assignment completion ui

This commit is contained in:
Yisroel Baum 2026-08-15 22:47:49 +03:00
parent 350d2ec0b7
commit 0d9e2fa71b
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
2 changed files with 155 additions and 0 deletions

View file

@ -113,6 +113,74 @@ describe("today's assignments", () => {
)
})
it('completes an assignment and keeps failures retryable', () => {
cy.intercept('GET', `**/api/assignments?date=${browserToday}`, {
statusCode: 200,
body: {
date: browserToday,
assignments: [
{
id: 12,
schedule: {
id: 73,
set: { name: 'Bible' },
},
element: {
name: 'Chapter 1',
kind: 'chapter',
path: ['Genesis', 'Chapter 1'],
},
},
],
},
}).as('todayAssignments')
let requestCount = 0
cy.intercept('PATCH', '**/api/assignments/12', (request) => {
requestCount += 1
request.alias = `completion${requestCount}`
expect(request.body).to.deep.equal({ completed: true })
if (requestCount === 1) {
request.reply({ delay: 400, statusCode: 500 })
return
}
request.reply({
delay: 400,
statusCode: 200,
body: {
assignment: {
id: 12,
completedAt: '2026-08-15T12:30:00+00:00',
},
},
})
})
cy.visit('/dashboard')
cy.wait('@me')
cy.wait('@todayAssignments')
cy.get('[data-today-assignment="12"]').within(() => {
cy.contains('button', 'Mark complete').click()
cy.contains('button', 'Completing...').should('be.disabled')
})
cy.wait('@completion1')
cy.get('[data-today-assignment="12"]')
.should('contain.text', "We couldn't update this assignment.")
.within(() => {
cy.contains('button', 'Mark complete').click()
cy.contains('button', 'Completing...').should('be.disabled')
})
cy.wait('@completion2')
cy.get('[data-today-assignment="12"]').should('not.exist')
cy.get('.today-assignments [role="status"]').should(
'contain.text',
'Nothing is assigned for today.',
)
})
it('retries independently after the request fails', () => {
let requestCount = 0
cy.intercept(