alabuga/backend/tests/test_mission_submission.py
2025-09-25 04:55:43 +02:00

78 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Тестируем отправку миссии."""
from __future__ import annotations
from app.models.artifact import Artifact, ArtifactRarity
from app.models.mission import Mission, MissionSubmission, SubmissionStatus
from app.models.user import User, UserRole
from app.services.mission import approve_submission
def test_approve_submission_rewards(db_session):
"""После одобрения пилот получает награды."""
mission = Mission(title="Сборка спутника", description="Практика", xp_reward=150, mana_reward=90)
user = User(
email="pilot@alabuga.space",
full_name="Пилот",
role=UserRole.PILOT,
hashed_password="hash",
)
db_session.add_all([mission, user])
db_session.flush()
submission = MissionSubmission(user_id=user.id, mission_id=mission.id)
db_session.add(submission)
db_session.commit()
db_session.refresh(submission)
db_session.refresh(user)
approve_submission(db_session, submission)
db_session.refresh(user)
assert user.xp == mission.xp_reward
assert user.mana == mission.mana_reward
assert submission.status == SubmissionStatus.APPROVED
def test_approve_submission_grants_artifact(db_session):
"""При наличии артефакта пользователь получает его единожды."""
artifact = Artifact(
name="Значок испытателя",
description="Выдан за успешную миссию",
rarity=ArtifactRarity.RARE,
)
mission = Mission(
title="Тестовая миссия",
description="Описание",
xp_reward=50,
mana_reward=20,
artifact=artifact,
)
user = User(
email="artifact@alabuga.space",
full_name="Пилот",
role=UserRole.PILOT,
hashed_password="hash",
)
db_session.add_all([artifact, mission, user])
db_session.flush()
submission = MissionSubmission(user_id=user.id, mission_id=mission.id)
db_session.add(submission)
db_session.commit()
db_session.refresh(submission)
approve_submission(db_session, submission)
db_session.refresh(user)
assert len(user.artifacts) == 1
assert user.artifacts[0].artifact_id == artifact.id
# Повторное одобрение не создаёт дубли
approve_submission(db_session, submission)
db_session.refresh(user)
assert len(user.artifacts) == 1