11package io .visual_regression_tracker .sdk_java ;
22
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 ;
37import com .google .gson .Gson ;
48import io .visual_regression_tracker .sdk_java .request .BuildRequest ;
59import io .visual_regression_tracker .sdk_java .request .TestRunRequest ;
1317import okhttp3 .mockwebserver .MockResponse ;
1418import okhttp3 .mockwebserver .MockWebServer ;
1519import okhttp3 .mockwebserver .RecordedRequest ;
16- import org .mockito .Mockito ;
17- import org .simplify4u .sjf4jmock .LoggerMock ;
18- import org .slf4j .Logger ;
20+ import org .slf4j .LoggerFactory ;
1921import org .testng .annotations .AfterMethod ;
2022import org .testng .annotations .BeforeMethod ;
2123import org .testng .annotations .DataProvider ;
@@ -59,8 +61,6 @@ public class VisualRegressionTrackerTest {
5961 @ SneakyThrows
6062 @ BeforeMethod
6163 public void setup () {
62- LoggerMock .clearInvocations ();
63-
6464 server = new MockWebServer ();
6565 server .start ();
6666
@@ -81,16 +81,16 @@ public void tearDown() {
8181 @ Test
8282 public void shouldStartBuild () throws IOException , InterruptedException {
8383 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 ();
8787 BuildResponse buildResponse = BuildResponse .builder ()
88- .id (BUILD_ID )
89- .projectId (PROJECT_ID )
90- .build ();
88+ .id (BUILD_ID )
89+ .projectId (PROJECT_ID )
90+ .build ();
9191 server .enqueue (new MockResponse ()
92- .setResponseCode (200 )
93- .setBody (gson .toJson (buildResponse )));
92+ .setResponseCode (200 )
93+ .setBody (gson .toJson (buildResponse )));
9494
9595 vrt .start ();
9696
@@ -106,11 +106,11 @@ public void shouldStopBuild() throws IOException, InterruptedException {
106106 vrt .buildId = BUILD_ID ;
107107 vrt .projectId = PROJECT_ID ;
108108 BuildResponse buildResponse = BuildResponse .builder ()
109- .id (BUILD_ID )
110- .build ();
109+ .id (BUILD_ID )
110+ .build ();
111111 server .enqueue (new MockResponse ()
112- .setResponseCode (200 )
113- .setBody (gson .toJson (buildResponse )));
112+ .setResponseCode (200 )
113+ .setBody (gson .toJson (buildResponse )));
114114
115115 vrt .stop ();
116116
@@ -129,27 +129,27 @@ public void stopShouldThrowExceptionIfNotStarted() throws IOException {
129129 @ Test
130130 public void shouldSubmitTestRun () throws IOException , InterruptedException {
131131 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 ();
138138 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 ();
150150 TestRunResponse testRunResponse = TestRunResponse .builder ()
151- .status (TestRunStatus .UNRESOLVED )
152- .build ();
151+ .status (TestRunStatus .UNRESOLVED )
152+ .build ();
153153 server .enqueue (new MockResponse ().setBody (gson .toJson (testRunResponse )));
154154 vrt .buildId = BUILD_ID ;
155155 vrt .projectId = PROJECT_ID ;
@@ -173,24 +173,24 @@ public void submitTestRunShouldThrowIfNotStarted() throws IOException {
173173
174174 @ DataProvider (name = "trackErrorCases" )
175175 public Object [][] trackErrorCases () {
176- return new Object [][] {
176+ return new Object [][]{
177177 {
178178 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 )
184184 .build (),
185185 "Difference found: https://someurl.com/test/123123"
186186 },
187187 {
188188 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 )
194194 .build (),
195195 "No baseline: https://someurl.com/test/123123"
196196 }
@@ -210,33 +210,39 @@ public void trackShouldThrowException(TestRunResponse testRunResponse, String ex
210210
211211 @ Test (dataProvider = "trackErrorCases" )
212212 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 );
214219 vrtMocked .configuration = new VisualRegressionTrackerConfig ("" , "" , "" , "" , true );
215220 when (vrtMocked .submitTestRun (anyString (), anyString (), any ())).thenReturn (testRunResponse );
216221
217222 doCallRealMethod ().when (vrtMocked ).track (anyString (), anyString (), any ());
218223 vrtMocked .track ("name" , "image" , TestRunOptions .builder ().build ());
219224
220- verify (loggerMock ).error (expectedExceptionMessage );
225+ assertThat (listAppender .list .get (1 ).getFormattedMessage (), is (expectedExceptionMessage ));
226+ assertThat (listAppender .list .get (1 ).getLevel (), is (Level .ERROR ));
221227 }
222228
223229 @ DataProvider (name = "shouldTrackPassCases" )
224230 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+ }
240246 };
241247 }
242248
@@ -264,7 +270,7 @@ public void shouldTrackOverload() throws IOException {
264270
265271 @ DataProvider (name = "shouldReturnIsStartedCases" )
266272 public Object [][] shouldReturnIsStartedCases () {
267- return new Object [][] {
273+ return new Object [][]{
268274 {null , null , false },
269275 {null , "some" , false },
270276 {"some" , null , false },
@@ -285,22 +291,22 @@ public void shouldReturnIsStarted(String buildId, String projectId, boolean expe
285291 @ Test
286292 public void handleRequestShouldThrowIfNotSuccess () throws IOException {
287293 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+ "}" ;
291297 Request mockRequest = new Request .Builder ()
292- .url (config .getApiUrl ())
293- .build ();
298+ .url (config .getApiUrl ())
299+ .build ();
294300
295301 String exceptionMessage = "" ;
296302 try {
297303 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 );
304310 } catch (TestRunException ex ) {
305311 exceptionMessage = ex .getMessage ();
306312 }
0 commit comments