feat: add scouting shortlist mvp
This commit is contained in:
@ -5,7 +5,7 @@ from django.core.management import call_command
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from .models import Competition, Player, PlayerSeason, PlayerSeasonStats, Role, Season, Specialty, Team
|
||||
from .models import Competition, FavoritePlayer, Player, PlayerSeason, PlayerSeasonStats, Role, Season, Specialty, Team
|
||||
|
||||
|
||||
class ScoutingSearchViewsTests(TestCase):
|
||||
@ -411,3 +411,67 @@ class SeedScoutingDataCommandTests(TestCase):
|
||||
self.assertEqual(PlayerSeasonStats.objects.count(), first_counts["stats"])
|
||||
self.assertEqual(Role.objects.count(), first_counts["roles"])
|
||||
self.assertEqual(Specialty.objects.count(), first_counts["specialties"])
|
||||
|
||||
|
||||
class FavoritePlayerViewsTests(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.player = Player.objects.create(
|
||||
full_name="Favorite Prospect",
|
||||
birth_date=date(2001, 4, 4),
|
||||
position="PG",
|
||||
height_cm=Decimal("187.00"),
|
||||
weight_kg=Decimal("81.00"),
|
||||
)
|
||||
cls.other_player = Player.objects.create(
|
||||
full_name="Other Prospect",
|
||||
birth_date=date(2000, 6, 6),
|
||||
position="SF",
|
||||
height_cm=Decimal("202.00"),
|
||||
weight_kg=Decimal("94.00"),
|
||||
)
|
||||
|
||||
def test_adding_player_to_favorites(self):
|
||||
response = self.client.post(
|
||||
reverse("scouting:add_favorite", args=[self.player.id]),
|
||||
{"next": reverse("scouting:player_detail", args=[self.player.id])},
|
||||
)
|
||||
|
||||
self.assertRedirects(response, reverse("scouting:player_detail", args=[self.player.id]))
|
||||
self.assertTrue(FavoritePlayer.objects.filter(player=self.player).exists())
|
||||
|
||||
def test_removing_player_from_favorites(self):
|
||||
FavoritePlayer.objects.create(player=self.player)
|
||||
|
||||
response = self.client.post(
|
||||
reverse("scouting:remove_favorite", args=[self.player.id]),
|
||||
{"next": reverse("scouting:favorites_list")},
|
||||
)
|
||||
|
||||
self.assertRedirects(response, reverse("scouting:favorites_list"))
|
||||
self.assertFalse(FavoritePlayer.objects.filter(player=self.player).exists())
|
||||
|
||||
def test_favorites_list_page_loads(self):
|
||||
FavoritePlayer.objects.create(player=self.player)
|
||||
|
||||
response = self.client.get(reverse("scouting:favorites_list"))
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, "Favorite Prospect")
|
||||
|
||||
def test_favorite_state_is_visible_on_detail_and_search_pages(self):
|
||||
FavoritePlayer.objects.create(player=self.player)
|
||||
|
||||
detail_response = self.client.get(reverse("scouting:player_detail", args=[self.player.id]))
|
||||
list_response = self.client.get(reverse("scouting:player_list"))
|
||||
|
||||
self.assertContains(detail_response, "On the shared development shortlist.")
|
||||
self.assertContains(detail_response, "Remove from shortlist")
|
||||
self.assertContains(list_response, "Shortlisted")
|
||||
|
||||
def test_search_and_detail_pages_still_load_after_favorites_integration(self):
|
||||
search_response = self.client.get(reverse("scouting:player_list"))
|
||||
detail_response = self.client.get(reverse("scouting:player_detail", args=[self.player.id]))
|
||||
|
||||
self.assertEqual(search_response.status_code, 200)
|
||||
self.assertEqual(detail_response.status_code, 200)
|
||||
|
||||
Reference in New Issue
Block a user