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

Commit 8237787

Browse files
author
FredrikSchäferVitagroup
committed
SORMAS-Foundation#3195 Added ExternalJournalService Spy
1 parent d9a8e5e commit 8237787

4 files changed

Lines changed: 41 additions & 24 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalFacadeEjb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public PatientDiaryRegisterResult registerPatientDiaryPerson(PersonDto person) {
3737

3838
@Override
3939
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person) {
40-
return externalJournalService.validatePatientDiaryPerson(person, false);
40+
return externalJournalService.validatePatientDiaryPerson(person);
4141
}
4242

4343
}

sormas-backend/src/main/java/de/symeda/sormas/backend/externaljournal/ExternalJournalService.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -319,13 +319,9 @@ private Invocation.Builder getExternalDataPersonInvocationBuilder(String personU
319319
*
320320
* @param person
321321
* the person to validate
322-
* @param calledForTest
323-
* defines if method makes a call to a patient diary to check for availability of phone and mail addresses.
324-
* In tests, this call is not made.
325-
* This boolean should be false unless it's called from tests.
326322
* @return the result of the validation
327323
*/
328-
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person, boolean calledForTest) {
324+
public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person) {
329325
String email = person.getEmailAddress();
330326
String phone = person.getPhone();
331327
boolean validEmail = true;
@@ -336,9 +332,7 @@ public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person,
336332
if (StringUtils.isNotEmpty(email)) {
337333
EmailValidator validator = EmailValidator.getInstance();
338334
validEmail = validator.isValid(email);
339-
if (!calledForTest) {
340-
emailAvailable = isEmailAvailable(person.getEmailAddress());
341-
}
335+
emailAvailable = isEmailAvailable(person.getEmailAddress());
342336
}
343337
if (StringUtils.isNotEmpty(phone)) {
344338
validPhone = false;
@@ -347,9 +341,7 @@ public PatientDiaryPersonValidation validatePatientDiaryPerson(PersonDto person,
347341
Phonenumber.PhoneNumber germanNumberProto = phoneUtil.parse(phone, "DE");
348342
validPhone = phoneUtil.isValidNumber(germanNumberProto);
349343
String internationalPhone = phoneUtil.format(germanNumberProto, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
350-
if (!calledForTest) {
351-
phoneAvailable = isPhoneAvailable(internationalPhone);
352-
}
344+
phoneAvailable = isPhoneAvailable(internationalPhone);
353345
} catch (NumberParseException e) {
354346
logger.warn("NumberParseException was thrown: " + e.toString());
355347
}

sormas-backend/src/main/java/de/symeda/sormas/backend/person/PersonFacadeEjb.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ public PersonDto savePerson(PersonDto source) throws ValidationRuntimeException
320320
private void handleExternalJournalPerson(PersonDto existingPerson, PersonDto updatedPerson) {
321321
SymptomJournalStatus status = existingPerson.getSymptomJournalStatus();
322322
if (SymptomJournalStatus.REGISTERED.equals(status) || SymptomJournalStatus.ACCEPTED.equals(status)) {
323-
PatientDiaryPersonValidation validationResult = externalJournalService.validatePatientDiaryPerson(updatedPerson, false);
323+
PatientDiaryPersonValidation validationResult = externalJournalService.validatePatientDiaryPerson(updatedPerson);
324324
if (!validationResult.isValid()) {
325325
throw new ValidationRuntimeException(validationResult.getMessage());
326326
}

sormas-backend/src/test/java/de/symeda/sormas/backend/externaljournal/ExternalJournalServiceTest.java

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,48 @@
11
package de.symeda.sormas.backend.externaljournal;
22

3+
import de.symeda.sormas.api.externaljournal.PatientDiaryPersonQueryResponse;
34
import de.symeda.sormas.api.person.PersonDto;
45

56
import de.symeda.sormas.api.person.Sex;
67
import de.symeda.sormas.api.person.SymptomJournalStatus;
78
import de.symeda.sormas.api.utils.DataHelper;
89
import de.symeda.sormas.backend.AbstractBeanTest;
910

11+
import org.junit.Before;
1012
import org.junit.Test;
13+
import org.mockito.MockitoAnnotations;
14+
import org.mockito.Spy;
1115

1216
import java.lang.reflect.InvocationTargetException;
1317
import java.lang.reflect.Method;
1418
import java.util.HashMap;
1519
import java.util.Map;
20+
import java.util.Optional;
1621

1722
import static org.junit.Assert.assertFalse;
1823
import static org.junit.Assert.assertTrue;
24+
import static org.mockito.Mockito.doReturn;
1925

2026
public class ExternalJournalServiceTest extends AbstractBeanTest {
2127

28+
@Spy
29+
private ExternalJournalService externalJournalService;
30+
31+
@Before
32+
public void setUp() {
33+
MockitoAnnotations.initMocks(this);
34+
PatientDiaryPersonQueryResponse patientDiaryPersonQueryResponse = new PatientDiaryPersonQueryResponse();
35+
patientDiaryPersonQueryResponse.setCount(0);
36+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService).queryPatientDiary("Email", "[email protected]");
37+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService).queryPatientDiary("Email", "test@test");
38+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService).queryPatientDiary("Email", "[email protected]");
39+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService)
40+
.queryPatientDiary("Mobile phone", "+49 621 1218490");
41+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService)
42+
.queryPatientDiary("Mobile phone", "+49 621 1218491");
43+
doReturn(Optional.ofNullable(patientDiaryPersonQueryResponse)).when(externalJournalService).queryPatientDiary("Mobile phone", "0");;
44+
}
45+
2246
@Test
2347
/*
2448
* If you need to change this test to make it pass, you probably changed the behaviour of the ExternalVisitsResource.
@@ -27,10 +51,11 @@ public class ExternalJournalServiceTest extends AbstractBeanTest {
2751
* https://gitter.im/SORMAS-Project!
2852
*/
2953
public void givenValidEmailIsExportable() {
30-
54+
PatientDiaryPersonQueryResponse response = new PatientDiaryPersonQueryResponse();
55+
response.setCount(0);
3156
PersonDto person = new PersonDto();
3257
person.setEmailAddress("[email protected]");
33-
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
58+
assertTrue(externalJournalService.validatePatientDiaryPerson(person).isValid());
3459
}
3560

3661
@Test
@@ -43,9 +68,9 @@ public void givenValidEmailIsExportable() {
4368
public void givenInvalidEmailIsNotExportable() {
4469
PersonDto person = new PersonDto();
4570
person.setEmailAddress("test@test");
46-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
71+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
4772
person.setPhone("+496211218490");
48-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
73+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
4974
}
5075

5176
@Test
@@ -59,7 +84,7 @@ public void givenValidPhoneIsExportable() {
5984

6085
PersonDto person = new PersonDto();
6186
person.setPhone("+496211218490");
62-
assertTrue(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
87+
assertTrue(externalJournalService.validatePatientDiaryPerson(person).isValid());
6388
}
6489

6590
@Test
@@ -73,9 +98,9 @@ public void givenInvalidPhoneIsNotExportable() {
7398

7499
PersonDto person = new PersonDto();
75100
person.setPhone("0");
76-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
101+
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person).isValid());
77102
person.setEmailAddress("[email protected]");
78-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
103+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
79104
}
80105

81106
@Test
@@ -91,7 +116,7 @@ public void givenNeitherEmailNorPhoneIsNotExportable() {
91116
person.setBirthdateYYYY(2000);
92117
person.setBirthdateMM(6);
93118
person.setBirthdateDD(1);
94-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
119+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
95120
}
96121

97122
@Test
@@ -106,12 +131,12 @@ public void givenIncompleteBirthdateIsNotExportable() {
106131
person.setEmailAddress("[email protected]");
107132
person.setPhone("+496211218490");
108133
person.setBirthdateYYYY(2000);
109-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
134+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
110135
person.setBirthdateMM(6);
111-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
136+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
112137
person.setBirthdateYYYY(null);
113138
person.setBirthdateDD(1);
114-
assertFalse(getExternalJournalService().validatePatientDiaryPerson(person, true).isValid());
139+
assertFalse(externalJournalService.validatePatientDiaryPerson(person).isValid());
115140
}
116141

117142
@Test

0 commit comments

Comments
 (0)