1
1
package io .visual_regression_tracker .sdk_java ;
2
2
3
+ import ch .qos .logback .classic .Level ;
4
+ import ch .qos .logback .classic .Logger ;
5
+ import ch .qos .logback .classic .spi .ILoggingEvent ;
6
+ import ch .qos .logback .core .read .ListAppender ;
3
7
import com .google .gson .Gson ;
4
8
import io .visual_regression_tracker .sdk_java .request .BuildRequest ;
5
9
import io .visual_regression_tracker .sdk_java .request .TestRunRequest ;
13
17
import okhttp3 .mockwebserver .MockResponse ;
14
18
import okhttp3 .mockwebserver .MockWebServer ;
15
19
import okhttp3 .mockwebserver .RecordedRequest ;
16
- import org .mockito .Mockito ;
17
- import org .simplify4u .sjf4jmock .LoggerMock ;
18
- import org .slf4j .Logger ;
20
+ import org .slf4j .LoggerFactory ;
19
21
import org .testng .annotations .AfterMethod ;
20
22
import org .testng .annotations .BeforeMethod ;
21
23
import org .testng .annotations .DataProvider ;
@@ -59,8 +61,6 @@ public class VisualRegressionTrackerTest {
59
61
@ SneakyThrows
60
62
@ BeforeMethod
61
63
public void setup () {
62
- LoggerMock .clearInvocations ();
63
-
64
64
server = new MockWebServer ();
65
65
server .start ();
66
66
@@ -81,16 +81,16 @@ public void tearDown() {
81
81
@ Test
82
82
public void shouldStartBuild () throws IOException , InterruptedException {
83
83
BuildRequest buildRequest = BuildRequest .builder ()
84
- .branchName (this .config .getBranchName ())
85
- .project (this .config .getProject ())
86
- .build ();
84
+ .branchName (this .config .getBranchName ())
85
+ .project (this .config .getProject ())
86
+ .build ();
87
87
BuildResponse buildResponse = BuildResponse .builder ()
88
- .id (BUILD_ID )
89
- .projectId (PROJECT_ID )
90
- .build ();
88
+ .id (BUILD_ID )
89
+ .projectId (PROJECT_ID )
90
+ .build ();
91
91
server .enqueue (new MockResponse ()
92
- .setResponseCode (200 )
93
- .setBody (gson .toJson (buildResponse )));
92
+ .setResponseCode (200 )
93
+ .setBody (gson .toJson (buildResponse )));
94
94
95
95
vrt .start ();
96
96
@@ -106,11 +106,11 @@ public void shouldStopBuild() throws IOException, InterruptedException {
106
106
vrt .buildId = BUILD_ID ;
107
107
vrt .projectId = PROJECT_ID ;
108
108
BuildResponse buildResponse = BuildResponse .builder ()
109
- .id (BUILD_ID )
110
- .build ();
109
+ .id (BUILD_ID )
110
+ .build ();
111
111
server .enqueue (new MockResponse ()
112
- .setResponseCode (200 )
113
- .setBody (gson .toJson (buildResponse )));
112
+ .setResponseCode (200 )
113
+ .setBody (gson .toJson (buildResponse )));
114
114
115
115
vrt .stop ();
116
116
@@ -129,27 +129,27 @@ public void stopShouldThrowExceptionIfNotStarted() throws IOException {
129
129
@ Test
130
130
public void shouldSubmitTestRun () throws IOException , InterruptedException {
131
131
TestRunOptions testRunOptions = TestRunOptions .builder ()
132
- .device ("Device" )
133
- .os ("OS" )
134
- .browser ("Browser" )
135
- .viewport ("Viewport" )
136
- .diffTollerancePercent (0.5f )
137
- .build ();
132
+ .device ("Device" )
133
+ .os ("OS" )
134
+ .browser ("Browser" )
135
+ .viewport ("Viewport" )
136
+ .diffTollerancePercent (0.5f )
137
+ .build ();
138
138
TestRunRequest testRunRequest = TestRunRequest .builder ()
139
- .projectId (PROJECT_ID )
140
- .branchName (config .getBranchName ())
141
- .buildId (BUILD_ID )
142
- .name (NAME )
143
- .imageBase64 (IMAGE_BASE_64 )
144
- .os (testRunOptions .getOs ())
145
- .browser (testRunOptions .getBrowser ())
146
- .viewport (testRunOptions .getViewport ())
147
- .device (testRunOptions .getDevice ())
148
- .diffTollerancePercent (testRunOptions .getDiffTollerancePercent ())
149
- .build ();
139
+ .projectId (PROJECT_ID )
140
+ .branchName (config .getBranchName ())
141
+ .buildId (BUILD_ID )
142
+ .name (NAME )
143
+ .imageBase64 (IMAGE_BASE_64 )
144
+ .os (testRunOptions .getOs ())
145
+ .browser (testRunOptions .getBrowser ())
146
+ .viewport (testRunOptions .getViewport ())
147
+ .device (testRunOptions .getDevice ())
148
+ .diffTollerancePercent (testRunOptions .getDiffTollerancePercent ())
149
+ .build ();
150
150
TestRunResponse testRunResponse = TestRunResponse .builder ()
151
- .status (TestRunStatus .UNRESOLVED )
152
- .build ();
151
+ .status (TestRunStatus .UNRESOLVED )
152
+ .build ();
153
153
server .enqueue (new MockResponse ().setBody (gson .toJson (testRunResponse )));
154
154
vrt .buildId = BUILD_ID ;
155
155
vrt .projectId = PROJECT_ID ;
@@ -173,24 +173,24 @@ public void submitTestRunShouldThrowIfNotStarted() throws IOException {
173
173
174
174
@ DataProvider (name = "trackErrorCases" )
175
175
public Object [][] trackErrorCases () {
176
- return new Object [][] {
176
+ return new Object [][]{
177
177
{
178
178
TestRunResponse .builder ()
179
- .url ("https://someurl.com/test/123123" )
180
- .imageName ("imageName" )
181
- .baselineName ("baselineName" )
182
- .diffName ("diffName" )
183
- .status (TestRunStatus .UNRESOLVED )
179
+ .url ("https://someurl.com/test/123123" )
180
+ .imageName ("imageName" )
181
+ .baselineName ("baselineName" )
182
+ .diffName ("diffName" )
183
+ .status (TestRunStatus .UNRESOLVED )
184
184
.build (),
185
185
"Difference found: https://someurl.com/test/123123"
186
186
},
187
187
{
188
188
TestRunResponse .builder ()
189
- .url ("https://someurl.com/test/123123" )
190
- .imageName ("imageName" )
191
- .baselineName ("baselineName" )
192
- .diffName ("diffName" )
193
- .status (TestRunStatus .NEW )
189
+ .url ("https://someurl.com/test/123123" )
190
+ .imageName ("imageName" )
191
+ .baselineName ("baselineName" )
192
+ .diffName ("diffName" )
193
+ .status (TestRunStatus .NEW )
194
194
.build (),
195
195
"No baseline: https://someurl.com/test/123123"
196
196
}
@@ -210,33 +210,39 @@ public void trackShouldThrowException(TestRunResponse testRunResponse, String ex
210
210
211
211
@ Test (dataProvider = "trackErrorCases" )
212
212
public void trackShouldLogSevere (TestRunResponse testRunResponse , String expectedExceptionMessage ) throws IOException {
213
- Logger loggerMock = LoggerMock .getLoggerMock (VisualRegressionTracker .class );
213
+ Logger loggerMock = (Logger ) LoggerFactory .getLogger (VisualRegressionTracker .class );
214
+ // create and start a ListAppender
215
+ ListAppender <ILoggingEvent > listAppender = new ListAppender <>();
216
+ listAppender .start ();
217
+ // add the appender to the logger
218
+ loggerMock .addAppender (listAppender );
214
219
vrtMocked .configuration = new VisualRegressionTrackerConfig ("" , "" , "" , "" , true );
215
220
when (vrtMocked .submitTestRun (anyString (), anyString (), any ())).thenReturn (testRunResponse );
216
221
217
222
doCallRealMethod ().when (vrtMocked ).track (anyString (), anyString (), any ());
218
223
vrtMocked .track ("name" , "image" , TestRunOptions .builder ().build ());
219
224
220
- verify (loggerMock ).error (expectedExceptionMessage );
225
+ assertThat (listAppender .list .get (1 ).getFormattedMessage (), is (expectedExceptionMessage ));
226
+ assertThat (listAppender .list .get (1 ).getLevel (), is (Level .ERROR ));
221
227
}
222
228
223
229
@ DataProvider (name = "shouldTrackPassCases" )
224
230
public Object [][] shouldTrackPassCases () {
225
- return new Object [][] {
226
- {
227
- TestRunResponse .builder ()
228
- .id ("someId" )
229
- .imageName ("imageName" )
230
- .baselineName ("baselineName" )
231
- .diffName ("diffName" )
232
- .diffPercent (12.32f )
233
- .diffTollerancePercent (0.01f )
234
- .pixelMisMatchCount (1 )
235
- .merge (false )
236
- .url ("https://someurl.com/test/123123" )
237
- .status (TestRunStatus .OK )
238
- .build (),
239
- }
231
+ return new Object [][]{
232
+ {
233
+ TestRunResponse .builder ()
234
+ .id ("someId" )
235
+ .imageName ("imageName" )
236
+ .baselineName ("baselineName" )
237
+ .diffName ("diffName" )
238
+ .diffPercent (12.32f )
239
+ .diffTollerancePercent (0.01f )
240
+ .pixelMisMatchCount (1 )
241
+ .merge (false )
242
+ .url ("https://someurl.com/test/123123" )
243
+ .status (TestRunStatus .OK )
244
+ .build (),
245
+ }
240
246
};
241
247
}
242
248
@@ -264,7 +270,7 @@ public void shouldTrackOverload() throws IOException {
264
270
265
271
@ DataProvider (name = "shouldReturnIsStartedCases" )
266
272
public Object [][] shouldReturnIsStartedCases () {
267
- return new Object [][] {
273
+ return new Object [][]{
268
274
{null , null , false },
269
275
{null , "some" , false },
270
276
{"some" , null , false },
@@ -285,22 +291,22 @@ public void shouldReturnIsStarted(String buildId, String projectId, boolean expe
285
291
@ Test
286
292
public void handleRequestShouldThrowIfNotSuccess () throws IOException {
287
293
String error = "{\n " +
288
- " \" statusCode\" : 404,\n " +
289
- " \" message\" : \" Project not found\" \n " +
290
- "}" ;
294
+ " \" statusCode\" : 404,\n " +
295
+ " \" message\" : \" Project not found\" \n " +
296
+ "}" ;
291
297
Request mockRequest = new Request .Builder ()
292
- .url (config .getApiUrl ())
293
- .build ();
298
+ .url (config .getApiUrl ())
299
+ .build ();
294
300
295
301
String exceptionMessage = "" ;
296
302
try {
297
303
vrt .handleResponse (new Response .Builder ()
298
- .request (mockRequest )
299
- .protocol (Protocol .HTTP_2 )
300
- .code (404 )
301
- .message ("Not found" )
302
- .body (ResponseBody .create (error , VisualRegressionTracker .JSON ))
303
- .build (), Object .class );
304
+ .request (mockRequest )
305
+ .protocol (Protocol .HTTP_2 )
306
+ .code (404 )
307
+ .message ("Not found" )
308
+ .body (ResponseBody .create (error , VisualRegressionTracker .JSON ))
309
+ .build (), Object .class );
304
310
} catch (TestRunException ex ) {
305
311
exceptionMessage = ex .getMessage ();
306
312
}
0 commit comments