feat(v2-api): expose sortable search metrics in player list responses
This commit is contained in:
@ -30,6 +30,12 @@ def test_players_api_list_and_detail(client):
|
||||
list_response = client.get(reverse("api:players"), data={"q": "rossi"})
|
||||
assert list_response.status_code == 200
|
||||
assert list_response.json()["count"] == 1
|
||||
list_payload = list_response.json()
|
||||
assert "sort" in list_payload
|
||||
assert "metric_semantics" in list_payload
|
||||
assert "metric_sort_keys" in list_payload
|
||||
assert "ppg_value" in list_payload["results"][0]
|
||||
assert "mpg_value" in list_payload["results"][0]
|
||||
|
||||
detail_response = client.get(reverse("api:player_detail", kwargs={"pk": player.pk}))
|
||||
assert detail_response.status_code == 200
|
||||
@ -173,8 +179,33 @@ def test_players_api_metric_sort_uses_best_eligible_values(client):
|
||||
|
||||
response = client.get(reverse("api:players"), data={"sort": "ppg_desc"})
|
||||
assert response.status_code == 200
|
||||
names = [row["full_name"] for row in response.json()["results"]]
|
||||
payload = response.json()
|
||||
names = [row["full_name"] for row in payload["results"]]
|
||||
assert names.index("Dan High") < names.index("Ion Low")
|
||||
assert payload["sort"] == "ppg_desc"
|
||||
assert "best eligible values per player" in payload["metric_semantics"]
|
||||
dan = next(row for row in payload["results"] if row["full_name"] == "Dan High")
|
||||
ion = next(row for row in payload["results"] if row["full_name"] == "Ion Low")
|
||||
assert float(dan["ppg_value"]) > float(ion["ppg_value"])
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_players_api_metric_fields_are_exposed_and_nullable(client):
|
||||
nationality = Nationality.objects.create(name="Sweden", iso2_code="SE", iso3_code="SWE")
|
||||
Player.objects.create(
|
||||
first_name="No",
|
||||
last_name="Stats",
|
||||
full_name="No Stats",
|
||||
birth_date=date(2002, 1, 1),
|
||||
nationality=nationality,
|
||||
)
|
||||
|
||||
response = client.get(reverse("api:players"), data={"sort": "name_asc"})
|
||||
assert response.status_code == 200
|
||||
payload = response.json()
|
||||
row = next(item for item in payload["results"] if item["full_name"] == "No Stats")
|
||||
assert row["ppg_value"] is None
|
||||
assert row["mpg_value"] is None
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
||||
Reference in New Issue
Block a user