availabili.tf/backend-flask/tests/conftest.py

127 lines
3.0 KiB
Python

import datetime
from flask import Blueprint
import pytest
import app_db
from unittest.mock import patch
from models.auth_session import AuthSession
from models.event import Event
from models.player import Player
from models.player_event import PlayerEvent
from models.player_team import PlayerTeam
from models.player_team_role import PlayerTeamRole
from models.team import Team
from models.team_integration import TeamLogsTfIntegration
@pytest.fixture()
def app():
flask_app = app_db.create_app()
flask_app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"
db = app_db.db
import login
import schedule
import team
import user
import events
import match
api = Blueprint("api", __name__, url_prefix="/api")
api.register_blueprint(login.api_login)
api.register_blueprint(schedule.api_schedule)
api.register_blueprint(team.api_team)
api.register_blueprint(user.api_user)
api.register_blueprint(events.api_events)
api.register_blueprint(match.api_match)
flask_app.register_blueprint(api)
db.init_app(flask_app)
with flask_app.app_context():
db.create_all()
populate_db(db)
yield flask_app
db.session.remove()
db.drop_all()
@pytest.fixture()
def client(app):
return app.test_client()
@pytest.fixture
def mock_get():
with patch("requests.get") as _mock_get:
yield _mock_get
@pytest.fixture
def mock_post():
with patch("requests.post") as _mock_post:
yield _mock_post
@pytest.fixture
def headers():
return {
"Content-Type": "application/json",
"Accept": "application/json",
"Cookie": "auth=test_key",
}
def populate_db(db):
player = Player(steam_id=76561198248436608, username="pyro from csgo")
team = Team(team_name="Team Pepeja", tz_timezone="America/New_York", minute_offset=30)
db.session.add(player)
db.session.add(team)
db.session.flush()
player_team = PlayerTeam(
player_id=player.steam_id,
team_id=team.id,
team_role=PlayerTeam.TeamRole.Player,
is_team_leader=True,
)
logs_tf_integration = TeamLogsTfIntegration(
team_id=team.id,
min_team_member_count=2,
)
db.session.add(player_team)
db.session.add(logs_tf_integration)
auth_session = AuthSession(
player_id=player.steam_id,
key="test_key",
)
db.session.add(auth_session)
event = Event(
team_id=team.id,
name="Test event",
description="Test description",
start_time=datetime.datetime.now(datetime.timezone.utc),
)
db.session.add(event)
db.session.flush()
player_event = PlayerEvent(
event_id=event.id,
player_id=76561198248436608,
player_team_role_id=1,
)
ptr = PlayerTeamRole(
player_team_id=player_team.id,
role=PlayerTeamRole.Role.PocketSoldier,
is_main=True,
)
db.session.add(player_event)
db.session.add(ptr)
db.session.commit()