Updated integration tests to not require exact match
This matches how we want clients to behave, they should ignore any extra fields that are sent in the response.
This commit is contained in:
30
tests_integration/tests/vendor/test_add.py
vendored
30
tests_integration/tests/vendor/test_add.py
vendored
@@ -4,6 +4,8 @@ from datetime import datetime, timezone
|
||||
|
||||
import httpx
|
||||
|
||||
from ..conftest import assert_dicts_compatible
|
||||
|
||||
URL = "http://spoolman:8000"
|
||||
|
||||
|
||||
@@ -20,12 +22,15 @@ def test_add_vendor():
|
||||
|
||||
# Verify
|
||||
vendor = result.json()
|
||||
assert vendor == {
|
||||
"id": vendor["id"],
|
||||
"registered": vendor["registered"],
|
||||
"name": name,
|
||||
"comment": comment,
|
||||
}
|
||||
assert_dicts_compatible(
|
||||
vendor,
|
||||
{
|
||||
"id": vendor["id"],
|
||||
"registered": vendor["registered"],
|
||||
"name": name,
|
||||
"comment": comment,
|
||||
},
|
||||
)
|
||||
|
||||
# Verify that registered happened almost now (within 1 minute)
|
||||
diff = abs((datetime.now(tz=timezone.utc) - datetime.fromisoformat(vendor["registered"])).total_seconds())
|
||||
@@ -47,11 +52,14 @@ def test_add_vendor_required():
|
||||
|
||||
# Verify
|
||||
vendor = result.json()
|
||||
assert vendor == {
|
||||
"id": vendor["id"],
|
||||
"registered": vendor["registered"],
|
||||
"name": name,
|
||||
}
|
||||
assert_dicts_compatible(
|
||||
vendor,
|
||||
{
|
||||
"id": vendor["id"],
|
||||
"registered": vendor["registered"],
|
||||
"name": name,
|
||||
},
|
||||
)
|
||||
|
||||
# Clean up
|
||||
httpx.delete(f"{URL}/api/v1/vendor/{vendor['id']}").raise_for_status()
|
||||
|
||||
9
tests_integration/tests/vendor/test_find.py
vendored
9
tests_integration/tests/vendor/test_find.py
vendored
@@ -7,14 +7,11 @@ from typing import Any
|
||||
import httpx
|
||||
import pytest
|
||||
|
||||
from ..conftest import assert_lists_compatible
|
||||
|
||||
URL = "http://spoolman:8000"
|
||||
|
||||
|
||||
def vendor_lists_equal(a: Iterable[dict[str, Any]], b: Iterable[dict[str, Any]]) -> bool:
|
||||
"""Compare two lists of vendors where the order of the vendors is not guaranteed."""
|
||||
return sorted(a, key=lambda x: x["id"]) == sorted(b, key=lambda x: x["id"])
|
||||
|
||||
|
||||
@dataclass
|
||||
class Fixture:
|
||||
vendors: list[dict[str, Any]]
|
||||
@@ -62,7 +59,7 @@ def test_find_all_vendors(vendors: Fixture):
|
||||
|
||||
# Verify
|
||||
vendors_result = result.json()
|
||||
assert vendor_lists_equal(vendors_result, vendors.vendors)
|
||||
assert_lists_compatible(vendors_result, vendors.vendors)
|
||||
|
||||
|
||||
def test_find_all_vendors_sort_asc(vendors: Fixture):
|
||||
|
||||
Reference in New Issue
Block a user