From cee39cbf78f6075b1d775eb605b83099d962ce59 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Thu, 20 Feb 2025 10:48:47 +0100 Subject: [PATCH] Use detachable IModels to prevent stale data --- .../java/se/su/dsv/scipro/grading/TemplatePanel.java | 11 ++++++++--- .../se/su/dsv/scipro/grading/TemplatePanelTest.java | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java index 1e66eeca5a..212053270e 100644 --- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java +++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java @@ -171,14 +171,19 @@ public class TemplatePanel extends Panel { public GradeLimitsContainer(String id, IModel<Project> projectIModel) { super(id, projectIModel); - List<GradeWithPointRange> list = getGradeWithPointRanges(projectIModel.getObject().getProjectType()); + IModel<List<GradeWithPointRange>> list = projectIModel.map(project -> + getGradeWithPointRanges(project.getProjectType()) + ); add( new ListView<>("gradewithlimits_list", list) { @Override protected void populateItem(ListItem<GradeWithPointRange> item) { - GradeWithPointRange gpr = item.getModelObject(); - String s = "[" + gpr.getGrade() + "] " + gpr.getLowerLimit() + " - " + gpr.getUpperLimit(); + IModel<String> s = item + .getModel() + .map( + gpr -> "[" + gpr.getGrade() + "] " + gpr.getLowerLimit() + " - " + gpr.getUpperLimit() + ); item.add(new Label("gradewithlimits", s)); add(item); } diff --git a/view/src/test/java/se/su/dsv/scipro/grading/TemplatePanelTest.java b/view/src/test/java/se/su/dsv/scipro/grading/TemplatePanelTest.java index b9c5b2ab46..997f30c08e 100644 --- a/view/src/test/java/se/su/dsv/scipro/grading/TemplatePanelTest.java +++ b/view/src/test/java/se/su/dsv/scipro/grading/TemplatePanelTest.java @@ -81,9 +81,9 @@ public class TemplatePanelTest extends SciProTest { project.setStartDate(LocalDate.of(2017, Month.MAY, 29)); project.setCredits(credits); - Mockito.when(gradingReportTemplateService.getCurrentTemplate(project.getProjectType())).thenReturn( - new GradingReportTemplate(projectType, LocalDate.of(2024, Month.JANUARY, 1)) - ); + Mockito.lenient() + .when(gradingReportTemplateService.getCurrentTemplate(project.getProjectType())) + .thenReturn(new GradingReportTemplate(projectType, LocalDate.of(2024, Month.JANUARY, 1))); panel = tester.startComponentInPage(new TemplatePanel("id", Model.of(project))); }