articles-backend-app

Форк
0
/
LoggingRepositoryCustomImplTest.java 
150 строк · 5.5 Кб
1
package by.andd3dfx.persistence.dao;
2

3
import static org.hamcrest.CoreMatchers.is;
4
import static org.hamcrest.MatcherAssert.assertThat;
5

6
import by.andd3dfx.dto.LoggingSearchCriteria;
7
import by.andd3dfx.persistence.entities.LoggedRecord;
8
import java.time.LocalDateTime;
9
import java.util.Arrays;
10
import java.util.List;
11
import org.junit.jupiter.api.AfterEach;
12
import org.junit.jupiter.api.BeforeEach;
13
import org.junit.jupiter.api.Test;
14
import org.junit.jupiter.api.extension.ExtendWith;
15
import org.mockito.junit.jupiter.MockitoExtension;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
18

19
@ExtendWith(MockitoExtension.class)
20
@DataJpaTest
21
class LoggingRepositoryCustomImplTest {
22

23
    @Autowired
24
    private LoggingRepository repository;
25

26
    private LoggedRecord entity;
27
    private LoggedRecord entity2;
28
    private LoggedRecord entity3;
29

30
    @BeforeEach
31
    public void setup() {
32
        entity = buildLoggedRecord("M1", "Args1", "res1", LocalDateTime.parse("2010-12-03T10:15:30"));
33
        entity2 = buildLoggedRecord("M2", "Args2", 34, LocalDateTime.parse("2011-12-03T10:15:30"));
34
        entity3 = buildLoggedRecord("M3", "Args3", "res3", LocalDateTime.parse("2012-12-03T10:15:30"));
35
        repository.saveAll(Arrays.asList(entity, entity2, entity3));
36
    }
37

38
    @AfterEach
39
    public void tearDown() {
40
        repository.deleteAll();
41
    }
42

43
    @Test
44
    public void findByCriteria() {
45
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
46

47
        List<LoggedRecord> result = repository.findByCriteria(criteria);
48

49
        assertThat("Wrong records amount", result.size(), is(3));
50
        assertThat("Wrong records[0]", result.get(0), is(entity3));
51
        assertThat("Wrong records[1]", result.get(1), is(entity2));
52
        assertThat("Wrong records[2]", result.get(2), is(entity));
53
    }
54

55
    @Test
56
    public void findByCriteriaWithId() {
57
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
58
        criteria.setIdCap(entity3.getId());
59

60
        List<LoggedRecord> result = repository.findByCriteria(criteria);
61

62
        assertThat("Wrong records amount", result.size(), is(2));
63
        assertThat("Wrong records[0]", result.get(0), is(entity2));
64
        assertThat("Wrong records[1]", result.get(1), is(entity));
65
    }
66

67
    @Test
68
    public void findByCriteriaWithPageSize() {
69
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
70
        criteria.setPageSize(2);
71

72
        List<LoggedRecord> result = repository.findByCriteria(criteria);
73

74
        assertThat("Wrong records amount", result.size(), is(2));
75
        assertThat("Wrong records[0]", result.get(0), is(entity3));
76
        assertThat("Wrong records[1]", result.get(1), is(entity2));
77
    }
78

79
    @Test
80
    public void findByCriteriaWithIdNPageSize() {
81
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
82
        criteria.setIdCap(entity2.getId());
83
        criteria.setPageSize(2);
84

85
        List<LoggedRecord> result = repository.findByCriteria(criteria);
86

87
        assertThat("Wrong records amount", result.size(), is(1));
88
        assertThat("Wrong records[0]", result.get(0), is(entity));
89
    }
90

91
    @Test
92
    public void findByCriteriaWithTimestamp() {
93
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
94
        criteria.setTimestamp("2011-11-03T06:57:20.852Z");
95

96
        List<LoggedRecord> result = repository.findByCriteria(criteria);
97

98
        assertThat("Wrong records amount", result.size(), is(2));
99
        assertThat("Wrong records[0]", result.get(0), is(entity3));
100
        assertThat("Wrong records[1]", result.get(1), is(entity2));
101
    }
102

103
    @Test
104
    public void findByCriteriaWithTimestampNId() {
105
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
106
        criteria.setTimestamp("2011-11-03T06:57:20.852Z");
107
        criteria.setIdCap(entity3.getId());
108

109
        List<LoggedRecord> result = repository.findByCriteria(criteria);
110

111
        assertThat("Wrong records amount", result.size(), is(1));
112
        assertThat("Wrong records[0]", result.get(0), is(entity2));
113
    }
114

115
    @Test
116
    public void findByCriteriaWithTimestampNPageSize() {
117
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
118
        criteria.setTimestamp("2011-11-03T06:57:20.852Z");
119
        criteria.setPageSize(1);
120

121
        List<LoggedRecord> result = repository.findByCriteria(criteria);
122

123
        assertThat("Wrong records amount", result.size(), is(1));
124
        assertThat("Wrong records[0]", result.get(0), is(entity3));
125
    }
126

127
    @Test
128
    public void findByCriteriaWithTimestampNPageSizeNId() {
129
        LoggingSearchCriteria criteria = new LoggingSearchCriteria();
130
        criteria.setTimestamp("2011-11-03T06:57:20.852Z");
131
        criteria.setPageSize(2);
132
        criteria.setIdCap(entity3.getId());
133

134
        List<LoggedRecord> result = repository.findByCriteria(criteria);
135

136
        assertThat("Wrong records amount", result.size(), is(1));
137
        assertThat("Wrong records[0]", result.get(0), is(entity2));
138
    }
139

140
    private LoggedRecord buildLoggedRecord(String methodName, String args, Object result, LocalDateTime parse) {
141
        LoggedRecord record = new LoggedRecord();
142
        record.setMethodName(methodName);
143
        record.setArguments(args);
144
        record.setResult(String.valueOf(result));
145
        record.setResultType(result.getClass().getName());
146
        record.setTimestamp(parse);
147
        record.setIsSucceed(true);
148
        return record;
149
    }
150
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.