Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions tests/v2/test_client_integration.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os
from pathlib import Path
from datetime import datetime

import httpx
import pytest
Expand All @@ -13,6 +14,8 @@
)
from mindee.v2.parsing import InferenceActiveOptions
from mindee.v2.product.extraction.extraction_response import ExtractionResponse
from mindee.v2.product.split.params.split_parameters import SplitParameters
from mindee.v2.product.split.split_response import SplitResponse
from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR


Expand Down Expand Up @@ -166,6 +169,59 @@ def test_parse_file_filled_single_page_must_succeed(
assert len(supplier_name.locations) == 0


def _assert_webhook_job_success(response, webhook_ids: list[str]) -> None:
assert response.inference is not None
assert response.inference.result is not None

assert response.job is not None
assert response.job.status == "Processed"
assert isinstance(response.job.completed_at, datetime)
assert response.job.error is None
assert len(response.job.webhooks) == 2
assert all(webhook.status in {"Completed", "Failed"} for webhook in response.job.webhooks)
assert {webhook.id for webhook in response.job.webhooks} == set(webhook_ids)


@pytest.mark.integration
@pytest.mark.v2
def test_extraction_with_two_webhooks_must_complete_and_succeed(
v2_client: Client, findoc_model_id: str
) -> None:
webhook_ids = [
"-aa11-aa11-bdc5-2f8496c5641aa2286ed9",
"b2286ed9-aa11-aa11-bdc5-2f8496c5641a",
]

input_source = PathInput(
V2_PRODUCT_DATA_DIR / "extraction" / "financial_document" / "default_sample.jpg"
)
params = ExtractionParameters(model_id=findoc_model_id, webhook_ids=webhook_ids)

response = v2_client.enqueue_and_get_result(ExtractionResponse, input_source, params)

_assert_webhook_job_success(response, webhook_ids)
assert response.inference.result.fields["supplier_name"].value == "John Smith"


@pytest.mark.integration
@pytest.mark.v2
def test_split_with_two_webhooks_must_complete_and_succeed(
v2_client: Client, split_model_id: str
) -> None:
webhook_ids = [
"a2286ed9-aa11-aa11-bdc5-2f8496c5641a",
"b2286ed9-aa11-aa11-bdc5-2f8496c5641a",
]

input_source = PathInput(V2_PRODUCT_DATA_DIR / "split" / "default_sample.pdf")
params = SplitParameters(model_id=split_model_id, webhook_ids=webhook_ids)

response = v2_client.enqueue_and_get_result(SplitResponse, input_source, params)

_assert_webhook_job_success(response, webhook_ids)
assert len(response.inference.result.splits) == 2


@pytest.mark.integration
@pytest.mark.v2
def test_invalid_uuid_must_throw_error(v2_client: Client) -> None:
Expand Down
Loading