Skip to content

Commit 007bd06

Browse files
authored
[Form recognizer] Update tests for better pipeline results (Azure#36279)
1 parent 7e2c981 commit 007bd06

20 files changed

+534
-703
lines changed

sdk/formrecognizer/azure-ai-formrecognizer/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "java",
44
"TagPrefix": "java/formrecognizer/azure-ai-formrecognizer",
5-
"Tag": "java/formrecognizer/azure-ai-formrecognizer_d50ed33064"
5+
"Tag": "java/formrecognizer/azure-ai-formrecognizer_d20d343709"
66
}

sdk/formrecognizer/azure-ai-formrecognizer/src/main/java/com/azure/ai/formrecognizer/documentanalysis/implementation/util/Transforms.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,10 @@ private static DocumentKeyValueElement toDocumentKeyValueElement(
492492
private static Map<String, DocumentField> toDocumentFields(
493493
Map<String, com.azure.ai.formrecognizer.documentanalysis.implementation.models.DocumentField> innerFields) {
494494
Map<String, DocumentField> documentFieldMap = new HashMap<>();
495-
innerFields.forEach((key, innerDocumentField) ->
496-
documentFieldMap.put(key, toDocumentField(innerDocumentField)));
495+
if (!CoreUtils.isNullOrEmpty(innerFields)) {
496+
innerFields.forEach((key, innerDocumentField) ->
497+
documentFieldMap.put(key, toDocumentField(innerDocumentField)));
498+
}
497499
return documentFieldMap;
498500
}
499501

sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerAsyncClientTest.java

Lines changed: 1 addition & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,6 @@ public void recognizeReceiptData(HttpClient httpClient, FormRecognizerServiceVer
9999
}, RECEIPT_CONTOSO_JPG);
100100
}
101101

102-
/**
103-
* Verifies an exception thrown for a document using null data value.
104-
*/
105-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
106-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
107-
public void recognizeReceiptDataNullData(HttpClient httpClient,
108-
FormRecognizerServiceVersion serviceVersion) {
109-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
110-
assertThrows(NullPointerException.class,
111-
() -> client.beginRecognizeReceipts(null, 0).getSyncPoller());
112-
}
113-
114102
/**
115103
* Verifies content type will be auto detected when using custom form API with input stream data overload.
116104
*/
@@ -254,7 +242,6 @@ public void recognizeReceiptSourceUrl(HttpClient httpClient, FormRecognizerServi
254242
*/
255243
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
256244
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
257-
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
258245
public void recognizeReceiptFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
259246
FormRecognizerServiceVersion serviceVersion) {
260247
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
@@ -336,6 +323,7 @@ public void recognizeReceiptFromUrlMultiPage(HttpClient httpClient, FormRecogniz
336323
= client.beginRecognizeReceiptsFromUrl(fileUrl).setPollInterval(durationTestMode).getSyncPoller();
337324
syncPoller.waitForCompletion();
338325
validateMultipageReceiptData(syncPoller.getFinalResult());
326+
// validate from service team, receipt size returned 2 for 3 pages?
339327
}, MULTIPAGE_INVOICE_PDF);
340328
}
341329

@@ -363,16 +351,6 @@ public void recognizeContent(HttpClient httpClient, FormRecognizerServiceVersion
363351
}, CONTENT_FORM_JPG);
364352
}
365353

366-
/**
367-
* Verifies an exception thrown for a document using null data value.
368-
*/
369-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
370-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
371-
public void recognizeContentResultWithNullData(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
372-
assertThrows(NullPointerException.class,
373-
() -> client.beginRecognizeContent(null, 0).setPollInterval(durationTestMode).getSyncPoller());
374-
}
375-
376354
/**
377355
* Verifies content type will be auto detected when using content/layout API with input stream data overload.
378356
*/
@@ -565,7 +543,6 @@ public void recognizeContentFromUrl(HttpClient httpClient, FormRecognizerService
565543
*/
566544
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
567545
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
568-
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
569546
public void recognizeContentFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
570547
FormRecognizerServiceVersion serviceVersion) {
571548
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
@@ -825,52 +802,6 @@ public void recognizeCustomFormLabeledDataWithNullFormData(HttpClient httpClient
825802
}), INVOICE_6_PDF);
826803
}
827804

828-
/**
829-
* Verifies an exception thrown for a document using null model id.
830-
*/
831-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
832-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
833-
public void recognizeCustomFormLabeledDataWithNullModelId(HttpClient httpClient,
834-
FormRecognizerServiceVersion serviceVersion) {
835-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
836-
dataRunner((data, dataLength) -> {
837-
Exception ex = assertThrows(RuntimeException.class,
838-
() -> client.beginRecognizeCustomForms(
839-
null,
840-
toFluxByteBuffer(data),
841-
dataLength,
842-
new RecognizeCustomFormsOptions()
843-
.setContentType(FormContentType.APPLICATION_PDF)
844-
.setFieldElementsIncluded(true))
845-
.setPollInterval(durationTestMode)
846-
.getSyncPoller());
847-
assertEquals(MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage());
848-
}, INVOICE_6_PDF);
849-
}
850-
851-
/**
852-
* Verifies an exception thrown for an empty model id when recognizing custom form from URL.
853-
*/
854-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
855-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
856-
public void recognizeCustomFormLabeledDataWithEmptyModelId(HttpClient httpClient,
857-
FormRecognizerServiceVersion serviceVersion) {
858-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
859-
dataRunner((data, dataLength) -> {
860-
Exception ex = assertThrows(RuntimeException.class,
861-
() -> client.beginRecognizeCustomForms(
862-
"",
863-
toFluxByteBuffer(data),
864-
dataLength,
865-
new RecognizeCustomFormsOptions()
866-
.setContentType(FormContentType.APPLICATION_PDF)
867-
.setFieldElementsIncluded(true))
868-
.setPollInterval(durationTestMode)
869-
.getSyncPoller());
870-
assertEquals(INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage());
871-
}, INVOICE_6_PDF);
872-
}
873-
874805
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
875806
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
876807
public void recognizeCustomFormInvalidStatus(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
@@ -1256,38 +1187,6 @@ public void recognizeCustomFormInvalidSourceUrl(HttpClient httpClient,
12561187
});
12571188
}
12581189

1259-
/**
1260-
* Verifies an exception thrown for a null model id when recognizing custom form from URL.
1261-
*/
1262-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
1263-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
1264-
public void recognizeCustomFormFromUrlLabeledDataWithNullModelId(HttpClient httpClient,
1265-
FormRecognizerServiceVersion serviceVersion) {
1266-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
1267-
urlRunner(fileUrl -> {
1268-
Exception ex = assertThrows(RuntimeException.class,
1269-
() -> client.beginRecognizeCustomFormsFromUrl(null, fileUrl)
1270-
.setPollInterval(durationTestMode).getSyncPoller());
1271-
assertEquals(MODEL_ID_IS_REQUIRED_EXCEPTION_MESSAGE, ex.getMessage());
1272-
}, MULTIPAGE_INVOICE_PDF);
1273-
}
1274-
1275-
/**
1276-
* Verifies an exception thrown for an empty model id for recognizing custom forms from URL.
1277-
*/
1278-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
1279-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
1280-
public void recognizeCustomFormFromUrlLabeledDataWithEmptyModelId(HttpClient httpClient,
1281-
FormRecognizerServiceVersion serviceVersion) {
1282-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
1283-
urlRunner(fileUrl -> {
1284-
IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
1285-
() -> client.beginRecognizeCustomFormsFromUrl("", fileUrl)
1286-
.setPollInterval(durationTestMode).getSyncPoller());
1287-
assertEquals(INVALID_UUID_EXCEPTION_MESSAGE, ex.getMessage());
1288-
}, MULTIPAGE_INVOICE_PDF);
1289-
}
1290-
12911190
/**
12921191
* Verifies custom form data for an URL document data with labeled data
12931192
*/
@@ -1373,7 +1272,6 @@ modelId, fileUrl, new RecognizeCustomFormsOptions().setPollInterval(durationTest
13731272
*/
13741273
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
13751274
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
1376-
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
13771275
public void recognizeCustomFormFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
13781276
FormRecognizerServiceVersion serviceVersion) {
13791277
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
@@ -1513,18 +1411,6 @@ public void recognizeBusinessCardData(HttpClient httpClient, FormRecognizerServi
15131411
}, BUSINESS_CARD_JPG);
15141412
}
15151413

1516-
/**
1517-
* Verifies an exception thrown for a document using null data value.
1518-
*/
1519-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
1520-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
1521-
public void recognizeBusinessCardDataNullData(HttpClient httpClient,
1522-
FormRecognizerServiceVersion serviceVersion) {
1523-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
1524-
assertThrows(NullPointerException.class,
1525-
() -> client.beginRecognizeBusinessCards(null, 0).getSyncPoller());
1526-
}
1527-
15281414
/**
15291415
* Verifies content type will be auto detected when using custom form API with input stream data overload.
15301416
*/
@@ -1682,7 +1568,6 @@ public void recognizeBusinessCardSourceUrl(HttpClient httpClient, FormRecognizer
16821568
*/
16831569
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
16841570
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
1685-
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
16861571
public void recognizeBusinessCardFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
16871572
FormRecognizerServiceVersion serviceVersion) {
16881573
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
@@ -2004,7 +1889,6 @@ public void recognizeInvoiceSourceUrl(HttpClient httpClient, FormRecognizerServi
20041889
*/
20051890
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
20061891
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
2007-
@Disabled("https://github.com/Azure/azure-sdk-for-java/issues/21687")
20081892
public void recognizeInvoiceFromUrlWithEncodedBlankSpaceSourceUrl(HttpClient httpClient,
20091893
FormRecognizerServiceVersion serviceVersion) {
20101894
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
@@ -2110,18 +1994,6 @@ public void recognizeLicenseCardData(HttpClient httpClient, FormRecognizerServic
21101994
}, LICENSE_CARD_JPG);
21111995
}
21121996

2113-
/**
2114-
* Verifies an exception thrown for a document using null data value.
2115-
*/
2116-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
2117-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
2118-
public void recognizeIDDocumentDataNullData(HttpClient httpClient,
2119-
FormRecognizerServiceVersion serviceVersion) {
2120-
client = getFormRecognizerAsyncClient(httpClient, serviceVersion);
2121-
assertThrows(NullPointerException.class,
2122-
() -> client.beginRecognizeIdentityDocuments(null, 0).getSyncPoller());
2123-
}
2124-
21251997
/**
21261998
* Verifies content type will be auto detected when using custom form API with input stream data overload.
21271999
*/

sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormRecognizerClientBuilderTest.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.function.Consumer;
2828
import java.util.function.Function;
2929

30-
import static com.azure.ai.formrecognizer.FormRecognizerClientTestBase.INVALID_ENDPOINT;
3130
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_API_KEY;
3231
import static com.azure.ai.formrecognizer.FormTrainingClientTestBase.AZURE_FORM_RECOGNIZER_ENDPOINT;
3332
import static com.azure.ai.formrecognizer.TestUtils.CONTENT_FORM_JPG;
@@ -98,28 +97,13 @@ public void clientBuilderWithDefaultPipeline(HttpClient httpClient, FormRecogniz
9897
.beginRecognizeContentFromUrl(input), interceptorManager).getFinalResult()));
9998
}
10099

101-
/**
102-
* Test for invalid endpoint, which throws connection refused exception message.
103-
*/
104-
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
105-
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
106-
public void clientBuilderWithInvalidEndpoint(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
107-
clientBuilderWithDefaultPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
108-
assertThrows(RuntimeException.class,
109-
() -> clientBuilder.endpoint(INVALID_ENDPOINT)
110-
.retryPolicy(new RetryPolicy(new FixedDelay(3, Duration.ofMillis(1))))
111-
.buildClient()
112-
.beginRecognizeContentFromUrl(input).getFinalResult());
113-
});
114-
}
115-
116100
/**
117101
* Test for an valid http endpoint, which throws HTTPS requirement exception message.
118102
*/
119103
@ParameterizedTest(name = DISPLAY_NAME_WITH_ARGUMENTS)
120104
@MethodSource("com.azure.ai.formrecognizer.TestUtils#getTestParameters")
121105
public void clientBuilderWithHttpEndpoint(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion) {
122-
clientBuilderWithDefaultPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
106+
clientBuilderWithNoRecordPipelineRunner(httpClient, serviceVersion, clientBuilder -> (input) -> {
123107
assertThrows(RuntimeException.class, () -> clientBuilder.endpoint(VALID_HTTP_LOCALHOST)
124108
.retryPolicy(new RetryPolicy(new FixedDelay(3, Duration.ofMillis(1))))
125109
.buildClient()
@@ -235,6 +219,17 @@ void clientBuilderWithDefaultPipelineRunner(HttpClient httpClient, FormRecognize
235219
testRunner.apply(clientBuilder).accept(URL_TEST_FILE_FORMAT + CONTENT_FORM_JPG);
236220
}
237221

222+
void clientBuilderWithNoRecordPipelineRunner(HttpClient httpClient, FormRecognizerServiceVersion serviceVersion,
223+
Function<FormRecognizerClientBuilder, Consumer<String>> testRunner) {
224+
final FormRecognizerClientBuilder clientBuilder = new FormRecognizerClientBuilder()
225+
.credential(new AzureKeyCredential(getApiKey()))
226+
.endpoint(getEndpoint())
227+
.httpClient(httpClient)
228+
.serviceVersion(serviceVersion);
229+
230+
testRunner.apply(clientBuilder).accept(URL_TEST_FILE_FORMAT + CONTENT_FORM_JPG);
231+
}
232+
238233
/**
239234
* Create a client builder with endpoint and API key credential.
240235
*

0 commit comments

Comments
 (0)