use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.
the class ArendeServiceTest method testFilterArendeFiltersOutNonVerifiedSekretessPatients.
@Test
@SuppressWarnings("unchecked")
public void testFilterArendeFiltersOutNonVerifiedSekretessPatients() {
WebCertUser webCertUser = createUser();
Map<Personnummer, SekretessStatus> map = mock(Map.class);
when(map.get(any(Personnummer.class))).thenReturn(SekretessStatus.UNDEFINED);
doReturn(map).when(patientDetailsResolver).getSekretessStatusForList(anyList());
when(webcertUserService.getUser()).thenReturn(webCertUser);
when(webcertUserService.isAuthorizedForUnit(any(), eq(true))).thenReturn(true);
List<Arende> queryResults = new ArrayList<>();
queryResults.add(buildArende(UUID.randomUUID().toString(), LocalDateTime.now(), null));
queryResults.add(buildArende(UUID.randomUUID().toString(), LocalDateTime.now().minusDays(1), null));
when(arendeRepository.filterArende(any(Filter.class))).thenReturn(queryResults);
QueryFragaSvarResponse fsResponse = new QueryFragaSvarResponse();
fsResponse.setResults(new ArrayList<>());
fsResponse.setTotalCount(0);
when(fragaSvarService.filterFragaSvar(any(Filter.class))).thenReturn(fsResponse);
QueryFragaSvarParameter params = new QueryFragaSvarParameter();
params.setEnhetId(webCertUser.getValdVardenhet().getId());
QueryFragaSvarResponse response = service.filterArende(params);
verify(patientDetailsResolver, times(1)).getSekretessStatusForList(anyList());
verify(webcertUserService).isAuthorizedForUnit(anyString(), eq(true));
verify(arendeRepository).filterArende(any(Filter.class));
verify(fragaSvarService).filterFragaSvar(any(Filter.class));
assertEquals(0, response.getResults().size());
}
use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.
the class ArendeServiceTest method testGetLatestMeddelandeIdForCurrentCareUnit.
@Test
public void testGetLatestMeddelandeIdForCurrentCareUnit() {
Arende kompl = buildArende(MEDDELANDE_ID, ENHET_ID);
kompl.setAmne(ArendeAmne.KOMPLT);
List<Arende> arendeList = Collections.singletonList(kompl);
when(webcertUserService.getUser()).thenReturn(createUser());
when(arendeRepository.findByIntygsId(eq(INTYG_ID))).thenReturn(arendeList);
assertEquals(MEDDELANDE_ID, service.getLatestMeddelandeIdForCurrentCareUnit(INTYG_ID));
}
use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.
the class ArendeServiceTest method testProcessIncomingMessageSendsNotificationForAnswerRecieved.
@Test
public void testProcessIncomingMessageSendsNotificationForAnswerRecieved() throws WebCertServiceException {
final String frageid = "frageid";
Arende fragearende = new Arende();
Arende svararende = new Arende();
svararende.setIntygsId(INTYG_ID);
svararende.setSvarPaId(frageid);
Utkast utkast = buildUtkast();
when(utkastRepository.findOne(INTYG_ID)).thenReturn(utkast);
when(arendeRepository.findOneByMeddelandeId(eq(frageid))).thenReturn(fragearende);
Arende res = service.processIncomingMessage(svararende);
assertNotNull(res);
assertEquals(INTYG_ID, res.getIntygsId());
verify(arendeRepository).findOneByMeddelandeId(eq(frageid));
verify(arendeRepository, times(2)).save(any(Arende.class));
verify(notificationService).sendNotificationForAnswerRecieved(any(Arende.class));
verifyZeroInteractions(arendeDraftService);
}
use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.
the class ArendeServiceTest method answerTest.
@Test
public void answerTest() throws CertificateSenderException {
final String svarPaMeddelandeId = "svarPaMeddelandeId";
Arende fraga = buildArende(svarPaMeddelandeId, null);
fraga.setAmne(ArendeAmne.OVRIGT);
fraga.setSenasteHandelse(LocalDateTime.now());
fraga.setStatus(Status.PENDING_INTERNAL_ACTION);
fraga.setPatientPersonId(PERSON_ID);
when(arendeRepository.findOneByMeddelandeId(svarPaMeddelandeId)).thenReturn(fraga);
when(webcertUserService.isAuthorizedForUnit(isNull(), anyBoolean())).thenReturn(true);
when(webcertUserService.getUser()).thenReturn(new WebCertUser());
ArendeConversationView result = service.answer(svarPaMeddelandeId, "svarstext");
assertNotNull(result.getFraga());
assertNotNull(result.getSvar());
assertEquals(FIXED_TIME_INSTANT, result.getSenasteHandelse().toInstant(ZoneId.systemDefault().getRules().getOffset(FIXED_TIME_INSTANT)));
verify(webcertUserService).isAuthorizedForUnit(isNull(), anyBoolean());
verify(arendeRepository, times(2)).save(any(Arende.class));
verify(monitoringLog).logArendeCreated(anyString(), anyString(), isNull(), any(ArendeAmne.class), anyBoolean());
verify(certificateSenderService).sendMessageToRecipient(anyString(), anyString());
verify(notificationService).sendNotificationForQAs(INTYG_ID, NotificationEvent.NEW_ANSWER_FROM_CARE);
verify(arendeDraftService).delete(INTYG_ID, svarPaMeddelandeId);
}
use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.
the class ArendeServiceTest method testCloseAllNonClosedQuestions.
@Test
public void testCloseAllNonClosedQuestions() {
Arende arendeFromWc = buildArende(UUID.randomUUID().toString(), INTYG_ID, LocalDateTime.now(), LocalDateTime.now(), ENHET_ID);
arendeFromWc.setSkickatAv(FrageStallare.WEBCERT.getKod());
arendeFromWc.setStatus(Status.ANSWERED);
Arende arendeFromFk = buildArende(UUID.randomUUID().toString(), INTYG_ID, LocalDateTime.now(), LocalDateTime.now(), ENHET_ID);
arendeFromFk.setSkickatAv(FrageStallare.FORSAKRINGSKASSAN.getKod());
Arende arendeAlreadyClosed = buildArende(UUID.randomUUID().toString(), INTYG_ID, LocalDateTime.now(), LocalDateTime.now(), ENHET_ID);
arendeAlreadyClosed.setStatus(Status.CLOSED);
// svar and paminnelse will be ignored
Arende arendeSvar = buildArende(UUID.randomUUID().toString(), INTYG_ID, LocalDateTime.now(), LocalDateTime.now(), ENHET_ID);
arendeSvar.setSvarPaId(arendeFromWc.getMeddelandeId());
Arende arendePaminnelse = buildArende(UUID.randomUUID().toString(), INTYG_ID, LocalDateTime.now(), LocalDateTime.now(), ENHET_ID);
arendePaminnelse.setAmne(ArendeAmne.PAMINN);
arendePaminnelse.setPaminnelseMeddelandeId(arendeFromFk.getMeddelandeId());
when(arendeRepository.findByIntygsId(INTYG_ID)).thenReturn(Arrays.asList(arendeFromWc, arendeFromFk, arendeAlreadyClosed, arendeSvar, arendePaminnelse));
service.closeAllNonClosed(INTYG_ID);
verify(arendeRepository).findByIntygsId(INTYG_ID);
verify(notificationService).sendNotificationForQAs(INTYG_ID, NotificationEvent.QUESTION_FROM_RECIPIENT_HANDLED);
verify(notificationService).sendNotificationForQAs(INTYG_ID, NotificationEvent.QUESTION_FROM_CARE_WITH_ANSWER_HANDLED);
ArgumentCaptor<Arende> arendeCaptor = ArgumentCaptor.forClass(Arende.class);
verify(arendeRepository, times(2)).save(arendeCaptor.capture());
assertEquals(Status.CLOSED, arendeCaptor.getAllValues().get(0).getStatus());
assertEquals(Status.CLOSED, arendeCaptor.getAllValues().get(1).getStatus());
verify(fragaSvarService).closeAllNonClosedQuestions(INTYG_ID);
}
Aggregations