phase8: expand test coverage and refine docs with gitflow milestones

This commit is contained in:
Alfredo Di Stasio
2026-03-10 11:23:23 +01:00
parent fa4c901bc1
commit 078cedff8b
10 changed files with 625 additions and 74 deletions

View File

@ -0,0 +1,92 @@
from datetime import date
import pytest
from django.contrib.auth.models import User
from django.db import IntegrityError
from apps.competitions.models import Competition
from apps.players.models import Nationality, Player, Position, Role
from apps.providers.models import ExternalMapping
from apps.scouting.models import FavoritePlayer, SavedSearch
@pytest.mark.django_db
def test_player_unique_full_name_birth_date_constraint():
nationality = Nationality.objects.create(name="Italy", iso2_code="IT", iso3_code="ITA")
position = Position.objects.create(code="PG", name="Point Guard")
role = Role.objects.create(code="playmaker", name="Playmaker")
Player.objects.create(
first_name="Marco",
last_name="Rossi",
full_name="Marco Rossi",
birth_date=date(2001, 1, 1),
nationality=nationality,
nominal_position=position,
inferred_role=role,
)
with pytest.raises(IntegrityError):
Player.objects.create(
first_name="Marco",
last_name="Rossi",
full_name="Marco Rossi",
birth_date=date(2001, 1, 1),
nationality=nationality,
nominal_position=position,
inferred_role=role,
)
@pytest.mark.django_db
def test_saved_search_unique_name_per_user_constraint():
user = User.objects.create_user(username="u1", password="pass12345")
SavedSearch.objects.create(user=user, name="My Search", filters={"q": "rossi"})
with pytest.raises(IntegrityError):
SavedSearch.objects.create(user=user, name="My Search", filters={"q": "martin"})
@pytest.mark.django_db
def test_favorite_unique_player_per_user_constraint():
user = User.objects.create_user(username="u2", password="pass12345")
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="Perez",
full_name="Juan Perez",
birth_date=date(2000, 5, 1),
nationality=nationality,
nominal_position=position,
inferred_role=role,
)
FavoritePlayer.objects.create(user=user, player=player)
with pytest.raises(IntegrityError):
FavoritePlayer.objects.create(user=user, player=player)
@pytest.mark.django_db
def test_external_mapping_unique_provider_external_id_constraint():
competition = Competition.objects.create(
name="Liga ACB",
slug="liga-acb",
competition_type=Competition.CompetitionType.LEAGUE,
gender=Competition.Gender.MEN,
level=1,
)
ExternalMapping.objects.create(
provider_namespace="mvp_demo",
external_id="comp-001",
content_object=competition,
)
with pytest.raises(IntegrityError):
ExternalMapping.objects.create(
provider_namespace="mvp_demo",
external_id="comp-001",
content_object=competition,
)