feat(v2): streamline saved searches and favorites flows
This commit is contained in:
@ -15,6 +15,20 @@ def test_scouting_index_requires_login(client):
|
||||
assert reverse("users:login") in response.url
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_saved_search_list_requires_login(client):
|
||||
response = client.get(reverse("scouting:saved_search_list"))
|
||||
assert response.status_code == 302
|
||||
assert reverse("users:login") in response.url
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_watchlist_requires_login(client):
|
||||
response = client.get(reverse("scouting:watchlist"))
|
||||
assert response.status_code == 302
|
||||
assert reverse("users:login") in response.url
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_create_saved_search_from_filters(client):
|
||||
user = User.objects.create_user(username="scout", password="pass12345")
|
||||
@ -60,6 +74,60 @@ def test_saved_search_run_redirects_to_players(client):
|
||||
assert "q=rossi" in response.url
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_saved_search_update_renames_and_updates_filters(client):
|
||||
user = User.objects.create_user(username="scout-update", password="pass12345")
|
||||
client.force_login(user)
|
||||
nationality = Nationality.objects.create(name="Germany", iso2_code="DE", iso3_code="DEU")
|
||||
|
||||
saved = SavedSearch.objects.create(
|
||||
user=user,
|
||||
name="Old Name",
|
||||
filters={"q": "old", "sort": "name_asc"},
|
||||
is_public=False,
|
||||
)
|
||||
|
||||
response = client.post(
|
||||
reverse("scouting:saved_search_edit", kwargs={"pk": saved.pk}),
|
||||
data={
|
||||
"name": "Updated Name",
|
||||
"is_public": "on",
|
||||
"filters_json": '{"q": "new", "nationality": %d, "sort": "ppg_desc"}' % nationality.id,
|
||||
},
|
||||
)
|
||||
assert response.status_code == 302
|
||||
saved.refresh_from_db()
|
||||
assert saved.name == "Updated Name"
|
||||
assert saved.is_public is True
|
||||
assert saved.filters["q"] == "new"
|
||||
assert saved.filters["nationality"] == nationality.id
|
||||
assert saved.filters["sort"] == "ppg_desc"
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_saved_search_delete_removes_entry(client):
|
||||
user = User.objects.create_user(username="scout-delete", password="pass12345")
|
||||
client.force_login(user)
|
||||
saved = SavedSearch.objects.create(user=user, name="Delete Me", filters={"q": "x"})
|
||||
response = client.post(reverse("scouting:saved_search_delete", kwargs={"pk": saved.pk}))
|
||||
assert response.status_code == 302
|
||||
assert not SavedSearch.objects.filter(pk=saved.pk).exists()
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_saved_search_delete_htmx_renders_table(client):
|
||||
user = User.objects.create_user(username="scout-delete-htmx", password="pass12345")
|
||||
client.force_login(user)
|
||||
saved = SavedSearch.objects.create(user=user, name="Delete HTMX", filters={"q": "x"})
|
||||
response = client.post(
|
||||
reverse("scouting:saved_search_delete", kwargs={"pk": saved.pk}),
|
||||
HTTP_HX_REQUEST="true",
|
||||
)
|
||||
assert response.status_code == 200
|
||||
body = response.content.decode().lower()
|
||||
assert "no saved searches yet" in body
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_favorite_toggle_adds_and_removes(client):
|
||||
user = User.objects.create_user(username="scout3", password="pass12345")
|
||||
@ -128,3 +196,26 @@ def test_save_search_htmx_feedback(client):
|
||||
|
||||
assert response.status_code == 200
|
||||
assert "created" in response.content.decode().lower()
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_watchlist_page_renders_favorite_player(client):
|
||||
user = User.objects.create_user(username="watch-user", password="pass12345")
|
||||
client.force_login(user)
|
||||
nationality = Nationality.objects.create(name="Poland", iso2_code="PL", iso3_code="POL")
|
||||
position = Position.objects.create(code="C", name="Center")
|
||||
role = Role.objects.create(code="rim", name="Rim Protector")
|
||||
player = Player.objects.create(
|
||||
first_name="Adam",
|
||||
last_name="Big",
|
||||
full_name="Adam Big",
|
||||
birth_date=date(2001, 1, 1),
|
||||
nationality=nationality,
|
||||
nominal_position=position,
|
||||
inferred_role=role,
|
||||
)
|
||||
FavoritePlayer.objects.create(user=user, player=player)
|
||||
|
||||
response = client.get(reverse("scouting:watchlist"))
|
||||
assert response.status_code == 200
|
||||
assert "Adam Big" in response.content.decode()
|
||||
|
||||
Reference in New Issue
Block a user