55
66from mindee import ClientV2 , InferenceParameters , PathInput , UrlInputSource
77from mindee .error .mindee_http_error_v2 import MindeeHTTPErrorV2
8+ from mindee .input .inference_parameters import DataSchema
89from mindee .parsing .v2 .inference_response import InferenceResponse
910from tests .utils import FILE_TYPES_DIR , V2_PRODUCT_DATA_DIR
1011
@@ -24,6 +25,19 @@ def v2_client() -> ClientV2:
2425 api_key = os .getenv ("MINDEE_V2_API_KEY" )
2526 return ClientV2 (api_key )
2627
28+ def _basic_assert_success (response : InferenceResponse , page_count : int ) -> None :
29+ assert response is not None
30+ assert response .inference is not None
31+
32+ assert response .inference .file is not None
33+ assert response .inference .file .page_count == page_count
34+
35+ assert response .inference .model is not None
36+ assert response .inference .model .id == findoc_model_id
37+
38+ assert response .inference .result is not None
39+ assert response .inference .active_options is not None
40+
2741
2842@pytest .mark .integration
2943@pytest .mark .v2
@@ -49,24 +63,15 @@ def test_parse_file_empty_multiple_pages_must_succeed(
4963 response : InferenceResponse = v2_client .enqueue_and_get_inference (
5064 input_source , params
5165 )
52- assert response is not None
53- assert response .inference is not None
66+ _basic_assert_success (response = response , page_count = 2 )
5467
55- assert response .inference .file is not None
5668 assert response .inference .file .name == "multipage_cut-2.pdf"
57- assert response .inference .file .page_count == 2
58-
59- assert response .inference .model is not None
60- assert response .inference .model .id == findoc_model_id
6169
62- assert response .inference .active_options is not None
6370 assert response .inference .active_options .rag is False
6471 assert response .inference .active_options .raw_text is True
6572 assert response .inference .active_options .polygon is False
6673 assert response .inference .active_options .confidence is False
6774
68- assert response .inference .result is not None
69-
7075 assert response .inference .result .raw_text is not None
7176 assert len (response .inference .result .raw_text .pages ) == 2
7277
@@ -93,24 +98,15 @@ def test_parse_file_empty_single_page_options_must_succeed(
9398 response : InferenceResponse = v2_client .enqueue_and_get_inference (
9499 input_source , params
95100 )
96- assert response is not None
97- assert response .inference is not None
98-
99- assert response .inference .model is not None
100- assert response .inference .model .id == findoc_model_id
101+ _basic_assert_success (response = response , page_count = 1 )
101102
102- assert response .inference .file is not None
103103 assert response .inference .file .name == "blank_1.pdf"
104- assert response .inference .file .page_count == 1
105104
106- assert response .inference .active_options is not None
107105 assert response .inference .active_options .rag is True
108106 assert response .inference .active_options .raw_text is True
109107 assert response .inference .active_options .polygon is True
110108 assert response .inference .active_options .confidence is True
111109
112- assert response .inference .result is not None
113-
114110
115111@pytest .mark .integration
116112@pytest .mark .v2
@@ -137,26 +133,17 @@ def test_parse_file_filled_single_page_must_succeed(
137133 response : InferenceResponse = v2_client .enqueue_and_get_inference (
138134 input_source , params
139135 )
136+ _basic_assert_success (response = response , page_count = 1 )
140137
141- assert response is not None
142- assert response .inference is not None
143-
144- assert response .inference .file is not None
145138 assert response .inference .file .name == "default_sample.jpg"
146- assert response .inference .file .page_count == 1
147-
148- assert response .inference .model is not None
149- assert response .inference .model .id == findoc_model_id
150139
151- assert response .inference .active_options is not None
152140 assert response .inference .active_options .rag is False
153141 assert response .inference .active_options .raw_text is False
154142 assert response .inference .active_options .polygon is False
155143 assert response .inference .active_options .confidence is False
156144
157145 assert response .inference .result .raw_text is None
158146
159- assert response .inference .result is not None
160147 supplier_name = response .inference .result .fields ["supplier_name" ]
161148 assert supplier_name is not None
162149 assert supplier_name .value == "John Smith"
@@ -266,15 +253,33 @@ def test_blank_url_input_source_must_succeed(
266253 response : InferenceResponse = v2_client .enqueue_and_get_inference (
267254 input_source , params
268255 )
269- assert response is not None
270- assert response .inference is not None
256+ _basic_assert_success (response = response , page_count = 1 )
271257
272- assert response .inference .file is not None
273- assert response .inference .file .page_count == 1
274258
275- assert response .inference .model is not None
276- assert response .inference .model .id == findoc_model_id
259+ @pytest .mark .integration
260+ @pytest .mark .v2
261+ def test_data_schema_must_succeed (
262+ v2_client : ClientV2 ,
263+ findoc_model_id : str ,
264+ ) -> None :
265+ """
266+ Load a blank PDF from an HTTPS URL and make sure the inference call completes without raising any errors.
267+ """
268+ input_path : Path = FILE_TYPES_DIR / "pdf" / "blank_1.pdf"
277269
278- assert response .inference .result is not None
270+ input_source = PathInput (input_path )
271+ params = InferenceParameters (
272+ model_id = findoc_model_id ,
273+ rag = False ,
274+ raw_text = False ,
275+ polygon = False ,
276+ confidence = False ,
277+ webhook_ids = [],
278+ data_schema = DataSchema (override = {"test_field" : {}}),
279+ alias = "py_integration_data_schema_override" ,
280+ )
281+ response : InferenceResponse = v2_client .enqueue_and_get_inference (
282+ input_source , params
283+ )
284+ _basic_assert_success (response = response , page_count = 1 )
279285
280- assert response .inference .active_options is not None
0 commit comments