Skip to content

Commit ef4dd5a

Browse files
committed
E2E test for application placement preschool date validations
1 parent c0da17d commit ef4dd5a

File tree

4 files changed

+86
-43
lines changed

4 files changed

+86
-43
lines changed

frontend/src/e2e-test/pages/employee/placement-draft-page.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,23 @@ import { Combobox, DatePicker } from '../../utils/page'
1010
export class PlacementDraftPage {
1111
#restrictedDetailsWarning: Element
1212
startDate: DatePicker
13+
endDate: DatePicker
14+
preschoolDaycareStartDate: DatePicker | null = null
15+
preschoolDaycareEndDate: DatePicker | null = null
1316
#addOtherUnitCombobox: Combobox
1417
constructor(private page: Page) {
1518
this.#restrictedDetailsWarning = page.findByDataQa(
1619
'restricted-details-warning'
1720
)
1821
this.startDate = new DatePicker(page.findByDataQa('start-date'))
22+
this.endDate = new DatePicker(page.findByDataQa('end-date'))
23+
this.preschoolDaycareStartDate = new DatePicker(
24+
page.findByDataQa('preschool-daycare-start-date')
25+
)
26+
this.preschoolDaycareEndDate = new DatePicker(
27+
page.findByDataQa('preschool-daycare-end-date')
28+
)
29+
1930
this.#addOtherUnitCombobox = new Combobox(
2031
page.findByDataQa('add-other-unit')
2132
)

frontend/src/e2e-test/specs/5_employee/application-transitions.spec.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ describe('Application transitions', () => {
382382
testChild2,
383383
familyWithTwoGuardians.guardian,
384384
undefined,
385-
'DAYCARE',
385+
'PRESCHOOL',
386386
null,
387387
[testDaycare.id],
388388
true,
@@ -414,7 +414,6 @@ describe('Application transitions', () => {
414414

415415
const planStartDate = preferredStartDate.addDays(1)
416416
await placementDraftPage.startDate.fill(planStartDate)
417-
418417
await placementDraftPage.assertOccupancies(testDaycare.id, {
419418
max3Months: '14,3 %',
420419
max6Months: '14,3 %',
@@ -431,6 +430,36 @@ describe('Application transitions', () => {
431430
})
432431

433432
await placementDraftPage.placeToUnit(testPreschool.id)
433+
434+
// TODO test placement dates here
435+
const preschoolTermValidationWarning = page.findByDataQa(
436+
'preschool-term-warning'
437+
)
438+
await preschoolTermValidationWarning
439+
.findText('Sijoituksen tulee olla esiopetuskaudella')
440+
.waitUntilVisible()
441+
442+
await placementDraftPage.preschoolDaycareEndDate?.fill(
443+
preschoolTerm2021.extendedTerm.end
444+
)
445+
await preschoolTermValidationWarning
446+
.findText('Sijoituksen tulee olla esiopetuskaudella')
447+
.waitUntilHidden()
448+
449+
await placementDraftPage.endDate?.fill(
450+
preschoolTerm2021.finnishPreschool.end.addDays(1)
451+
)
452+
await preschoolTermValidationWarning
453+
.findText('Sijoituksen tulee olla esiopetuskaudella')
454+
.waitUntilVisible()
455+
456+
await placementDraftPage.endDate?.fill(
457+
preschoolTerm2021.finnishPreschool.end
458+
)
459+
await preschoolTermValidationWarning
460+
.findText('Sijoituksen tulee olla esiopetuskaudella')
461+
.waitUntilHidden()
462+
434463
await placementDraftPage.submit()
435464

436465
await applicationListView.filterByApplicationStatus('WAITING_DECISION')

frontend/src/employee-frontend/components/placement-draft/PlacementDraft.tsx

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,46 @@ export default React.memo(function PlacementDraft() {
208208
)
209209
}, [applicationId, redirectToMainPage])
210210

211+
const validatePreschoolPeriods = useCallback(
212+
(
213+
placementType: PlacementType,
214+
periodType: 'period' | 'preschoolDaycarePeriod',
215+
period: FiniteDateRange
216+
) => {
217+
if (preschoolTermsResult.isSuccess) {
218+
if (
219+
placementType === 'PRESCHOOL' ||
220+
placementType === 'PREPARATORY' ||
221+
placementType === 'PRESCHOOL_DAYCARE' ||
222+
placementType === 'PRESCHOOL_DAYCARE_ONLY' ||
223+
placementType === 'PREPARATORY_DAYCARE'
224+
) {
225+
if (periodType === 'period') {
226+
preschoolTermsResult.map((preschoolTerms) => {
227+
const datesAreInsideSomePreschoolTerm = preschoolTerms.some(
228+
(term) =>
229+
term.finnishPreschool.asDateRange().contains(period) ||
230+
term.swedishPreschool.asDateRange().contains(period)
231+
)
232+
setPreschoolDatesTermWarning(!datesAreInsideSomePreschoolTerm)
233+
})
234+
} else {
235+
preschoolTermsResult.map((preschoolTerms) => {
236+
const datesAreInsideSomeExtendedPreschoolTerm =
237+
preschoolTerms.some((term) =>
238+
term.extendedTerm.asDateRange().contains(period)
239+
)
240+
setPreschoolDatesTermWarning(
241+
!datesAreInsideSomeExtendedPreschoolTerm
242+
)
243+
})
244+
}
245+
}
246+
}
247+
},
248+
[preschoolTermsResult, setPreschoolDatesTermWarning]
249+
)
250+
211251
useEffect(() => {
212252
if (placementDraft.isSuccess) {
213253
void getApplicationUnitsResult({
@@ -274,46 +314,6 @@ export default React.memo(function PlacementDraft() {
274314
return null
275315
}
276316

277-
const validatePreschoolPeriods = useCallback(
278-
(
279-
placementType: PlacementType,
280-
periodType: 'period' | 'preschoolDaycarePeriod',
281-
period: FiniteDateRange
282-
) => {
283-
if (preschoolTermsResult.isSuccess) {
284-
if (
285-
placementType === 'PRESCHOOL' ||
286-
placementType === 'PREPARATORY' ||
287-
placementType === 'PRESCHOOL_DAYCARE' ||
288-
placementType === 'PRESCHOOL_DAYCARE_ONLY' ||
289-
placementType === 'PREPARATORY_DAYCARE'
290-
) {
291-
if (periodType === 'period') {
292-
preschoolTermsResult.map((preschoolTerms) => {
293-
const datesAreInsideSomePreschoolTerm = preschoolTerms.some(
294-
(term) =>
295-
term.finnishPreschool.asDateRange().contains(period) ||
296-
term.swedishPreschool.asDateRange().contains(period)
297-
)
298-
setPreschoolDatesTermWarning(!datesAreInsideSomePreschoolTerm)
299-
})
300-
} else {
301-
preschoolTermsResult.map((preschoolTerms) => {
302-
const datesAreInsideSomeExtendedPreschoolTerm =
303-
preschoolTerms.some((term) =>
304-
term.extendedTerm.asDateRange().contains(period)
305-
)
306-
setPreschoolDatesTermWarning(
307-
!datesAreInsideSomeExtendedPreschoolTerm
308-
)
309-
})
310-
}
311-
}
312-
}
313-
},
314-
[preschoolTermsResult, setPreschoolDatesTermWarning]
315-
)
316-
317317
const updatePlacementDate =
318318
(
319319
periodType: 'period' | 'preschoolDaycarePeriod',
@@ -450,7 +450,7 @@ export default React.memo(function PlacementDraft() {
450450
)}
451451
/>
452452
{preschoolDatesTermWarning && (
453-
<div>
453+
<div data-qa="preschool-term-warning">
454454
<WarningContainer>
455455
<InputWarning
456456
text={

frontend/src/employee-frontend/components/placement-draft/PlacementDraftRow.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export default React.memo(function PlacementDraftSection({
136136
onChange={updateEnd}
137137
minDate={formState.period?.start ?? today}
138138
locale="fi"
139+
data-qa="end-date"
139140
/>
140141
</DateRowItem>
141142
<DateRowItem>
@@ -159,13 +160,15 @@ export default React.memo(function PlacementDraftSection({
159160
onChange={updatePreschoolStart}
160161
minDate={today}
161162
locale="fi"
163+
data-qa="preschool-daycare-start-date"
162164
/>
163165
<DatePickerSpacer />
164166
<DatePicker
165167
date={formState.preschoolDaycarePeriod?.end ?? null}
166168
onChange={updatePreschoolEnd}
167169
minDate={formState.preschoolDaycarePeriod?.start ?? today}
168170
locale="fi"
171+
data-qa="preschool-daycare-end-date"
169172
/>
170173
</DateRowItem>
171174
{formState.preschoolDaycarePeriod !== null &&

0 commit comments

Comments
 (0)