test sparse placement controls

This commit is contained in:
Yisroel Baum 2026-08-19 22:43:35 +03:00
parent 90dcc8665a
commit 6f2c49026a
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9

View file

@ -67,6 +67,13 @@ const overloadedBibleLayout = {
),
}
const sparseBibleLayout = {
...bibleLayout,
levels: bibleLayout.levels.map((level) =>
level.id === 3 ? { ...level, elementCount: 4 } : level,
),
}
const scheduleDetail = {
schedule: {
id: 73,
@ -201,7 +208,7 @@ describe('set scheduling', () => {
levelId: 3,
startDate: '2026-08-10',
targetDate: '2026-08-12',
workloadPlacement: 'middle',
workloadPlacement: 'spread',
})
request.reply({ statusCode: 201, body: scheduleDetail })
}).as('createSchedule')
@ -286,6 +293,42 @@ describe('set scheduling', () => {
cy.wait('@createSchedule')
})
it('packs sparse assignment days where the user chooses', () => {
cy.intercept('GET', '**/api/sets/41', {
statusCode: 200,
body: sparseBibleLayout,
}).as('layout')
cy.intercept('POST', '**/api/schedules', (request) => {
expect(request.body).to.deep.equal({
setId: 41,
levelId: 3,
startDate: '2026-08-10',
targetDate: '2026-08-15',
workloadPlacement: 'end',
})
request.reply({ statusCode: 201, body: scheduleDetail })
}).as('createSchedule')
cy.visit('/sets/41/schedules/new')
cy.wait('@me')
cy.wait('@layout')
cy.get('#schedule-level').select('3')
cy.get('#schedule-start-date').type('2026-08-10')
cy.get('#schedule-target-date').type('2026-08-15')
cy.get('[data-workload-placement]').should('be.visible').within(() => {
cy.contains('legend', 'Assignment days').should('be.visible')
cy.contains('Spread evenly').should('be.visible')
cy.contains('At the start').should('be.visible')
cy.contains('In the middle').should('be.visible')
cy.contains('At the end').should('be.visible')
cy.get('input[value="spread"]').should('be.checked')
cy.get('input[value="end"]').check()
})
cy.get('form').submit()
cy.wait('@createSchedule')
})
it('validates the schedule form before submitting', () => {
cy.intercept('GET', '**/api/sets/41', {
statusCode: 200,