Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 608f228

Browse files
author
barnabartha
committed
SORMAS-Foundation#3368 - fix validation of campaign dashboard elements sub-tabs
1 parent b5fa2b7 commit 608f228

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,7 @@ protected void validate(CampaignDto campaignDto) {
206206
final List<CampaignDashboardElement> campaignDashboardElements = campaignDto.getCampaignDashboardElements();
207207
if (campaignDashboardElements != null) {
208208

209-
final Map<String, Boolean> oneSubTabIsNotNullOrEmptyMap = new HashMap<>();
210-
campaignDashboardElements.stream().forEach(cde -> {
211-
if (!oneSubTabIsNotNullOrEmptyMap.containsKey(cde.getTabId())){
212-
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), false);
213-
}
214-
});
209+
final Map<String, Boolean> oneSubTabIsNotNullOrEmptyMap = new HashMap<>();
215210

216211
for (CampaignDashboardElement cde : campaignDashboardElements) {
217212
final String diagramId = cde.getDiagramId();
@@ -233,15 +228,23 @@ protected void validate(CampaignDto campaignDto) {
233228
}
234229

235230
if (cde.getSubTabId() == null || cde.getSubTabId().isEmpty()) {
236-
if (oneSubTabIsNotNullOrEmptyMap.get(cde.getTabId())) {
231+
if (oneSubTabIsNotNullOrEmptyMap.containsKey(cde.getTabId()) && oneSubTabIsNotNullOrEmptyMap.get(cde.getTabId())) {
237232
throw new ValidationRuntimeException(
238233
I18nProperties.getValidationError(
239234
Validations.campaignDashboardChartValueNull,
240235
CampaignDashboardElement.SUB_TAB_ID,
241236
campaignDto.getName()));
242237
}
238+
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), false);
243239
} else {
244-
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), true);
240+
if (oneSubTabIsNotNullOrEmptyMap.containsKey(cde.getTabId()) && !oneSubTabIsNotNullOrEmptyMap.get(cde.getTabId())) {
241+
throw new ValidationRuntimeException(
242+
I18nProperties.getValidationError(
243+
Validations.campaignDashboardChartValueNull,
244+
CampaignDashboardElement.SUB_TAB_ID,
245+
campaignDto.getName()));
246+
}
247+
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), true);
245248
}
246249

247250
if (cde.getOrder() == null) {

sormas-backend/src/test/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjbTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public void testCampaignDashboardElementsValidation() {
4747
final CampaignDto campaign = creator.createCampaign(user);
4848
final ArrayList<CampaignDashboardElement> campaignDashboardElements = new ArrayList<>();
4949
campaignDashboardElements.add(new CampaignDashboardElement("diagram1", "tab1", null, 1, 50, 50));
50-
campaignDashboardElements.add(new CampaignDashboardElement("diagram2", "tab1", null, 1, 50, 50));
51-
campaignDashboardElements.add(new CampaignDashboardElement("diagram3", "tab2", null, 1, 50, 50));
50+
campaignDashboardElements.add(new CampaignDashboardElement("diagram2", "tab1", null, 2, 50, 50));
51+
campaignDashboardElements.add(new CampaignDashboardElement("diagram3", "tab2", null, 3, 50, 50));
5252
campaign.setCampaignDashboardElements(campaignDashboardElements);
5353

5454
getCampaignDiagramDefinitionFacade().save(creator.createCampaignDiagramDefinition("diagram1", "Diagram one"));
@@ -64,6 +64,7 @@ public void testCampaignDashboardElementsValidation() {
6464
campaign.getCampaignDashboardElements().get(0).setSubTabId("subTab1");
6565
try {
6666
((CampaignFacadeEjb.CampaignFacadeEjbLocal) getCampaignFacade()).validate(campaign);
67+
Assert.fail("Campaign dashboard elements subTabId is missing. Validation should catch this!");
6768
} catch (ValidationRuntimeException e) {
6869
Assert.assertEquals("Campaign dashboard elements subTabId of campaign CampaignName are missing!", e.getMessage());
6970
}
@@ -72,6 +73,7 @@ public void testCampaignDashboardElementsValidation() {
7273
campaign.getCampaignDashboardElements().get(1).setSubTabId("subTab2");
7374
try {
7475
((CampaignFacadeEjb.CampaignFacadeEjbLocal) getCampaignFacade()).validate(campaign);
76+
Assert.fail("Campaign dashboard elements subTabId is missing. Validation should catch this!");
7577
} catch (ValidationRuntimeException e) {
7678
Assert.assertEquals("Campaign dashboard elements subTabId of campaign CampaignName are missing!", e.getMessage());
7779
}
@@ -92,9 +94,11 @@ public void testCampaignDashboardElementsValidation() {
9294
Assert.fail(e.getMessage());
9395
}
9496

95-
campaign.getCampaignDashboardElements().get(0).setDiagramId("nonExistingDiagramId");
97+
final String nonExistingDiagramId = "nonExistingDiagramId";
98+
campaign.getCampaignDashboardElements().get(0).setDiagramId(nonExistingDiagramId);
9699
try {
97100
((CampaignFacadeEjb.CampaignFacadeEjbLocal) getCampaignFacade()).validate(campaign);
101+
Assert.fail("Diagram " + nonExistingDiagramId + " does not exist. Validation should catch this!");
98102
} catch (ValidationRuntimeException e) {
99103
Assert.assertEquals("Diagram nonExistingDiagramId from campaign CampaignName does not exist!", e.getMessage());
100104
}

0 commit comments

Comments
 (0)