test assignment completion ui
This commit is contained in:
parent
350d2ec0b7
commit
0d9e2fa71b
2 changed files with 155 additions and 0 deletions
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue