diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-01-14 22:15:21 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-01-14 22:15:21 +0100 |
| commit | c70a290673467379230c327a713a4776df5abb6f (patch) | |
| tree | e58b609609337087e9359b7bb9638028a95f5739 | |
| parent | 1de9a2eb9ba73a31ee550873245ba1ed954638c7 (diff) | |
| download | python-gamelocker-c70a290673467379230c327a713a4776df5abb6f.tar.gz python-gamelocker-c70a290673467379230c327a713a4776df5abb6f.zip | |
add tests and drafts for more match filters
| -rw-r--r-- | gamelocker/api.py | 23 | ||||
| -rw-r--r-- | tests/gamelocker_test.py | 38 |
2 files changed, 60 insertions, 1 deletions
diff --git a/gamelocker/api.py b/gamelocker/api.py index dee307d..2e4faf9 100644 --- a/gamelocker/api.py +++ b/gamelocker/api.py @@ -9,6 +9,7 @@ This module implements the Gamelocker API. """ import inspect +import datetime import requests import requests_jwt import gamelocker.datatypes @@ -139,7 +140,10 @@ class Gamelocker(object): """ return self._get("players", elid) - def matches(self, limit=None, offset=None, sort=None): + def matches(self, + limit=None, offset=None, sort=None, + player=None, team=None, + createdAtStart=None, createdAtEnd=None): """Returns a list of recent matches. :param limit: Maximum number of matches to return. @@ -148,6 +152,10 @@ class Gamelocker(object): :type limit: int :param sort: Sort query to use. :type sort: str + :param createdAtStart: Earliest createdAt time. + :type createdAtStart: `datetime.datetime` or str + :param createdAtEnd: Latest createdAt time. + :type createdAtEnd: `datetime.datetime` or str :return: List of matches. :rtype: list of dict """ @@ -159,4 +167,17 @@ class Gamelocker(object): params["page[offset]"] = offset if sort: # TODO make this nice and usable params["sort"] = sort + if player: + params["filter[playerName]"] = player + if team: + params["filter[teamName]"] = team + if createdAtStart: + if isinstance(createdAtStart, datetime.datetime): + createdAtStart = createdAtStart.isoformat() + params["filter[createdAt-start]"] = createdAtStart + if createdAtEnd: + if isinstance(createdAtEnd, datetime.datetime): + createdAtEnd = createdAtEnd.isoformat() + params["filter[createdAt-end]"] = createdAtEnd + return self._get("matches", params=params) diff --git a/tests/gamelocker_test.py b/tests/gamelocker_test.py index 0b61d8f..d9f967d 100644 --- a/tests/gamelocker_test.py +++ b/tests/gamelocker_test.py @@ -3,6 +3,7 @@ import pytest import requests import gamelocker +import datetime class TestGamelocker: apikey = "aaa.bbb.ccc" @@ -29,13 +30,50 @@ class TestGamelocker: assert isinstance(match.rosters[0].participants[0].player, gamelocker.datatypes.Player) assert isinstance(match.rosters[0].participants[0].player.name, str) + def test_matches(self, api): matches = api.matches() assert len(matches) > 0 assert isinstance(matches[0], gamelocker.datatypes.Match) assert matches[0].duration > 0 + def test_matchesfilters(self, api): assert len(api.matches(limit=5)) == 5 + # TODO uncomment as soon as the API is up +# matches = api.matches(limit=10, sort="duration") +# assert matches[0].duration < matches[9].duration + + def fromiso(s): + return datetime.datetime.strptime(s, "%Y-%m-%dT%H:%M:%SZ") + + start = "2017-01-11T02:25:00Z" + end = "2017-01-11T02:30:00Z" + matches = api.matches(createdAtStart=start, createdAtEnd=end) + for match in matches: + assert fromiso(end) >= fromiso(match.createdAt) >= fromiso(start) + +# nick = "MMotooks123" +# matches = api.matches(limit=5, player=nick) +# for match in matches: +# success = False +# for roster in match.rosters: +# for participant in roster.participants: +# if participant.player.name == nick: +# success = True +# break +# assert success +# +# team = "HALO" +# matches = api.matches(limit=5, team=team) +# for match in matches: +# success = False +# for roster in match.rosters: +# if roster.team: +# if roster.team.name == team: +# success = True +# break +# assert success + def test_player(self, api): assert api.player("6abb30de-7cb8-11e4-8bd3-06eb725f8a76").name == "boombastic04" assert "lossStreak" in api.player("6abb30de-7cb8-11e4-8bd3-06eb725f8a76").stats |
