# -*- 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)