|
1 | | -import asynctest |
2 | | -import asyncio |
3 | 1 | import os |
4 | 2 |
|
| 3 | +import aiohttp |
| 4 | +import asynctest |
5 | 5 | import brawlstats |
6 | | -from brawlstats.models import BattleLog, Club, Constants, Members, Ranking |
7 | | -from dotenv import load_dotenv, find_dotenv |
| 6 | +import pytest |
| 7 | +from dotenv import load_dotenv |
8 | 8 |
|
9 | | -load_dotenv(find_dotenv('.env')) |
10 | | - |
11 | | -TOKEN = os.getenv('token') |
12 | | -URL = os.getenv('base_url') |
| 9 | +pytestmark = pytest.mark.asyncio |
| 10 | +load_dotenv() |
13 | 11 |
|
14 | 12 |
|
15 | 13 | class TestAsyncClient(asynctest.TestCase): |
16 | | - """Tests all methods in the asynchronous client that |
17 | | - uses the `aiohttp` module in `brawlstats` |
18 | | - """ |
| 14 | + use_default_loop = True |
| 15 | + |
| 16 | + PLAYER_TAG = '#GGJVJLU2' |
| 17 | + CLUB_TAG = '#QCCQCGV' |
| 18 | + |
19 | 19 | async def setUp(self): |
20 | | - self.player_tag = '#GGJVJLU2' |
21 | | - self.club_tag = '#QCGV8PG' |
| 20 | + session = aiohttp.ClientSession(loop=self.loop) |
| 21 | + |
22 | 22 | self.client = brawlstats.Client( |
23 | | - TOKEN, |
| 23 | + os.getenv('token'), |
| 24 | + base_url=os.getenv('base_url'), |
24 | 25 | is_async=True, |
25 | | - base_url=URL, |
26 | | - timeout=30 |
| 26 | + session=session |
27 | 27 | ) |
28 | 28 |
|
29 | | - async def tearDown(self): |
30 | | - await asyncio.sleep(1) |
31 | | - await self.client.close() |
32 | | - |
33 | 29 | async def test_get_player(self): |
34 | | - player = await self.client.get_player(self.player_tag) |
35 | | - self.assertEqual(player.tag, self.player_tag) |
| 30 | + player = await self.client.get_player(self.PLAYER_TAG) |
| 31 | + self.assertIsInstance(player, brawlstats.Player) |
| 32 | + self.assertEqual(player.tag, self.PLAYER_TAG) |
36 | 33 |
|
37 | 34 | club = await player.get_club() |
38 | | - self.assertIsInstance(club, Club) |
| 35 | + self.assertIsInstance(club, brawlstats.Club) |
| 36 | + self.assertEqual(club.tag, self.CLUB_TAG) |
| 37 | + |
| 38 | + with self.assertRaises(brawlstats.NotFoundError): |
| 39 | + await self.client.get_player('2PPPPPPP') |
| 40 | + |
| 41 | + with self.assertRaises(brawlstats.NotFoundError): |
| 42 | + await self.client.get_player('P') |
| 43 | + |
| 44 | + with self.assertRaises(brawlstats.NotFoundError): |
| 45 | + await self.client.get_player('AAA') |
| 46 | + |
| 47 | + async def test_get_battle_logs(self): |
| 48 | + battle_logs = await self.client.get_battle_logs(self.PLAYER_TAG) |
| 49 | + self.assertIsInstance(battle_logs, brawlstats.BattleLog) |
39 | 50 |
|
40 | 51 | async def test_get_club(self): |
41 | | - club = await self.client.get_club(self.club_tag) |
42 | | - self.assertEqual(club.tag, self.club_tag) |
| 52 | + club = await self.client.get_club(self.CLUB_TAG) |
| 53 | + self.assertIsInstance(club, brawlstats.Club) |
| 54 | + self.assertEqual(club.tag, self.CLUB_TAG) |
| 55 | + |
| 56 | + club_members = await club.get_members() |
| 57 | + self.assertIsInstance(club_members, brawlstats.Members) |
| 58 | + self.assertIn(self.PLAYER_TAG, [x.tag for x in club_members]) |
| 59 | + |
| 60 | + with self.assertRaises(brawlstats.NotFoundError): |
| 61 | + await self.client.get_club('8GGGGGGG') |
| 62 | + |
| 63 | + with self.assertRaises(brawlstats.NotFoundError): |
| 64 | + await self.client.get_club('P') |
43 | 65 |
|
44 | | - members = await club.get_members() |
45 | | - self.assertIsInstance(members, Members) |
| 66 | + with self.assertRaises(brawlstats.NotFoundError): |
| 67 | + await self.client.get_club('AAA') |
46 | 68 |
|
47 | 69 | async def test_get_club_members(self): |
48 | | - members = await self.client.get_club_members(self.club_tag) |
49 | | - self.assertIsInstance(members, Members) |
50 | | - |
51 | | - async def test_get_rankings_player(self): |
52 | | - rankings = await self.client.get_rankings(ranking='players') |
53 | | - self.assertIsInstance(rankings, Ranking) |
54 | | - region = await self.client.get_rankings(ranking='players', region='us') |
55 | | - self.assertIsInstance(region, Ranking) |
56 | | - |
57 | | - async def test_get_rankings_club(self): |
58 | | - rankings = await self.client.get_rankings(ranking='clubs') |
59 | | - self.assertIsInstance(rankings, Ranking) |
60 | | - limit = await self.client.get_rankings(ranking='clubs', limit=100) |
61 | | - self.assertTrue(len(limit) == 100) |
62 | | - |
63 | | - async def test_get_rankings_brawler(self): |
64 | | - rankings = await self.client.get_rankings(ranking='brawlers', brawler='shelly') |
65 | | - self.assertIsInstance(rankings, Ranking) |
66 | | - rankings = await self.client.get_rankings(ranking='brawlers', brawler=16000000) |
67 | | - self.assertIsInstance(rankings, Ranking) |
| 70 | + club_members = await self.client.get_club_members(self.CLUB_TAG) |
| 71 | + self.assertIsInstance(club_members, brawlstats.Members) |
| 72 | + self.assertIn(self.PLAYER_TAG, [x.tag for x in club_members]) |
| 73 | + |
| 74 | + await self.assertAsyncRaises(brawlstats.NotFoundError, self.client.get_club_members('8GGGGGGG')) |
| 75 | + |
| 76 | + async def test_get_rankings(self): |
| 77 | + player_ranking = await self.client.get_rankings(ranking='players') |
| 78 | + self.assertIsInstance(player_ranking, brawlstats.Ranking) |
| 79 | + |
| 80 | + us_player_ranking = await self.client.get_rankings(ranking='players', region='US', limit=1) |
| 81 | + self.assertIsInstance(us_player_ranking, brawlstats.Ranking) |
| 82 | + self.assertTrue(len(us_player_ranking) == 1) |
| 83 | + |
| 84 | + club_ranking = await self.client.get_rankings(ranking='clubs') |
| 85 | + self.assertIsInstance(club_ranking, brawlstats.Ranking) |
| 86 | + |
| 87 | + us_club_ranking = await self.client.get_rankings(ranking='clubs', region='US', limit=1) |
| 88 | + self.assertIsInstance(us_club_ranking, brawlstats.Ranking) |
| 89 | + self.assertTrue(len(us_club_ranking) == 1) |
| 90 | + |
| 91 | + brawler_ranking = await self.client.get_rankings(ranking='brawlers', brawler='Shelly') |
| 92 | + self.assertIsInstance(brawler_ranking, brawlstats.Ranking) |
| 93 | + |
| 94 | + us_brawler_ranking = await self.client.get_rankings(ranking='brawlers', brawler=16000000, region='US', limit=1) |
| 95 | + self.assertIsInstance(us_brawler_ranking, brawlstats.Ranking) |
| 96 | + self.assertTrue(len(us_brawler_ranking) == 1) |
| 97 | + |
| 98 | + with self.assertRaises(ValueError): |
| 99 | + await self.client.get_rankings(ranking='people') |
| 100 | + |
| 101 | + with self.assertRaises(ValueError): |
| 102 | + await self.client.get_rankings(ranking='people', limit=0) |
| 103 | + |
| 104 | + with self.assertRaises(ValueError): |
| 105 | + await self.client.get_rankings(ranking='brawlers', brawler='SharpBit') |
68 | 106 |
|
69 | 107 | async def test_get_constants(self): |
70 | | - default = await self.client.get_constants() |
71 | | - self.assertIsInstance(default, Constants) |
| 108 | + constants = await self.client.get_constants() |
| 109 | + self.assertIsInstance(constants, brawlstats.Constants) |
| 110 | + |
72 | 111 | maps = await self.client.get_constants('maps') |
73 | | - self.assertIsInstance(maps, Constants) |
74 | | - |
75 | | - async def request(): |
76 | | - await self.get_constants(invalid_key) |
77 | | - invalid_key = 'invalid' |
78 | | - self.assertAsyncRaises(KeyError, request) |
79 | | - |
80 | | - async def test_battle_logs(self): |
81 | | - logs = await self.client.get_battle_logs(self.player_tag) |
82 | | - self.assertIsInstance(logs, BattleLog) |
83 | | - |
84 | | - async def test_invalid_tag(self): |
85 | | - async def request(): |
86 | | - await self.client.get_player(invalid_tag) |
87 | | - invalid_tag = 'P' |
88 | | - self.assertAsyncRaises(brawlstats.NotFoundError, request) |
89 | | - invalid_tag = 'AAA' |
90 | | - self.assertAsyncRaises(brawlstats.NotFoundError, request) |
91 | | - invalid_tag = '2PPPPPPP' |
92 | | - self.assertAsyncRaises(brawlstats.NotFoundError, request) |
93 | | - |
94 | | - async def test_invalid_rankings(self): |
95 | | - async def request(): |
96 | | - await self.client.get_rankings(ranking=invalid_ranking, limit=invalid_limit) |
97 | | - invalid_ranking = 'test' |
98 | | - invalid_limit = 200 |
99 | | - self.assertAsyncRaises(ValueError, request) |
100 | | - invalid_ranking = 'players' |
101 | | - invalid_limit = 201 |
102 | | - self.assertAsyncRaises(ValueError, request) |
103 | | - invalid_ranking = 'players' |
104 | | - invalid_limit = -5 |
105 | | - self.assertAsyncRaises(ValueError, request) |
| 112 | + self.assertIsInstance(maps, brawlstats.Constants) |
| 113 | + |
| 114 | + await self.assertAsyncRaises(KeyError, self.client.get_constants('invalid')) |
| 115 | + |
| 116 | + async def asyncTearDown(self): |
| 117 | + await self.client.close() |
106 | 118 |
|
107 | 119 |
|
108 | 120 | if __name__ == '__main__': |
|
0 commit comments