Skip to content

Commit 60bf09d

Browse files
committed
Тесты
1 parent 125c57b commit 60bf09d

File tree

1 file changed

+237
-0
lines changed

1 file changed

+237
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
/*
2+
* This file is a part of BSL Language Server.
3+
*
4+
* Copyright (c) 2018-2022
5+
* Alexey Sosnoviy <labotamy@gmail.com>, Nikita Fedkin <nixel2007@gmail.com> and contributors
6+
*
7+
* SPDX-License-Identifier: LGPL-3.0-or-later
8+
*
9+
* BSL Language Server is free software; you can redistribute it and/or
10+
* modify it under the terms of the GNU Lesser General Public
11+
* License as published by the Free Software Foundation; either
12+
* version 3.0 of the License, or (at your option) any later version.
13+
*
14+
* BSL Language Server is distributed in the hope that it will be useful,
15+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17+
* Lesser General Public License for more details.
18+
*
19+
* You should have received a copy of the GNU Lesser General Public
20+
* License along with BSL Language Server.
21+
*/
22+
package com.github._1c_syntax.bsl.languageserver.aop.sentry;
23+
24+
import com.github._1c_syntax.bsl.languageserver.LanguageClientHolder;
25+
import com.github._1c_syntax.bsl.languageserver.configuration.LanguageServerConfiguration;
26+
import com.github._1c_syntax.bsl.languageserver.configuration.SendErrorsMode;
27+
import com.github._1c_syntax.bsl.languageserver.util.CleanupContextBeforeClassAndAfterEachTestMethod;
28+
import com.github._1c_syntax.bsl.languageserver.utils.Resources;
29+
import io.sentry.Hint;
30+
import io.sentry.SentryEvent;
31+
import org.eclipse.lsp4j.MessageActionItem;
32+
import org.eclipse.lsp4j.services.LanguageClient;
33+
import org.junit.jupiter.api.Test;
34+
import org.springframework.beans.factory.annotation.Autowired;
35+
import org.springframework.boot.test.context.SpringBootTest;
36+
37+
import java.util.concurrent.CompletableFuture;
38+
39+
import static org.assertj.core.api.Assertions.assertThat;
40+
import static org.mockito.ArgumentMatchers.any;
41+
import static org.mockito.Mockito.mock;
42+
import static org.mockito.Mockito.when;
43+
44+
@SpringBootTest
45+
@CleanupContextBeforeClassAndAfterEachTestMethod
46+
class PermissionFilterBeforeSendCallbackTest {
47+
48+
@Autowired
49+
private PermissionFilterBeforeSendCallback permissionFilter;
50+
51+
@Autowired
52+
private LanguageServerConfiguration configuration;
53+
54+
@Autowired
55+
private LanguageClientHolder languageClientHolder;
56+
57+
@Test
58+
void sendOnlyOnSendMode() {
59+
60+
// given
61+
configuration.setSendErrors(SendErrorsMode.SEND);
62+
63+
var event = new SentryEvent();
64+
65+
// when
66+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
67+
68+
// then
69+
assertThat(filteredEvent).isNotNull();
70+
71+
}
72+
73+
@Test
74+
void dontSendIfClientIsNotConnectedAndModeIsAsk() {
75+
76+
// given
77+
configuration.setSendErrors(SendErrorsMode.ASK);
78+
79+
languageClientHolder.connect(null);
80+
81+
var event = new SentryEvent();
82+
83+
// when
84+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
85+
86+
// then
87+
assertThat(filteredEvent).isNull();
88+
89+
}
90+
91+
@Test
92+
void notSendInDontSendMode() {
93+
94+
// given
95+
configuration.setSendErrors(SendErrorsMode.NEVER);
96+
97+
var event = new SentryEvent();
98+
99+
// when
100+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
101+
102+
// then
103+
assertThat(filteredEvent).isNull();
104+
105+
}
106+
107+
@Test
108+
void notSendIfUserDoesNotGivePermission() {
109+
110+
// given
111+
configuration.setSendErrors(SendErrorsMode.ASK);
112+
113+
var languageClient = mock(LanguageClient.class);
114+
var answerTitle = Resources.getResourceString(
115+
configuration.getLanguage(),
116+
PermissionFilterBeforeSendCallback.class,
117+
"answer_dontSend"
118+
);
119+
var answer = new MessageActionItem(answerTitle);
120+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
121+
122+
languageClientHolder.connect(languageClient);
123+
124+
var event = new SentryEvent();
125+
126+
// when
127+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
128+
129+
// then
130+
assertThat(filteredEvent).isNull();
131+
132+
}
133+
134+
@Test
135+
void notSendIfUserClosedQuestion() {
136+
137+
// given
138+
configuration.setSendErrors(SendErrorsMode.ASK);
139+
140+
var languageClient = mock(LanguageClient.class);
141+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(new MessageActionItem()));
142+
143+
languageClientHolder.connect(languageClient);
144+
145+
var event = new SentryEvent();
146+
147+
// when
148+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
149+
150+
// then
151+
assertThat(filteredEvent).isNull();
152+
153+
}
154+
155+
@Test
156+
void sendIfUserGavePermission() {
157+
158+
// given
159+
configuration.setSendErrors(SendErrorsMode.ASK);
160+
161+
var languageClient = mock(LanguageClient.class);
162+
var answerTitle = Resources.getResourceString(
163+
configuration.getLanguage(),
164+
PermissionFilterBeforeSendCallback.class,
165+
"answer_send"
166+
);
167+
var answer = new MessageActionItem(answerTitle);
168+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
169+
170+
languageClientHolder.connect(languageClient);
171+
172+
var event = new SentryEvent();
173+
174+
// when
175+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
176+
177+
// then
178+
assertThat(filteredEvent).isNotNull();
179+
assertThat(configuration.getSendErrors()).isEqualTo(SendErrorsMode.SEND);
180+
181+
}
182+
183+
@Test
184+
void notSendNextTimeIfUserGavePermissionOnce() {
185+
186+
// given
187+
configuration.setSendErrors(SendErrorsMode.ASK);
188+
189+
var languageClient = mock(LanguageClient.class);
190+
var answerTitle = Resources.getResourceString(
191+
configuration.getLanguage(),
192+
PermissionFilterBeforeSendCallback.class,
193+
"answer_sendOnce"
194+
);
195+
var answer = new MessageActionItem(answerTitle);
196+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
197+
198+
languageClientHolder.connect(languageClient);
199+
200+
var event = new SentryEvent();
201+
202+
// when
203+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
204+
205+
// then
206+
assertThat(filteredEvent).isNotNull();
207+
assertThat(configuration.getSendErrors()).isEqualTo(SendErrorsMode.ASK);
208+
}
209+
210+
@Test
211+
void notSendIfUserSkippedButAsk() {
212+
213+
// given
214+
configuration.setSendErrors(SendErrorsMode.ASK);
215+
216+
var languageClient = mock(LanguageClient.class);
217+
var answerTitle = Resources.getResourceString(
218+
configuration.getLanguage(),
219+
PermissionFilterBeforeSendCallback.class,
220+
"answer_skip"
221+
);
222+
var answer = new MessageActionItem(answerTitle);
223+
when(languageClient.showMessageRequest(any())).thenReturn(CompletableFuture.completedFuture(answer));
224+
225+
languageClientHolder.connect(languageClient);
226+
227+
var event = new SentryEvent();
228+
229+
// when
230+
var filteredEvent = permissionFilter.execute(event, mock(Hint.class));
231+
232+
// then
233+
assertThat(filteredEvent).isNull();
234+
assertThat(configuration.getSendErrors()).isEqualTo(SendErrorsMode.ASK);
235+
}
236+
237+
}

0 commit comments

Comments
 (0)