diff --git a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDService.java b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDService.java index 0e2ae158..6b6d25b4 100644 --- a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDService.java +++ b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDService.java @@ -29,7 +29,7 @@ public interface GeneralOPDService { String saveNurseData(JsonObject requestOBJ, String Authorization) throws Exception; - + void deleteVisitDetails(JsonObject requestOBJ) throws Exception; Map saveBenVisitDetails(JsonObject visitDetailsOBJ, CommonUtilityClass nurseUtilityClass) diff --git a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java index 7c40a69d..def12491 100644 --- a/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java +++ b/src/main/java/com/iemr/hwc/service/generalOPD/GeneralOPDServiceImpl.java @@ -177,7 +177,7 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws examtnSaveSuccessFlag = saveBenExaminationDetails(requestOBJ.getAsJsonObject("examinationDetails"), benVisitID, benVisitCode); } else { - throw new RuntimeException("Error occurred while creating beneficiary visit"); + throw new IEMRException("Error occurred while creating beneficiary visit"); } if ((null != historySaveSuccessFlag && historySaveSuccessFlag > 0) @@ -207,10 +207,10 @@ public String saveNurseData(JsonObject requestOBJ, String Authorization) throws } } else { - throw new RuntimeException("Error occurred while saving data"); + throw new IEMRException("Error occurred while saving data"); } } else { - throw new Exception("Invalid input"); + throw new IEMRException("Invalid input"); } Map responseMap = new HashMap(); if (benVisitCode != null) { @@ -993,7 +993,7 @@ public Long saveDoctorData(JsonObject requestOBJ, String Authorization) throws E if (i > 0) saveSuccessFlag = investigationSuccessFlag; else - throw new RuntimeException("Error occurred while saving data. Beneficiary status update failed"); + throw new IEMRException("Error occurred while saving data. Beneficiary status update failed"); if (i > 0 && tcRequestOBJ != null && tcRequestOBJ.getWalkIn() == false) { int k = sMSGatewayServiceImpl.smsSenderGateway("schedule", commonUtilityClass.getBeneficiaryRegID(), @@ -1005,10 +1005,10 @@ public Long saveDoctorData(JsonObject requestOBJ, String Authorization) throws E } } else { - throw new RuntimeException(); + throw new IEMRException("Error occurred while saving doctor data"); } } else { - // request OBJ is null. + throw new IEMRException("Invalid input"); } return saveSuccessFlag; } @@ -1643,7 +1643,7 @@ public Long updateGeneralOPDDoctorData(JsonObject requestOBJ, String Authorizati if (i > 0) updateSuccessFlag = investigationSuccessFlag; else - throw new RuntimeException("Error occurred while saving data. Beneficiary status update failed"); + throw new IEMRException("Error occurred while updating data. Beneficiary status update failed"); if (i > 0 && tcRequestOBJ != null && tcRequestOBJ.getWalkIn() == false) { int k = sMSGatewayServiceImpl.smsSenderGateway("schedule", commonUtilityClass.getBeneficiaryRegID(), @@ -1655,10 +1655,10 @@ public Long updateGeneralOPDDoctorData(JsonObject requestOBJ, String Authorizati } } else { - throw new RuntimeException(); + throw new IEMRException("Error occurred while updating doctor data"); } } else { - // request OBJ is null. + throw new IEMRException("Invalid input"); } return updateSuccessFlag; } diff --git a/src/test/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImplTest.java b/src/test/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImplTest.java new file mode 100644 index 00000000..2e0a487f --- /dev/null +++ b/src/test/java/com/iemr/hwc/service/login/IemrMmuLoginServiceImplTest.java @@ -0,0 +1,196 @@ +/* +* AMRIT – Accessible Medical Records via Integrated Technology +* Integrated EHR (Electronic Health Records) Solution +* +* Copyright (C) "Piramal Swasthya Management and Research Institute" +* +* This file is part of AMRIT. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see https://www.gnu.org/licenses/. +*/ +package com.iemr.hwc.service.login; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import com.iemr.hwc.repo.login.MasterVanRepo; +import com.iemr.hwc.repo.login.ServicePointVillageMappingRepo; +import com.iemr.hwc.repo.login.UserParkingplaceMappingRepo; +import com.iemr.hwc.repo.login.UserVanSpDetails_View_Repo; +import com.iemr.hwc.repo.login.VanServicepointMappingRepo; + +@ExtendWith(MockitoExtension.class) +class IemrMmuLoginServiceImplTest { + + @Mock + private UserParkingplaceMappingRepo userParkingplaceMappingRepo; + @Mock + private MasterVanRepo masterVanRepo; + @Mock + private VanServicepointMappingRepo vanServicepointMappingRepo; + @Mock + private ServicePointVillageMappingRepo servicePointVillageMappingRepo; + @Mock + private UserVanSpDetails_View_Repo userVanSpDetails_View_Repo; + + @InjectMocks + private IemrMmuLoginServiceImpl loginService; + + private static final Integer USER_ID = 101; + private static final Integer PROVIDER_SERVICE_MAP_ID = 202; + private static final Integer SERVICE_POINT_ID = 303; + + // -------------------- getUserServicePointVanDetails -------------------- + + @Test + void getUserServicePointVanDetails_noParkingPlace_returnsEmptyResponseMap() { + when(userParkingplaceMappingRepo.getUserParkingPlce(USER_ID)) + .thenReturn(Collections.emptyList()); + + String result = loginService.getUserServicePointVanDetails(USER_ID); + + assertNotNull(result); + assertEquals("{}", result); + } + + @Test + void getUserServicePointVanDetails_withParkingPlace_returnsMappedResponse() { + List parkingList = new ArrayList<>(); + parkingList.add(new Object[]{1, 10, "StateName", 20, "DistrictName", 30, "BlockName"}); + when(userParkingplaceMappingRepo.getUserParkingPlce(USER_ID)).thenReturn(parkingList); + + List vanList = new ArrayList<>(); + vanList.add(new Object[]{5, "VAN-001"}); + when(masterVanRepo.getUserVanDatails(anySet())).thenReturn(vanList); + + List spList = new ArrayList<>(); + spList.add(new Object[]{7, "ServicePoint1", "SESSION_TYPE"}); + when(vanServicepointMappingRepo.getuserSpSessionDetails(anySet())).thenReturn(spList); + + String result = loginService.getUserServicePointVanDetails(USER_ID); + + assertNotNull(result); + assertTrue(result.contains("userVanDetails")); + assertTrue(result.contains("userSpDetails")); + assertTrue(result.contains("parkingPlaceLocationList")); + } + + @Test + void getUserServicePointVanDetails_emptyVanList_addsEmptyVanEntry() { + List parkingList = new ArrayList<>(); + parkingList.add(new Object[]{1, 10, "StateName", 20, "DistrictName", 30, "BlockName"}); + when(userParkingplaceMappingRepo.getUserParkingPlce(USER_ID)).thenReturn(parkingList); + + when(masterVanRepo.getUserVanDatails(anySet())).thenReturn(Collections.emptyList()); + when(vanServicepointMappingRepo.getuserSpSessionDetails(anySet())).thenReturn(Collections.emptyList()); + + String result = loginService.getUserServicePointVanDetails(USER_ID); + + assertNotNull(result); + assertTrue(result.contains("userVanDetails")); + } + + // -------------------- getServicepointVillages -------------------- + + @Test + void getServicepointVillages_withVillages_returnsMappedList() { + List villageList = new ArrayList<>(); + villageList.add(new Object[]{1, "Village A"}); + when(servicePointVillageMappingRepo.getServicePointVillages(SERVICE_POINT_ID)) + .thenReturn(villageList); + + String result = loginService.getServicepointVillages(SERVICE_POINT_ID); + + assertNotNull(result); + assertTrue(result.contains("Village A")); + } + + @Test + void getServicepointVillages_noVillages_returnsEmptyJsonArray() { + when(servicePointVillageMappingRepo.getServicePointVillages(SERVICE_POINT_ID)) + .thenReturn(Collections.emptyList()); + + String result = loginService.getServicepointVillages(SERVICE_POINT_ID); + + assertEquals("[]", result); + } + + // -------------------- getUserVanSpDetails -------------------- + + @Test + void getUserVanSpDetails_withVanSpData_returnsUserVanAndLocDetails() { + ArrayList spList = new ArrayList<>(); + spList.add(new Object[]{1, 2, "VanName", (short) 1, 3, "SpName", 4, 5}); + when(userVanSpDetails_View_Repo.getUserVanSpDetails_View(USER_ID, PROVIDER_SERVICE_MAP_ID)) + .thenReturn(spList); + + List parkingList = new ArrayList<>(); + parkingList.add(new Object[]{10, 20, "State", 30, "District", 40, "Block"}); + when(userParkingplaceMappingRepo.getUserParkingPlce(USER_ID)).thenReturn(parkingList); + + String result = loginService.getUserVanSpDetails(USER_ID, PROVIDER_SERVICE_MAP_ID); + + assertNotNull(result); + assertTrue(result.contains("UserVanSpDetails")); + assertTrue(result.contains("UserLocDetails")); + } + + @Test + void getUserVanSpDetails_emptyVanSpList_returnsEmptyUserVanSpDetails() { + when(userVanSpDetails_View_Repo.getUserVanSpDetails_View(USER_ID, PROVIDER_SERVICE_MAP_ID)) + .thenReturn(new ArrayList<>()); + when(userParkingplaceMappingRepo.getUserParkingPlce(USER_ID)) + .thenReturn(Collections.emptyList()); + + String result = loginService.getUserVanSpDetails(USER_ID, PROVIDER_SERVICE_MAP_ID); + + assertNotNull(result); + assertTrue(result.contains("UserVanSpDetails")); + } + + // -------------------- getUserSpokeDetails -------------------- + + @Test + void getUserSpokeDetails_withVans_returnsListIncludingAllEntry() { + ArrayList vanList = new ArrayList<>(); + vanList.add(new Object[]{1, "Spoke Van 1"}); + when(masterVanRepo.getVanMaster(PROVIDER_SERVICE_MAP_ID)).thenReturn(vanList); + + String result = loginService.getUserSpokeDetails(PROVIDER_SERVICE_MAP_ID); + + assertNotNull(result); + assertTrue(result.contains("All")); + assertTrue(result.contains("Spoke Van 1")); + } + + @Test + void getUserSpokeDetails_noVans_returnsOnlyAllEntry() { + when(masterVanRepo.getVanMaster(PROVIDER_SERVICE_MAP_ID)).thenReturn(new ArrayList<>()); + + String result = loginService.getUserSpokeDetails(PROVIDER_SERVICE_MAP_ID); + + assertNotNull(result); + assertTrue(result.contains("All")); + } +} diff --git a/src/test/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImplTest.java b/src/test/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImplTest.java new file mode 100644 index 00000000..1772dc4c --- /dev/null +++ b/src/test/java/com/iemr/hwc/service/ncdscreening/NCDScreeningServiceImplTest.java @@ -0,0 +1,248 @@ +/* +* AMRIT – Accessible Medical Records via Integrated Technology +* Integrated EHR (Electronic Health Records) Solution +* +* Copyright (C) "Piramal Swasthya Management and Research Institute" +* +* This file is part of AMRIT. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see https://www.gnu.org/licenses/. +*/ +package com.iemr.hwc.service.ncdscreening; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import com.iemr.hwc.data.ncdScreening.BreastCancerScreening; +import com.iemr.hwc.data.ncdScreening.CbacDetails; +import com.iemr.hwc.data.ncdScreening.CervicalCancerScreening; +import com.iemr.hwc.data.ncdScreening.DiabetesScreening; +import com.iemr.hwc.data.ncdScreening.HypertensionScreening; +import com.iemr.hwc.data.ncdScreening.OralCancerScreening; +import com.iemr.hwc.repo.nurse.ncdscreening.BreastCancerScreeningRepo; +import com.iemr.hwc.repo.nurse.ncdscreening.CbacDetailsRepo; +import com.iemr.hwc.repo.nurse.ncdscreening.CervicalCancerScreeningRepo; +import com.iemr.hwc.repo.nurse.ncdscreening.DiabetesScreeningRepo; +import com.iemr.hwc.repo.nurse.ncdscreening.HypertensionScreeningRepo; +import com.iemr.hwc.repo.nurse.ncdscreening.OralCancerScreeningRepo; +import com.iemr.hwc.utils.exception.IEMRException; + +@ExtendWith(MockitoExtension.class) +class NCDScreeningServiceImplTest { + + @Mock + private DiabetesScreeningRepo diabetesScreeningRepo; + @Mock + private HypertensionScreeningRepo hypertensionScreeningRepo; + @Mock + private OralCancerScreeningRepo oralCancerScreeningRepo; + @Mock + private BreastCancerScreeningRepo breastCancerScreeningRepo; + @Mock + private CervicalCancerScreeningRepo cervicalCancerScreeningRepo; + @Mock + private CbacDetailsRepo cbacDetailsRepo; + + @InjectMocks + private NCDScreeningServiceImpl ncdScreeningService; + + private DiabetesScreening diabetesScreening; + private HypertensionScreening hypertensionScreening; + private OralCancerScreening oralCancerScreening; + private BreastCancerScreening breastCancerScreening; + private CervicalCancerScreening cervicalCancerScreening; + private CbacDetails cbacDetails; + + @BeforeEach + void setUp() { + diabetesScreening = new DiabetesScreening(); + diabetesScreening.setId(1L); + + hypertensionScreening = new HypertensionScreening(); + hypertensionScreening.setId(1L); + + oralCancerScreening = new OralCancerScreening(); + oralCancerScreening.setId(1L); + + breastCancerScreening = new BreastCancerScreening(); + breastCancerScreening.setId(1L); + + cervicalCancerScreening = new CervicalCancerScreening(); + cervicalCancerScreening.setId(1L); + + cbacDetails = new CbacDetails(); + cbacDetails.setId(1L); + } + + // -------------------- saveDiabetesDetails -------------------- + + @Test + void saveDiabetesDetails_success_returnsId() throws IEMRException { + when(diabetesScreeningRepo.save(diabetesScreening)).thenReturn(diabetesScreening); + + Long result = ncdScreeningService.saveDiabetesDetails(diabetesScreening); + + assertEquals(1L, result); + verify(diabetesScreeningRepo).save(diabetesScreening); + } + + @Test + void saveDiabetesDetails_repoReturnsNull_throwsIEMRException() { + when(diabetesScreeningRepo.save(diabetesScreening)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveDiabetesDetails(diabetesScreening)); + + assertEquals("Error while saving diabetes screening data", ex.getMessage()); + } + + @Test + void saveDiabetesDetails_repoReturnsObjectWithNullId_throwsIEMRException() { + DiabetesScreening noId = new DiabetesScreening(); + when(diabetesScreeningRepo.save(noId)).thenReturn(noId); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveDiabetesDetails(noId)); + + assertEquals("Error while saving diabetes screening data", ex.getMessage()); + } + + // -------------------- saveHypertensionDetails -------------------- + + @Test + void saveHypertensionDetails_success_returnsId() throws IEMRException { + when(hypertensionScreeningRepo.save(hypertensionScreening)).thenReturn(hypertensionScreening); + + Long result = ncdScreeningService.saveHypertensionDetails(hypertensionScreening); + + assertEquals(1L, result); + verify(hypertensionScreeningRepo).save(hypertensionScreening); + } + + @Test + void saveHypertensionDetails_repoReturnsNull_throwsIEMRException() { + when(hypertensionScreeningRepo.save(hypertensionScreening)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveHypertensionDetails(hypertensionScreening)); + + assertEquals("Error while saving hypertension screening data", ex.getMessage()); + } + + @Test + void saveHypertensionDetails_repoReturnsObjectWithNullId_throwsIEMRException() { + HypertensionScreening noId = new HypertensionScreening(); + when(hypertensionScreeningRepo.save(noId)).thenReturn(noId); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveHypertensionDetails(noId)); + + assertEquals("Error while saving hypertension screening data", ex.getMessage()); + } + + // -------------------- saveOralCancerDetails -------------------- + + @Test + void saveOralCancerDetails_success_returnsId() throws IEMRException { + when(oralCancerScreeningRepo.save(oralCancerScreening)).thenReturn(oralCancerScreening); + + Long result = ncdScreeningService.saveOralCancerDetails(oralCancerScreening); + + assertEquals(1L, result); + verify(oralCancerScreeningRepo).save(oralCancerScreening); + } + + @Test + void saveOralCancerDetails_repoReturnsNull_throwsIEMRException() { + when(oralCancerScreeningRepo.save(oralCancerScreening)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveOralCancerDetails(oralCancerScreening)); + + assertEquals("Error while saving oral screening", ex.getMessage()); + } + + // -------------------- saveBreastCancerDetails -------------------- + + @Test + void saveBreastCancerDetails_success_returnsId() throws IEMRException { + when(breastCancerScreeningRepo.save(breastCancerScreening)).thenReturn(breastCancerScreening); + + Long result = ncdScreeningService.saveBreastCancerDetails(breastCancerScreening); + + assertEquals(1L, result); + verify(breastCancerScreeningRepo).save(breastCancerScreening); + } + + @Test + void saveBreastCancerDetails_repoReturnsNull_throwsIEMRException() { + when(breastCancerScreeningRepo.save(breastCancerScreening)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveBreastCancerDetails(breastCancerScreening)); + + assertEquals("Error while saving breast cancer screening", ex.getMessage()); + } + + // -------------------- saveCervicalDetails -------------------- + + @Test + void saveCervicalDetails_success_returnsId() throws IEMRException { + when(cervicalCancerScreeningRepo.save(cervicalCancerScreening)).thenReturn(cervicalCancerScreening); + + Long result = ncdScreeningService.saveCervicalDetails(cervicalCancerScreening); + + assertEquals(1L, result); + verify(cervicalCancerScreeningRepo).save(cervicalCancerScreening); + } + + @Test + void saveCervicalDetails_repoReturnsNull_throwsIEMRException() { + when(cervicalCancerScreeningRepo.save(cervicalCancerScreening)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveCervicalDetails(cervicalCancerScreening)); + + assertEquals("Error while saving cervical screening", ex.getMessage()); + } + + // -------------------- saveCbacDetails -------------------- + + @Test + void saveCbacDetails_success_returnsId() throws IEMRException { + when(cbacDetailsRepo.save(cbacDetails)).thenReturn(cbacDetails); + + Long result = ncdScreeningService.saveCbacDetails(cbacDetails); + + assertEquals(1L, result); + verify(cbacDetailsRepo).save(cbacDetails); + } + + @Test + void saveCbacDetails_repoReturnsNull_throwsIEMRException() { + when(cbacDetailsRepo.save(cbacDetails)).thenReturn(null); + + IEMRException ex = assertThrows(IEMRException.class, + () -> ncdScreeningService.saveCbacDetails(cbacDetails)); + + assertEquals("Error while saving Cbac details", ex.getMessage()); + } +}