2020import org .junit .jupiter .api .BeforeEach ;
2121import org .junit .jupiter .api .Test ;
2222import org .junit .jupiter .api .extension .ExtendWith ;
23+ import org .junit .jupiter .params .ParameterizedTest ;
24+ import org .junit .jupiter .params .provider .MethodSource ;
2325import org .mockito .Mock ;
2426import org .mockito .junit .jupiter .MockitoExtension ;
2527
@@ -145,28 +147,27 @@ private void applyFixtures(List<HTTPFixture> fixtures) throws Exception {
145147 });
146148 }
147149
148- @ Test
149- void testLROCreateTestResourceWait () throws Exception {
150- List <WaitTestCase > tests = Arrays .asList (
150+ static List <WaitTestCase > waitTestCases () {
151+ return Arrays .asList (
151152 new WaitTestCase (
152153 "Success" ,
153154 Arrays .asList (
154155 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
155156 new Operation ()
156157 .setDone (false )
157- .setMetadata (createMetadata ("test-resource-123" , 5 ))
158+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
158159 .setName ("operations/test-resource-create-12345" )),
159160 new HTTPFixture ("GET" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345?" ,
160161 new Operation ()
161162 .setDone (false )
162- .setMetadata (createMetadata ("test-resource-123" , 75 ))
163+ .setMetadata (createStaticMetadata ("test-resource-123" , 75 ))
163164 .setName ("operations/test-resource-create-12345" )),
164165 new HTTPFixture ("GET" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345?" ,
165166 new Operation ()
166167 .setDone (true )
167- .setMetadata (createMetadata ("test-resource-123" , 100 ))
168+ .setMetadata (createStaticMetadata ("test-resource-123" , 100 ))
168169 .setName ("operations/test-resource-create-12345" )
169- .setResponse (createResponse ("test-resource-123" , "test-resource" )))
170+ .setResponse (createStaticResponse ("test-resource-123" , "test-resource" )))
170171 ),
171172 new TestResource ().setId ("test-resource-123" ).setName ("test-resource" ),
172173 false
@@ -177,7 +178,7 @@ void testLROCreateTestResourceWait() throws Exception {
177178 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
178179 new Operation ()
179180 .setDone (false )
180- .setMetadata (createMetadata ("test-resource-123" , 5 ))
181+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
181182 .setName ("operations/test-resource-create-12345" )),
182183 new HTTPFixture ("GET" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345?" ,
183184 new Operation ()
@@ -191,39 +192,40 @@ void testLROCreateTestResourceWait() throws Exception {
191192 true
192193 )
193194 );
195+ }
194196
195- for (WaitTestCase tt : tests ) {
196- // Reset mock and apply fixtures
197- reset (mockApiClient );
198- applyFixtures (tt .fixtures );
199-
200- // Create API and proper request
201- LroTestingAPI api = new LroTestingAPI (mockApiClient );
202- CreateTestResourceOperation operation = api .createTestResource (
203- new CreateTestResourceRequest ().setResource (new TestResource ()));
204-
205- if (tt .wantErr ) {
206- assertThrows (Exception .class , () ->
207- operation .waitForCompletion (Optional .of (LroOptions .withTimeout (Duration .ofMinutes (1 )))),
208- "Test case: " + tt .name );
209- } else {
210- TestResource result = operation .waitForCompletion (Optional .of (LroOptions .withTimeout (Duration .ofMinutes (1 ))));
211- assertEquals (tt .wantResult .getId (), result .getId (), "Test case: " + tt .name + " - ID mismatch" );
212- assertEquals (tt .wantResult .getName (), result .getName (), "Test case: " + tt .name + " - Name mismatch" );
213- }
197+ @ ParameterizedTest (name = "{0}" )
198+ @ MethodSource ("waitTestCases" )
199+ void testLROCreateTestResourceWait (WaitTestCase testCase ) throws Exception {
200+ // Reset mock and apply fixtures
201+ reset (mockApiClient );
202+ applyFixtures (testCase .fixtures );
203+
204+ // Create API and proper request
205+ LroTestingAPI api = new LroTestingAPI (mockApiClient );
206+ CreateTestResourceOperation operation = api .createTestResource (
207+ new CreateTestResourceRequest ().setResource (new TestResource ()));
208+
209+ if (testCase .wantErr ) {
210+ assertThrows (Exception .class , () ->
211+ operation .waitForCompletion (Optional .of (LroOptions .withTimeout (Duration .ofMinutes (1 )))),
212+ "Test case: " + testCase .name );
213+ } else {
214+ TestResource result = operation .waitForCompletion (Optional .of (LroOptions .withTimeout (Duration .ofMinutes (1 ))));
215+ assertEquals (testCase .wantResult .getId (), result .getId (), "Test case: " + testCase .name + " - ID mismatch" );
216+ assertEquals (testCase .wantResult .getName (), result .getName (), "Test case: " + testCase .name + " - Name mismatch" );
214217 }
215218 }
216219
217- @ Test
218- void testLROCancelTestResourceCancel () throws Exception {
219- List <CancelTestCase > tests = Arrays .asList (
220+ static List <CancelTestCase > cancelTestCases () {
221+ return Arrays .asList (
220222 new CancelTestCase (
221223 "Success" ,
222224 Arrays .asList (
223225 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
224226 new Operation ()
225227 .setDone (false )
226- .setMetadata (createMetadata ("test-resource-123" , 5 ))
228+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
227229 .setName ("operations/test-resource-create-12345" )),
228230 new HTTPFixture ("POST" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345/cancel" ,
229231 new Operation ()
@@ -233,66 +235,68 @@ void testLROCancelTestResourceCancel() throws Exception {
233235 false
234236 )
235237 );
238+ }
236239
237- for (CancelTestCase tt : tests ) {
238- // Reset mock and apply fixtures
239- reset (mockApiClient );
240- applyFixtures (tt .fixtures );
241-
242- // Create API and execute test
243- LroTestingAPI api = new LroTestingAPI (mockApiClient );
244- CreateTestResourceOperation operation = api .createTestResource (
245- new CreateTestResourceRequest ().setResource (new TestResource ()));
246-
247- if (tt .wantErr ) {
248- assertThrows (Exception .class , () -> operation .cancel (), "Cancel should have failed for test case: " + tt .name );
249- } else {
250- assertDoesNotThrow (() -> operation .cancel (), "Cancel failed for test case: " + tt .name );
251- }
240+ @ ParameterizedTest (name = "{0}" )
241+ @ MethodSource ("cancelTestCases" )
242+ void testLROCancelTestResourceCancel (CancelTestCase testCase ) throws Exception {
243+ // Reset mock and apply fixtures
244+ reset (mockApiClient );
245+ applyFixtures (testCase .fixtures );
246+
247+ // Create API and execute test
248+ LroTestingAPI api = new LroTestingAPI (mockApiClient );
249+ CreateTestResourceOperation operation = api .createTestResource (
250+ new CreateTestResourceRequest ().setResource (new TestResource ()));
251+
252+ if (testCase .wantErr ) {
253+ assertThrows (Exception .class , () -> operation .cancel (), "Cancel should have failed for test case: " + testCase .name );
254+ } else {
255+ assertDoesNotThrow (() -> operation .cancel (), "Cancel failed for test case: " + testCase .name );
252256 }
253257 }
254258
255- @ Test
256- void testLROCreateTestResourceName () throws Exception {
257- List <NameTestCase > tests = Arrays .asList (
259+ static List <NameTestCase > nameTestCases () {
260+ return Arrays .asList (
258261 new NameTestCase (
259262 "Success" ,
260263 Arrays .asList (
261264 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
262265 new Operation ()
263266 .setDone (false )
264- .setMetadata (createMetadata ("test-resource-123" , 5 ))
267+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
265268 .setName ("operations/test-resource-create-12345" ))
266269 ),
267270 "operations/test-resource-create-12345"
268271 )
269272 );
273+ }
270274
271- for (NameTestCase tt : tests ) {
272- // Reset mock and apply fixtures
273- reset (mockApiClient );
274- applyFixtures (tt .fixtures );
275+ @ ParameterizedTest (name = "{0}" )
276+ @ MethodSource ("nameTestCases" )
277+ void testLROCreateTestResourceName (NameTestCase testCase ) throws Exception {
278+ // Reset mock and apply fixtures
279+ reset (mockApiClient );
280+ applyFixtures (testCase .fixtures );
275281
276- // Create API and execute test
277- LroTestingAPI api = new LroTestingAPI (mockApiClient );
278- CreateTestResourceOperation operation = api .createTestResource (
279- new CreateTestResourceRequest ().setResource (new TestResource ()));
280- String name = operation .getName ();
282+ // Create API and execute test
283+ LroTestingAPI api = new LroTestingAPI (mockApiClient );
284+ CreateTestResourceOperation operation = api .createTestResource (
285+ new CreateTestResourceRequest ().setResource (new TestResource ()));
286+ String name = operation .getName ();
281287
282- assertEquals (tt .wantName , name , "Name mismatch for test case: " + tt .name );
283- }
288+ assertEquals (testCase .wantName , name , "Name mismatch for test case: " + testCase .name );
284289 }
285290
286- @ Test
287- void testLROCreateTestResourceMetadata () throws Exception {
288- List <MetadataTestCase > tests = Arrays .asList (
291+ static List <MetadataTestCase > metadataTestCases () {
292+ return Arrays .asList (
289293 new MetadataTestCase (
290294 "Success" ,
291295 Arrays .asList (
292296 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
293297 new Operation ()
294298 .setDone (false )
295- .setMetadata (createMetadata ("test-resource-123" , 5 ))
299+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
296300 .setName ("operations/test-resource-create-12345" ))
297301 ),
298302 new TestResourceOperationMetadata ()
@@ -301,47 +305,48 @@ void testLROCreateTestResourceMetadata() throws Exception {
301305 false
302306 )
303307 );
308+ }
304309
305- for (MetadataTestCase tt : tests ) {
306- // Reset mock and apply fixtures
307- reset (mockApiClient );
308- applyFixtures (tt .fixtures );
309-
310- // Create API and execute test
311- LroTestingAPI api = new LroTestingAPI (mockApiClient );
312- CreateTestResourceOperation operation = api .createTestResource (
313- new CreateTestResourceRequest ().setResource (new TestResource ()));
314-
315- if (tt .wantErr ) {
316- assertThrows (Exception .class , () -> operation .getMetadata (), "Metadata should have failed for test case: " + tt .name );
317- } else {
318- TestResourceOperationMetadata metadata = operation .getMetadata ();
319- assertNotNull (metadata , "Metadata should not be null for test case: " + tt .name );
320- assertEquals (tt .wantMetadata .getResourceId (), metadata .getResourceId (),
321- "Resource ID mismatch for test case: " + tt .name );
322- assertEquals (tt .wantMetadata .getProgressPercent (), metadata .getProgressPercent (),
323- "Progress percent mismatch for test case: " + tt .name );
324- }
310+ @ ParameterizedTest (name = "{0}" )
311+ @ MethodSource ("metadataTestCases" )
312+ void testLROCreateTestResourceMetadata (MetadataTestCase testCase ) throws Exception {
313+ // Reset mock and apply fixtures
314+ reset (mockApiClient );
315+ applyFixtures (testCase .fixtures );
316+
317+ // Create API and execute test
318+ LroTestingAPI api = new LroTestingAPI (mockApiClient );
319+ CreateTestResourceOperation operation = api .createTestResource (
320+ new CreateTestResourceRequest ().setResource (new TestResource ()));
321+
322+ if (testCase .wantErr ) {
323+ assertThrows (Exception .class , () -> operation .getMetadata (), "Metadata should have failed for test case: " + testCase .name );
324+ } else {
325+ TestResourceOperationMetadata metadata = operation .getMetadata ();
326+ assertNotNull (metadata , "Metadata should not be null for test case: " + testCase .name );
327+ assertEquals (testCase .wantMetadata .getResourceId (), metadata .getResourceId (),
328+ "Resource ID mismatch for test case: " + testCase .name );
329+ assertEquals (testCase .wantMetadata .getProgressPercent (), metadata .getProgressPercent (),
330+ "Progress percent mismatch for test case: " + testCase .name );
325331 }
326332 }
327333
328- @ Test
329- void testLROCreateTestResourceDone () throws Exception {
330- List <DoneTestCase > tests = Arrays .asList (
334+ static List <DoneTestCase > doneTestCases () {
335+ return Arrays .asList (
331336 new DoneTestCase (
332337 "True" ,
333338 Arrays .asList (
334339 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
335340 new Operation ()
336341 .setDone (false )
337- .setMetadata (createMetadata ("test-resource-123" , 5 ))
342+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
338343 .setName ("operations/test-resource-create-12345" )),
339344 new HTTPFixture ("GET" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345?" ,
340345 new Operation ()
341346 .setDone (true )
342- .setMetadata (createMetadata ("test-resource-123" , 100 ))
347+ .setMetadata (createStaticMetadata ("test-resource-123" , 100 ))
343348 .setName ("operations/test-resource-create-12345" )
344- .setResponse (createResponse ("test-resource-123" , "test-resource" )))
349+ .setResponse (createStaticResponse ("test-resource-123" , "test-resource" )))
345350 ),
346351 true ,
347352 false
@@ -352,35 +357,37 @@ void testLROCreateTestResourceDone() throws Exception {
352357 new HTTPFixture ("POST" , "/api/2.0/lro-testing/resources" ,
353358 new Operation ()
354359 .setDone (false )
355- .setMetadata (createMetadata ("test-resource-123" , 5 ))
360+ .setMetadata (createStaticMetadata ("test-resource-123" , 5 ))
356361 .setName ("operations/test-resource-create-12345" )),
357362 new HTTPFixture ("GET" , "/api/2.0/lro-testing/operations/operations/test-resource-create-12345?" ,
358363 new Operation ()
359364 .setDone (false )
360- .setMetadata (createMetadata ("test-resource-123" , 75 ))
365+ .setMetadata (createStaticMetadata ("test-resource-123" , 75 ))
361366 .setName ("operations/test-resource-create-12345" ))
362367 ),
363368 false ,
364369 false
365370 )
366371 );
372+ }
367373
368- for (DoneTestCase tt : tests ) {
369- // Reset mock and apply fixtures
370- reset (mockApiClient );
371- applyFixtures (tt .fixtures );
372-
373- // Create API and execute test
374- LroTestingAPI api = new LroTestingAPI (mockApiClient );
375- CreateTestResourceOperation operation = api .createTestResource (
376- new CreateTestResourceRequest ().setResource (new TestResource ()));
377-
378- if (tt .wantErr ) {
379- assertThrows (Exception .class , () -> operation .isDone (), "Done should have failed for test case: " + tt .name );
380- } else {
381- boolean done = operation .isDone ();
382- assertEquals (tt .wantDone , done , "Done mismatch for test case: " + tt .name );
383- }
374+ @ ParameterizedTest (name = "{0}" )
375+ @ MethodSource ("doneTestCases" )
376+ void testLROCreateTestResourceDone (DoneTestCase testCase ) throws Exception {
377+ // Reset mock and apply fixtures
378+ reset (mockApiClient );
379+ applyFixtures (testCase .fixtures );
380+
381+ // Create API and execute test
382+ LroTestingAPI api = new LroTestingAPI (mockApiClient );
383+ CreateTestResourceOperation operation = api .createTestResource (
384+ new CreateTestResourceRequest ().setResource (new TestResource ()));
385+
386+ if (testCase .wantErr ) {
387+ assertThrows (Exception .class , () -> operation .isDone (), "Done should have failed for test case: " + testCase .name );
388+ } else {
389+ boolean done = operation .isDone ();
390+ assertEquals (testCase .wantDone , done , "Done mismatch for test case: " + testCase .name );
384391 }
385392 }
386393
@@ -397,4 +404,20 @@ private JsonNode createResponse(String id, String name) {
397404 response .put ("name" , name );
398405 return response ;
399406 }
407+
408+ private static JsonNode createStaticMetadata (String resourceId , int progressPercent ) {
409+ ObjectMapper staticMapper = new ObjectMapper ();
410+ ObjectNode metadata = staticMapper .createObjectNode ();
411+ metadata .put ("resource_id" , resourceId );
412+ metadata .put ("progress_percent" , progressPercent );
413+ return metadata ;
414+ }
415+
416+ private static JsonNode createStaticResponse (String id , String name ) {
417+ ObjectMapper staticMapper = new ObjectMapper ();
418+ ObjectNode response = staticMapper .createObjectNode ();
419+ response .put ("id" , id );
420+ response .put ("name" , name );
421+ return response ;
422+ }
400423}
0 commit comments