/
TestPersonServiceRefactorChange2.java
129 lines (100 loc) · 4.71 KB
/
TestPersonServiceRefactorChange2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package ramo.klevis.testing.change2;
import org.hamcrest.core.IsEqual;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import ramo.klevis.testing.change1.PersonConverter;
import ramo.klevis.testing.entity.PersonDbo;
import ramo.klevis.testing.exception.PersonNotExistException;
import ramo.klevis.testing.exception.PersonRequiredFieldsMissingException;
import ramo.klevis.testing.model.Address;
import ramo.klevis.testing.model.Person;
import ramo.klevis.testing.repository.IPersonDao;
import java.util.ArrayList;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import static ramo.klevis.testing.TestData.createAddressModel;
import static ramo.klevis.testing.TestData.createModelPerson;
/**
* Created by klevis.ramo on 10/12/2017.
*/
public class TestPersonServiceRefactorChange2 {
@Test(expected = PersonRequiredFieldsMissingException.class)
public void testBug1345NullPointerWhenNullPerson() {
IPersonDao mockPersonRepository = mockPersonRepository();
PersonServiceChange2 personService = new PersonServiceChange2(mockPersonRepository, new PersonConverter());
personService.savePerson(null);
}
@Test
public void shouldSaveAddressedListPerEachPerson() {
Person modelPerson = createModelPerson();
ArrayList<Address> addressesModelList = new ArrayList<>();
modelPerson.setAddresses(addressesModelList);
Address addressModel = createAddressModel();
addressesModelList.add(addressModel);
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test
public void shouldSavePersonForFirstTime() {
Person modelPerson = createModelPerson();
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test(expected = PersonRequiredFieldsMissingException.class)
public void shouldNotSavePersonWhenNameIsNull() {
Person modelPerson = createModelPerson();
modelPerson.setName(null);
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test(expected = PersonRequiredFieldsMissingException.class)
public void shouldNotSavePersonWhenSurnameIsNull() {
Person modelPerson = createModelPerson();
modelPerson.setSurname(null);
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test(expected = PersonRequiredFieldsMissingException.class)
public void shouldNotSavePersonWhenBirthdateIsNull() {
Person modelPerson = createModelPerson();
modelPerson.setBirthDate(null);
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test(expected = PersonRequiredFieldsMissingException.class)
public void shouldNotSavePersonWhenSocialNumberIsNull() {
Person modelPerson = createModelPerson();
modelPerson.setSocialSecurityNumber(null);
assertPersonWasSavedWhenServiceCalled(modelPerson);
}
@Test(expected = PersonNotExistException.class)
public void shouldFailToUpdatePersonWhenNotExisting() {
Person modelPerson = createModelPerson();
callPersonUpdateService(modelPerson, false);
}
@Test
public void shouldUpdatePersonWhenExisting() {
Person modelPerson = createModelPerson();
callPersonUpdateService(modelPerson, true);
}
private void assertPersonWasSavedWhenServiceCalled(Person modelPerson) {
IPersonDao mockPersonRepository = mockPersonRepository();
PersonServiceRefactorChange2 personService = new PersonServiceRefactorChange2(mockPersonRepository, new PersonConverterChangeRefactor2());
Assert.assertThat(personService.savePerson(modelPerson), IsEqual.equalTo(modelPerson));
}
private IPersonDao mockPersonRepository() {
IPersonDao mockPersonRepository = Mockito.mock(IPersonDao.class);
when(mockPersonRepository.save((PersonDbo) any())).thenAnswer(new Answer<PersonDbo>() {
@Override
public PersonDbo answer(InvocationOnMock invocationOnMock) throws Throwable {
PersonDbo o = (PersonDbo) invocationOnMock.getArguments()[0];
return o;
}
});
return mockPersonRepository;
}
private void callPersonUpdateService(Person modelPerson, boolean existSocialSecurityNumber) {
IPersonDao mockPersonRepository = mockPersonRepository();
PersonServiceRefactorChange2 personService = new PersonServiceRefactorChange2(mockPersonRepository, new PersonConverterChangeRefactor2());
when(mockPersonRepository.exists(modelPerson.getSocialSecurityNumber())).thenReturn(existSocialSecurityNumber);
Assert.assertThat(personService.updatePerson(modelPerson), IsEqual.equalTo(modelPerson));
}
}