articles-backend-app
150 строк · 5.5 Кб
1package by.andd3dfx.persistence.dao;
2
3import static org.hamcrest.CoreMatchers.is;
4import static org.hamcrest.MatcherAssert.assertThat;
5
6import by.andd3dfx.dto.LoggingSearchCriteria;
7import by.andd3dfx.persistence.entities.LoggedRecord;
8import java.time.LocalDateTime;
9import java.util.Arrays;
10import java.util.List;
11import org.junit.jupiter.api.AfterEach;
12import org.junit.jupiter.api.BeforeEach;
13import org.junit.jupiter.api.Test;
14import org.junit.jupiter.api.extension.ExtendWith;
15import org.mockito.junit.jupiter.MockitoExtension;
16import org.springframework.beans.factory.annotation.Autowired;
17import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
18
19@ExtendWith(MockitoExtension.class)
20@DataJpaTest
21class LoggingRepositoryCustomImplTest {
22
23@Autowired
24private LoggingRepository repository;
25
26private LoggedRecord entity;
27private LoggedRecord entity2;
28private LoggedRecord entity3;
29
30@BeforeEach
31public void setup() {
32entity = buildLoggedRecord("M1", "Args1", "res1", LocalDateTime.parse("2010-12-03T10:15:30"));
33entity2 = buildLoggedRecord("M2", "Args2", 34, LocalDateTime.parse("2011-12-03T10:15:30"));
34entity3 = buildLoggedRecord("M3", "Args3", "res3", LocalDateTime.parse("2012-12-03T10:15:30"));
35repository.saveAll(Arrays.asList(entity, entity2, entity3));
36}
37
38@AfterEach
39public void tearDown() {
40repository.deleteAll();
41}
42
43@Test
44public void findByCriteria() {
45LoggingSearchCriteria criteria = new LoggingSearchCriteria();
46
47List<LoggedRecord> result = repository.findByCriteria(criteria);
48
49assertThat("Wrong records amount", result.size(), is(3));
50assertThat("Wrong records[0]", result.get(0), is(entity3));
51assertThat("Wrong records[1]", result.get(1), is(entity2));
52assertThat("Wrong records[2]", result.get(2), is(entity));
53}
54
55@Test
56public void findByCriteriaWithId() {
57LoggingSearchCriteria criteria = new LoggingSearchCriteria();
58criteria.setIdCap(entity3.getId());
59
60List<LoggedRecord> result = repository.findByCriteria(criteria);
61
62assertThat("Wrong records amount", result.size(), is(2));
63assertThat("Wrong records[0]", result.get(0), is(entity2));
64assertThat("Wrong records[1]", result.get(1), is(entity));
65}
66
67@Test
68public void findByCriteriaWithPageSize() {
69LoggingSearchCriteria criteria = new LoggingSearchCriteria();
70criteria.setPageSize(2);
71
72List<LoggedRecord> result = repository.findByCriteria(criteria);
73
74assertThat("Wrong records amount", result.size(), is(2));
75assertThat("Wrong records[0]", result.get(0), is(entity3));
76assertThat("Wrong records[1]", result.get(1), is(entity2));
77}
78
79@Test
80public void findByCriteriaWithIdNPageSize() {
81LoggingSearchCriteria criteria = new LoggingSearchCriteria();
82criteria.setIdCap(entity2.getId());
83criteria.setPageSize(2);
84
85List<LoggedRecord> result = repository.findByCriteria(criteria);
86
87assertThat("Wrong records amount", result.size(), is(1));
88assertThat("Wrong records[0]", result.get(0), is(entity));
89}
90
91@Test
92public void findByCriteriaWithTimestamp() {
93LoggingSearchCriteria criteria = new LoggingSearchCriteria();
94criteria.setTimestamp("2011-11-03T06:57:20.852Z");
95
96List<LoggedRecord> result = repository.findByCriteria(criteria);
97
98assertThat("Wrong records amount", result.size(), is(2));
99assertThat("Wrong records[0]", result.get(0), is(entity3));
100assertThat("Wrong records[1]", result.get(1), is(entity2));
101}
102
103@Test
104public void findByCriteriaWithTimestampNId() {
105LoggingSearchCriteria criteria = new LoggingSearchCriteria();
106criteria.setTimestamp("2011-11-03T06:57:20.852Z");
107criteria.setIdCap(entity3.getId());
108
109List<LoggedRecord> result = repository.findByCriteria(criteria);
110
111assertThat("Wrong records amount", result.size(), is(1));
112assertThat("Wrong records[0]", result.get(0), is(entity2));
113}
114
115@Test
116public void findByCriteriaWithTimestampNPageSize() {
117LoggingSearchCriteria criteria = new LoggingSearchCriteria();
118criteria.setTimestamp("2011-11-03T06:57:20.852Z");
119criteria.setPageSize(1);
120
121List<LoggedRecord> result = repository.findByCriteria(criteria);
122
123assertThat("Wrong records amount", result.size(), is(1));
124assertThat("Wrong records[0]", result.get(0), is(entity3));
125}
126
127@Test
128public void findByCriteriaWithTimestampNPageSizeNId() {
129LoggingSearchCriteria criteria = new LoggingSearchCriteria();
130criteria.setTimestamp("2011-11-03T06:57:20.852Z");
131criteria.setPageSize(2);
132criteria.setIdCap(entity3.getId());
133
134List<LoggedRecord> result = repository.findByCriteria(criteria);
135
136assertThat("Wrong records amount", result.size(), is(1));
137assertThat("Wrong records[0]", result.get(0), is(entity2));
138}
139
140private LoggedRecord buildLoggedRecord(String methodName, String args, Object result, LocalDateTime parse) {
141LoggedRecord record = new LoggedRecord();
142record.setMethodName(methodName);
143record.setArguments(args);
144record.setResult(String.valueOf(result));
145record.setResultType(result.getClass().getName());
146record.setTimestamp(parse);
147record.setIsSucceed(true);
148return record;
149}
150}