Keep and validate project type selection when creating/editing application periods #47
@ -17,6 +17,7 @@
|
|||||||
<fieldset class="mb-3">
|
<fieldset class="mb-3">
|
||||||
<legend><wicket:message key="projectTypes"/></legend>
|
<legend><wicket:message key="projectTypes"/></legend>
|
||||||
<div wicket:id="projectTypes"></div>
|
<div wicket:id="projectTypes"></div>
|
||||||
|
<div wicket:id="projectTypesFeedback"></div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
|
@ -58,14 +58,15 @@ public class AdminEditApplicationPeriodPage
|
|||||||
);
|
);
|
||||||
add(new ComponentFeedbackPanel(TITLE_FEEDBACK, title));
|
add(new ComponentFeedbackPanel(TITLE_FEEDBACK, title));
|
||||||
add(title);
|
add(title);
|
||||||
add(
|
BootstrapCheckBoxMultipleChoice<ProjectType> projectTypeChoice = new BootstrapCheckBoxMultipleChoice<>(
|
||||||
new BootstrapCheckBoxMultipleChoice<>(
|
PROJECT_TYPES,
|
||||||
PROJECT_TYPES,
|
LambdaModel.of(getModel(), ApplicationPeriod::getProjectTypes, ApplicationPeriod::setProjectTypes),
|
||||||
LambdaModel.of(getModel(), ApplicationPeriod::getProjectTypes, ApplicationPeriod::setProjectTypes),
|
availableProjectTypes(),
|
||||||
availableProjectTypes(),
|
new LambdaChoiceRenderer<>(ProjectType::getName, ProjectType::getId)
|
||||||
new LambdaChoiceRenderer<>(ProjectType::getName, ProjectType::getId)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
projectTypeChoice.setRequired(true);
|
||||||
|
add(projectTypeChoice);
|
||||||
|
add(new FencedFeedbackPanel("projectTypesFeedback", projectTypeChoice));
|
||||||
final FormComponent<LocalDate> startDate = addDateField(
|
final FormComponent<LocalDate> startDate = addDateField(
|
||||||
START_DATE,
|
START_DATE,
|
||||||
LambdaModel.of(getModel(), ApplicationPeriod::getStartDate, ApplicationPeriod::setStartDate)
|
LambdaModel.of(getModel(), ApplicationPeriod::getStartDate, ApplicationPeriod::setStartDate)
|
||||||
|
@ -14,4 +14,5 @@ success= Application period saved.
|
|||||||
overlapping= Overlapping application period already exists.
|
overlapping= Overlapping application period already exists.
|
||||||
date.Required= You need to specify a valid date.
|
date.Required= You need to specify a valid date.
|
||||||
hours.Required= Hours field is required.
|
hours.Required= Hours field is required.
|
||||||
minutes.Required= Minutes field is required.
|
minutes.Required= Minutes field is required.
|
||||||
|
projectTypes.Required=You must select at least one project type.
|
||||||
|
@ -120,12 +120,25 @@ public class AdminEditApplicationPeriodPageTest extends SciProTest {
|
|||||||
MatcherAssert.assertThat(captor.getValue().getProjectTypes(), Matchers.hasItem(bachelor));
|
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) {
|
private void submitForm(String title, int startDate, int endDate, int courseStartDate) {
|
||||||
FormTester formTester = tester.newFormTester(FORM);
|
FormTester formTester = tester.newFormTester(FORM);
|
||||||
fillInForm(title, startDate, endDate, courseStartDate, formTester);
|
fillInForm(title, startDate, endDate, courseStartDate, formTester);
|
||||||
formTester.submit();
|
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) {
|
private void fillInForm(String title, int startDate, int endDate, int courseStartDate, FormTester formTester) {
|
||||||
formTester.setValue(TITLE, title);
|
formTester.setValue(TITLE, title);
|
||||||
final LocalDate now = LocalDate.now();
|
final LocalDate now = LocalDate.now();
|
||||||
@ -133,6 +146,7 @@ public class AdminEditApplicationPeriodPageTest extends SciProTest {
|
|||||||
formTester.setValue(END_DATE, now.plusDays(endDate).toString());
|
formTester.setValue(END_DATE, now.plusDays(endDate).toString());
|
||||||
formTester.setValue(COURSE_START_DATE, now.plusDays(courseStartDate).toString());
|
formTester.setValue(COURSE_START_DATE, now.plusDays(courseStartDate).toString());
|
||||||
formTester.setValue("courseStartTime", "08:00");
|
formTester.setValue("courseStartTime", "08:00");
|
||||||
|
formTester.setValue(PROJECT_TYPES, String.valueOf(bachelor.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startPage() {
|
private void startPage() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user