Keep and validate project type selection when creating/editing application periods #47

Merged
niat8586 merged 3 commits from project-type-lost-application-period-creation into develop 2024-12-16 13:23:38 +01:00
4 changed files with 25 additions and 8 deletions
Showing only changes of commit d387e8002e - Show all commits

View File

@ -17,6 +17,7 @@
<fieldset class="mb-3">
<legend><wicket:message key="projectTypes"/></legend>
<div wicket:id="projectTypes"></div>
<div wicket:id="projectTypesFeedback"></div>
</fieldset>
<div class="form-row">

View File

@ -58,14 +58,15 @@ public class AdminEditApplicationPeriodPage
);
add(new ComponentFeedbackPanel(TITLE_FEEDBACK, title));
add(title);
add(
new BootstrapCheckBoxMultipleChoice<>(
BootstrapCheckBoxMultipleChoice<ProjectType> projectTypeChoice = new BootstrapCheckBoxMultipleChoice<>(
PROJECT_TYPES,
LambdaModel.of(getModel(), ApplicationPeriod::getProjectTypes, ApplicationPeriod::setProjectTypes),
availableProjectTypes(),
new LambdaChoiceRenderer<>(ProjectType::getName, ProjectType::getId)
)
);
projectTypeChoice.setRequired(true);
add(projectTypeChoice);
add(new FencedFeedbackPanel("projectTypesFeedback", projectTypeChoice));
final FormComponent<LocalDate> startDate = addDateField(
START_DATE,
LambdaModel.of(getModel(), ApplicationPeriod::getStartDate, ApplicationPeriod::setStartDate)

View File

@ -15,3 +15,4 @@ overlapping= Overlapping application period already exists.
date.Required= You need to specify a valid date.
hours.Required= Hours field is required.
minutes.Required= Minutes field is required.
projectTypes.Required=You must select at least one project type.

View File

@ -120,12 +120,25 @@ public class AdminEditApplicationPeriodPageTest extends SciProTest {
MatcherAssert.assertThat(captor.getValue().getProjectTypes(), Matchers.hasItem(bachelor));
}
@Test
public void requires_at_least_one_project_type_to_be_selected() {
FormTester formTester = tester.newFormTester(FORM);
fillInFormWithValidValues(formTester);
formTester.setValue(path(PROJECT_TYPES), "");
formTester.submit();
tester.assertErrorMessages(tester.getLastRenderedPage().getString("projectTypes.Required"));
}
private void submitForm(String title, int startDate, int endDate, int courseStartDate) {
FormTester formTester = tester.newFormTester(FORM);
fillInForm(title, startDate, endDate, courseStartDate, formTester);
formTester.submit();
}
private void fillInFormWithValidValues(FormTester formTester) {
fillInForm("Title", 0, 1, 2, formTester);
}
private void fillInForm(String title, int startDate, int endDate, int courseStartDate, FormTester formTester) {
formTester.setValue(TITLE, title);
final LocalDate now = LocalDate.now();
@ -133,6 +146,7 @@ public class AdminEditApplicationPeriodPageTest extends SciProTest {
formTester.setValue(END_DATE, now.plusDays(endDate).toString());
formTester.setValue(COURSE_START_DATE, now.plusDays(courseStartDate).toString());
formTester.setValue("courseStartTime", "08:00");
formTester.setValue(PROJECT_TYPES, String.valueOf(bachelor.getId()));
}
private void startPage() {