35 lines
1.7 KiB
Python
35 lines
1.7 KiB
Python
# pyright: reportCallIssue=false
|
||
|
||
from __future__ import annotations
|
||
|
||
from behave import then, when
|
||
|
||
from KVSTest.testdata.kvs_test_data import KVSTestData
|
||
|
||
@when("query place members for created kvs place") # pyright: ignore[reportGeneralTypeIssues]
|
||
def step_query_place_members(context) -> None:
|
||
td = KVSTestData.from_behave_context(context)
|
||
place_id = getattr(context, "kvs_place_id", None) or td.place_id
|
||
assert isinstance(place_id, str) and place_id, "Нет kvs_place_id (place не создан)."
|
||
context.kvs_place_members_response = td.query_place_members(place_id=place_id)
|
||
|
||
@then("kvs place members response has correct shape for created place") # pyright: ignore[reportGeneralTypeIssues]
|
||
def step_assert_place_members_shape(context) -> None:
|
||
td = KVSTestData.from_behave_context(context)
|
||
place_id = getattr(context, "kvs_place_id", None) or td.place_id
|
||
assert isinstance(place_id, str) and place_id, "Нет kvs_place_id."
|
||
|
||
resp = getattr(context, "kvs_place_members_response", None)
|
||
assert isinstance(resp, dict), f"Ответ GraphQL не dict: {resp!r}"
|
||
assert "data" in resp, f"В ответе нет data: {resp!r}"
|
||
place = resp.get("data", {}).get("place")
|
||
assert isinstance(place, dict), f"data.place не объект: {place!r}"
|
||
results = place.get("results")
|
||
assert isinstance(results, list) and results, f"data.place.results пустой/не list: {results!r}"
|
||
first = results[0]
|
||
assert isinstance(first, dict), f"results[0] не объект: {first!r}"
|
||
assert first.get("id") == place_id, f"Ожидали place.id={place_id!r}, получили: {first.get('id')!r}"
|
||
members = first.get("members")
|
||
assert isinstance(members, list), f"members не list: {members!r}"
|
||
|