phase5: add saved searches, watchlist, and authenticated htmx flows
This commit is contained in:
87
tests/test_scouting_views.py
Normal file
87
tests/test_scouting_views.py
Normal file
@ -0,0 +1,87 @@
|
||||
from datetime import date
|
||||
|
||||
import pytest
|
||||
from django.contrib.auth.models import User
|
||||
from django.urls import reverse
|
||||
|
||||
from apps.players.models import Nationality, Player, Position, Role
|
||||
from apps.scouting.models import FavoritePlayer, SavedSearch
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_scouting_index_requires_login(client):
|
||||
response = client.get(reverse("scouting:index"))
|
||||
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")
|
||||
client.force_login(user)
|
||||
|
||||
nationality = Nationality.objects.create(name="Italy", iso2_code="IT", iso3_code="ITA")
|
||||
position = Position.objects.create(code="PG", name="Point Guard")
|
||||
|
||||
response = client.post(
|
||||
reverse("scouting:saved_search_create"),
|
||||
data={
|
||||
"name": "Italian guards",
|
||||
"is_public": "on",
|
||||
"q": "marco",
|
||||
"nominal_position": str(position.id),
|
||||
"nationality": str(nationality.id),
|
||||
"age_max": "24",
|
||||
"sort": "ppg_desc",
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
saved = SavedSearch.objects.get(user=user, name="Italian guards")
|
||||
assert saved.filters["q"] == "marco"
|
||||
assert saved.filters["nominal_position"] == position.id
|
||||
assert saved.filters["nationality"] == nationality.id
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_saved_search_run_redirects_to_players(client):
|
||||
user = User.objects.create_user(username="scout2", password="pass12345")
|
||||
client.force_login(user)
|
||||
|
||||
saved = SavedSearch.objects.create(
|
||||
user=user,
|
||||
name="Run me",
|
||||
filters={"q": "rossi", "sort": "name_asc"},
|
||||
)
|
||||
|
||||
response = client.get(reverse("scouting:saved_search_run", kwargs={"pk": saved.pk}))
|
||||
assert response.status_code == 302
|
||||
assert response.url.startswith(reverse("players:index"))
|
||||
assert "q=rossi" in response.url
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_favorite_toggle_adds_and_removes(client):
|
||||
user = User.objects.create_user(username="scout3", password="pass12345")
|
||||
client.force_login(user)
|
||||
|
||||
nationality = Nationality.objects.create(name="Spain", iso2_code="ES", iso3_code="ESP")
|
||||
position = Position.objects.create(code="SF", name="Small Forward")
|
||||
role = Role.objects.create(code="wing", name="Wing")
|
||||
player = Player.objects.create(
|
||||
first_name="Juan",
|
||||
last_name="Ramos",
|
||||
full_name="Juan Ramos",
|
||||
birth_date=date(2000, 1, 1),
|
||||
nationality=nationality,
|
||||
nominal_position=position,
|
||||
inferred_role=role,
|
||||
)
|
||||
|
||||
add_resp = client.post(reverse("scouting:favorite_toggle", kwargs={"player_id": player.id}))
|
||||
assert add_resp.status_code == 302
|
||||
assert FavoritePlayer.objects.filter(user=user, player=player).exists()
|
||||
|
||||
remove_resp = client.post(reverse("scouting:favorite_toggle", kwargs={"player_id": player.id}))
|
||||
assert remove_resp.status_code == 302
|
||||
assert not FavoritePlayer.objects.filter(user=user, player=player).exists()
|
||||
Reference in New Issue
Block a user