Skip to content

Commit 44bd12e

Browse files
committed
update
1 parent b2b1908 commit 44bd12e

1 file changed

Lines changed: 132 additions & 109 deletions

File tree

databricks-sdk-java/src/test/java/com/databricks/sdk/service/gentesting/unittests/LroTestingAPITest.java

Lines changed: 132 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.junit.jupiter.api.BeforeEach;
2121
import org.junit.jupiter.api.Test;
2222
import org.junit.jupiter.api.extension.ExtendWith;
23+
import org.junit.jupiter.params.ParameterizedTest;
24+
import org.junit.jupiter.params.provider.MethodSource;
2325
import org.mockito.Mock;
2426
import 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

Comments
 (0)