forked from Echo-Mirror-Butler/echomirror-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_social.py
More file actions
99 lines (82 loc) · 2.59 KB
/
Copy pathtest_social.py
File metadata and controls
99 lines (82 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import pytest
import echomirror
from conftest import route
@pytest.mark.asyncio
async def test_get_global_feed(mock_server, base_url):
route(
mock_server,
"GET",
"/social/feed",
200,
{
"entries": [
{
"id": "f1",
"score": 9,
"tags": ["gratitude"],
"country": "KE",
"city": "Nairobi",
"created_at": "2026-07-20T10:00:00Z",
}
]
},
)
client = echomirror.EchoMirrorClient("test-key", base_url=base_url)
social = echomirror.SocialClient(client)
feed = await social.get_global_feed(limit=20)
assert len(feed) == 1
assert feed[0].id == "f1"
assert feed[0].score == 9
assert feed[0].country == "KE"
req = mock_server.received[-1]
assert "limit=20" in req["path"]
@pytest.mark.asyncio
async def test_get_leaderboard(mock_server, base_url):
route(
mock_server,
"GET",
"/social/leaderboard",
200,
{
"entries": [
{
"rank": 1,
"user_id": "u1",
"display_name": "Jojo",
"avatar_url": None,
"streak": 30,
"total_entries": 120,
"echo_balance": "500.0000000",
"weekly_score": 87.5,
}
]
},
)
client = echomirror.EchoMirrorClient("test-key", base_url=base_url)
social = echomirror.SocialClient(client)
leaderboard = await social.get_leaderboard()
assert len(leaderboard) == 1
assert leaderboard[0].rank == 1
assert leaderboard[0].display_name == "Jojo"
assert leaderboard[0].weekly_score == 87.5
@pytest.mark.asyncio
async def test_get_global_feed_empty(mock_server, base_url):
route(mock_server, "GET", "/social/feed", 200, {"entries": []})
client = echomirror.EchoMirrorClient("test-key", base_url=base_url)
social = echomirror.SocialClient(client)
feed = await social.get_global_feed()
assert feed == []
@pytest.mark.asyncio
async def test_get_leaderboard_rate_limited(mock_server, base_url):
route(
mock_server,
"GET",
"/social/leaderboard",
429,
{"message": "slow down"},
headers={"retry-after": "10"},
)
client = echomirror.EchoMirrorClient("test-key", base_url=base_url)
social = echomirror.SocialClient(client)
with pytest.raises(echomirror.RateLimitError):
await social.get_leaderboard()