93 lines
3.0 KiB
Python
93 lines
3.0 KiB
Python
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,
|
|
)
|