q3stats/tests_lib/test_lib_queries.py

105 lines
3.1 KiB
Python

# -*- coding: utf-8 -*-
import datetime
from q3stats.lib import queries
from q3stats.lib.scripts import utils
from q3stats.models import Game, Score
from q3stats.testing import BaseQ3StatsTestCase
class Test_LibQueries(BaseQ3StatsTestCase):
@classmethod
def setUpClass(cls):
super(Test_LibQueries, cls).setUpClass()
with utils.db_session(cls._config) as session:
game1_dt = datetime.datetime.now() - datetime.timedelta(days=1)
game1 = Game(
uuid='game1',
map='Q3DM7',
date=game1_dt.date(),
time=game1_dt.time(),
fraglimit=20,
attrs={}
)
game1.scores.extend([
Score(
player='Player 1',
score=20,
kills=20,
deaths=0,
suicides=10,
net=0,
damage_taken=123,
damage_given=456,
total_health=123,
total_armor=456,
weapons={},
items={},
powerups={}
),
])
game2_dt = datetime.datetime.now()
game2 = Game(
uuid='game2',
map='Q3DM7',
date=game2_dt.date(),
time=game2_dt.time(),
fraglimit=10,
attrs={}
)
game2.scores.extend([
Score(
player='Player 2',
score=-10,
kills=10,
deaths=0,
suicides=20,
net=0,
damage_taken=123,
damage_given=456,
total_health=123,
total_armor=456,
weapons={},
items={},
powerups={}
),
])
session.add_all([game1, game2])
session.commit()
cls._days = [game2_dt.date(), game1_dt.date()]
def test_get_game_dates(self):
with utils.db_session(self._config) as session:
dates = queries.get_game_dates(session)
assert dates == self._days
def test_get_palyer_sessions(self):
with utils.db_session(self._config) as session:
sessions = queries.get_player_sessions(session, 'Player 1')
assert sessions == [self._days[1]]
def test_get_top_players_kills(self):
with utils.db_session(self._config) as session:
result = queries.get_top_players(session, agg_by='kills')
assert len(result) == 2
assert result[0] == ('Player 1', 20)
assert result[1] == ('Player 2', 10)
def test_get_top_players_suicides(self):
with utils.db_session(self._config) as session:
result = queries.get_top_players(session, agg_by='suicides')
assert len(result) == 2
assert result[0] == ('Player 2', 20)
assert result[1] == ('Player 1', 10)