articles-backend-app

Форк
0
95 строк · 3.9 Кб
1
package by.andd3dfx.services;
2

3
import static org.hamcrest.CoreMatchers.is;
4
import static org.hamcrest.MatcherAssert.assertThat;
5
import static org.mockito.Mockito.verify;
6
import static org.mockito.Mockito.when;
7

8
import by.andd3dfx.dto.LoggingSearchCriteria;
9
import by.andd3dfx.dto.MethodCallRecord;
10
import by.andd3dfx.helper.JsonHelper;
11
import by.andd3dfx.persistence.dao.LoggingRepository;
12
import by.andd3dfx.persistence.entities.LoggedRecord;
13
import by.andd3dfx.services.impl.LoggingService;
14
import java.time.LocalDateTime;
15
import java.util.Arrays;
16
import java.util.HashMap;
17
import java.util.List;
18
import java.util.Map;
19
import org.junit.jupiter.api.Test;
20
import org.junit.jupiter.api.extension.ExtendWith;
21
import org.mockito.ArgumentCaptor;
22
import org.mockito.Captor;
23
import org.mockito.InjectMocks;
24
import org.mockito.Mock;
25
import org.mockito.junit.jupiter.MockitoExtension;
26
import org.springframework.messaging.simp.SimpMessagingTemplate;
27

28
@ExtendWith(MockitoExtension.class)
29
class LoggingServiceTest {
30

31
    @Mock
32
    LoggingRepository loggingRepository;
33
    @Mock
34
    SimpMessagingTemplate messagingTemplate;
35
    @Mock
36
    JsonHelper jsonHelper;
37
    @Captor
38
    ArgumentCaptor<LoggedRecord> captor;
39

40
    @InjectMocks
41
    LoggingService loggingService;
42

43
    @Test
44
    void getLoggedRecords() {
45
        final LoggingSearchCriteria criteria = new LoggingSearchCriteria();
46
        LoggedRecord loggedRecord = new LoggedRecord();
47
        loggedRecord.setMethodName("method-name");
48
        loggedRecord.setTimestamp(LocalDateTime.now());
49
        loggedRecord.setIsSucceed(true);
50
        loggedRecord.setResult("some-result");
51
        final List<LoggedRecord> entities = Arrays.asList(loggedRecord);
52
        when(loggingRepository.findByCriteria(criteria)).thenReturn(entities);
53
        final Map<String, Object> ARGS = new HashMap<>();
54
        when(jsonHelper.jsonStringToMap(loggedRecord.getArguments())).thenReturn(ARGS);
55
        final Object RESULT = new Object();
56
        when(jsonHelper.jsonStringToDefiniteType(loggedRecord.getResult(), loggedRecord.getResultType())).thenReturn(RESULT);
57

58
        List<MethodCallRecord> result = loggingService.getLoggedRecords(criteria);
59

60
        assertThat(result.size(), is(1));
61
        assertThat(result.get(0).getName(), is(loggedRecord.getMethodName()));
62
        assertThat(result.get(0).getArgs(), is(ARGS));
63
        assertThat(result.get(0).getResult(), is(RESULT));
64
        assertThat(result.get(0).getTimestamp(), is(loggedRecord.getTimestamp()));
65
        assertThat(result.get(0).getIsSucceed(), is(loggedRecord.getIsSucceed()));
66
    }
67

68
    @Test
69
    void addLoggingRecord() {
70
        MethodCallRecord methodCallRecord = buildMethodCallRecord();
71
        when(jsonHelper.objectToString(methodCallRecord.getArgs())).thenReturn("STRING1");
72
        when(jsonHelper.objectToString(methodCallRecord.getResult())).thenReturn("STRING2");
73

74
        loggingService.addLoggingRecord(methodCallRecord);
75

76
        verify(loggingRepository).save(captor.capture());
77
        LoggedRecord loggedRecord = captor.getValue();
78
        assertThat(loggedRecord.getMethodName(), is("some-name"));
79
        assertThat(loggedRecord.getArguments(), is("STRING1"));
80
        assertThat(loggedRecord.getResult(), is("STRING2"));
81
        assertThat(loggedRecord.getResultType(), is(String.class.getName()));
82
        assertThat(loggedRecord.getTimestamp(), is(methodCallRecord.getTimestamp()));
83
        assertThat(loggedRecord.getIsSucceed(), is(true));
84
    }
85

86
    private MethodCallRecord buildMethodCallRecord() {
87
        MethodCallRecord methodCallRecord = new MethodCallRecord();
88
        methodCallRecord.setName("some-name");
89
        methodCallRecord.setArgs(new HashMap<>());
90
        methodCallRecord.setResult("Some alien string");
91
        methodCallRecord.setTimestamp(LocalDateTime.now());
92
        methodCallRecord.setIsSucceed(true);
93
        return methodCallRecord;
94
    }
95
}
96

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

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

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

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