Keep and validate project type selection when creating/editing application periods #47
@ -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">
|
||||
|
@ -58,14 +58,15 @@ public class AdminEditApplicationPeriodPage
|
||||
);
|
||||
add(new ComponentFeedbackPanel(TITLE_FEEDBACK, title));
|
||||
add(title);
|
||||
add(
|
||||
new BootstrapCheckBoxMultipleChoice<>(
|
||||
PROJECT_TYPES,
|
||||
LambdaModel.of(getModel(), ApplicationPeriod::getProjectTypes, ApplicationPeriod::setProjectTypes),
|
||||
availableProjectTypes(),
|
||||
new LambdaChoiceRenderer<>(ProjectType::getName, ProjectType::getId)
|
||||
)
|
||||
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)
|
||||
|
@ -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.
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user