Skip to content

Commit a3a4bdf

Browse files
committed
Continue standardizing on mock_response_factory
- Update more test files to use mock_response_factory consistently - Replace direct manipulations of mock_response with factory usage in: - nutrition/test_get_food.py - nutrition/test_get_food_goals.py - friends/test_get_friends_leaderboard.py - nutrition/test_delete_meal.py - activity_timeseries/test_get_activity_timeseries.py - active_zone_minutes/test_get_azm_timeseries_by_date.py
1 parent cc16485 commit a3a4bdf

6 files changed

Lines changed: 68 additions & 52 deletions

File tree

tests/fitbit_client/resources/active_zone_minutes/test_get_azm_timeseries_by_date.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,24 @@
1313
from fitbit_client.resources._constants import Period
1414

1515

16-
def test_get_azm_timeseries_by_date_success(azm_resource, mock_response):
16+
def test_get_azm_timeseries_by_date_success(azm_resource, mock_response_factory):
1717
"""Test successful retrieval of AZM time series by date with default period"""
18-
mock_response.json.return_value = {
19-
"activities-active-zone-minutes": [
20-
{
21-
"dateTime": "2025-02-01",
22-
"value": {
23-
"activeZoneMinutes": 102,
24-
"fatBurnActiveZoneMinutes": 90,
25-
"cardioActiveZoneMinutes": 8,
26-
"peakActiveZoneMinutes": 4,
27-
},
28-
}
29-
]
30-
}
18+
mock_response = mock_response_factory(
19+
200,
20+
{
21+
"activities-active-zone-minutes": [
22+
{
23+
"dateTime": "2025-02-01",
24+
"value": {
25+
"activeZoneMinutes": 102,
26+
"fatBurnActiveZoneMinutes": 90,
27+
"cardioActiveZoneMinutes": 8,
28+
"peakActiveZoneMinutes": 4,
29+
},
30+
}
31+
]
32+
},
33+
)
3134
azm_resource.oauth.request.return_value = mock_response
3235
result = azm_resource.get_azm_timeseries_by_date(date="2025-02-01")
3336
assert result == mock_response.json.return_value
@@ -41,9 +44,9 @@ def test_get_azm_timeseries_by_date_success(azm_resource, mock_response):
4144
)
4245

4346

44-
def test_get_azm_timeseries_by_date_explicit_period(azm_resource, mock_response):
47+
def test_get_azm_timeseries_by_date_explicit_period(azm_resource, mock_response_factory):
4548
"""Test successful retrieval of AZM time series by date with explicit ONE_DAY period"""
46-
mock_response.json.return_value = {"activities-active-zone-minutes": []}
49+
mock_response = mock_response_factory(200, {"activities-active-zone-minutes": []})
4750
azm_resource.oauth.request.return_value = mock_response
4851
result = azm_resource.get_azm_timeseries_by_date(date="2025-02-01", period=Period.ONE_DAY)
4952
assert result == mock_response.json.return_value
@@ -57,9 +60,9 @@ def test_get_azm_timeseries_by_date_explicit_period(azm_resource, mock_response)
5760
)
5861

5962

60-
def test_get_azm_timeseries_by_date_with_user_id(azm_resource, mock_response):
63+
def test_get_azm_timeseries_by_date_with_user_id(azm_resource, mock_response_factory):
6164
"""Test getting AZM time series for a specific user"""
62-
mock_response.json.return_value = {"activities-active-zone-minutes": []}
65+
mock_response = mock_response_factory(200, {"activities-active-zone-minutes": []})
6366
azm_resource.oauth.request.return_value = mock_response
6467
result = azm_resource.get_azm_timeseries_by_date(date="2025-02-01", user_id="123ABC")
6568
assert result == mock_response.json.return_value

tests/fitbit_client/resources/activity_timeseries/test_get_activity_timeseries.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
from fitbit_client.resources._constants import Period
1010

1111

12-
def test_get_activity_timeseries_with_today_date(activity_timeseries_resource, mock_response):
12+
def test_get_activity_timeseries_with_today_date(
13+
activity_timeseries_resource, mock_response_factory
14+
):
1315
"""Test using 'today' as the date parameter"""
14-
mock_response.json.return_value = {"activities-steps": []}
16+
mock_response = mock_response_factory(200, {"activities-steps": []})
1517
activity_timeseries_resource.oauth.request.return_value = mock_response
1618
activity_timeseries_resource.get_activity_timeseries_by_date(
1719
resource_path=ActivityTimeSeriesPath.STEPS, date="today", period=Period.ONE_DAY
@@ -26,9 +28,11 @@ def test_get_activity_timeseries_with_today_date(activity_timeseries_resource, m
2628
)
2729

2830

29-
def test_get_activity_timeseries_different_periods(activity_timeseries_resource, mock_response):
31+
def test_get_activity_timeseries_different_periods(
32+
activity_timeseries_resource, mock_response_factory
33+
):
3034
"""Test getting time series with different period values"""
31-
mock_response.json.return_value = {"activities-steps": []}
35+
mock_response = mock_response_factory(200, {"activities-steps": []})
3236
activity_timeseries_resource.oauth.request.return_value = mock_response
3337
periods = [
3438
Period.ONE_DAY,

tests/fitbit_client/resources/friends/test_get_friends_leaderboard.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@
33
"""Tests for the get_friends_leaderboard endpoint."""
44

55

6-
def test_get_friends_leaderboard(friends_resource, mock_oauth_session, mock_response):
6+
def test_get_friends_leaderboard(friends_resource, mock_oauth_session, mock_response_factory):
77
"""Test getting friends leaderboard"""
8-
mock_response.json.return_value = {
9-
"data": [
10-
{
11-
"type": "ranked-user",
12-
"id": "ABC123",
13-
"attributes": {"step-rank": 1, "step-summary": 50000},
14-
}
15-
],
16-
"included": [
17-
{
18-
"avatar": "http://example.com/avatar.jpg",
19-
"child": False,
20-
"friend": True,
21-
"name": "Test User",
22-
}
23-
],
24-
}
25-
mock_response.headers = {"content-type": "application/json"}
8+
mock_response = mock_response_factory(
9+
200,
10+
{
11+
"data": [
12+
{
13+
"type": "ranked-user",
14+
"id": "ABC123",
15+
"attributes": {"step-rank": 1, "step-summary": 50000},
16+
}
17+
],
18+
"included": [
19+
{
20+
"avatar": "http://example.com/avatar.jpg",
21+
"child": False,
22+
"friend": True,
23+
"name": "Test User",
24+
}
25+
],
26+
},
27+
)
2628
mock_oauth_session.request.return_value = mock_response
2729
result = friends_resource.get_friends_leaderboard()
2830
assert "data" in result

tests/fitbit_client/resources/nutrition/test_delete_meal.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"""Tests for the delete_meal endpoint."""
44

55

6-
def test_delete_meal_success(nutrition_resource, mock_response):
6+
def test_delete_meal_success(nutrition_resource, mock_response_factory):
77
"""Test successful deletion of a meal"""
8-
mock_response.status_code = 204
8+
mock_response = mock_response_factory(204)
99
nutrition_resource.oauth.request.return_value = mock_response
1010
result = nutrition_resource.delete_meal(meal_id=12345)
1111
assert result is None

tests/fitbit_client/resources/nutrition/test_get_food.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,19 @@
33
"""Tests for the get_food endpoint."""
44

55

6-
def test_get_food_success(nutrition_resource, mock_response):
6+
def test_get_food_success(nutrition_resource, mock_response_factory):
77
"""Test successful retrieval of food details"""
8-
mock_response.json.return_value = {
9-
"food": {"foodId": 12345, "name": "Test Food", "calories": 100, "defaultServingSize": 100.0}
10-
}
8+
mock_response = mock_response_factory(
9+
200,
10+
{
11+
"food": {
12+
"foodId": 12345,
13+
"name": "Test Food",
14+
"calories": 100,
15+
"defaultServingSize": 100.0,
16+
}
17+
},
18+
)
1119
nutrition_resource.oauth.request.return_value = mock_response
1220
result = nutrition_resource.get_food(food_id=12345)
1321
assert result == mock_response.json.return_value

tests/fitbit_client/resources/nutrition/test_get_food_goals.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
"""Tests for the get_food_goals endpoint."""
44

55

6-
def test_get_food_goals_success(nutrition_resource, mock_response):
6+
def test_get_food_goals_success(nutrition_resource, mock_response_factory):
77
"""Test successful retrieval of food goals"""
8-
mock_response.json.return_value = {
9-
"goals": {"calories": 2000},
10-
"foodPlan": {"intensity": "MAINTENANCE"},
11-
}
8+
mock_response = mock_response_factory(
9+
200, {"goals": {"calories": 2000}, "foodPlan": {"intensity": "MAINTENANCE"}}
10+
)
1211
nutrition_resource.oauth.request.return_value = mock_response
1312
result = nutrition_resource.get_food_goals()
1413
assert result == mock_response.json.return_value

0 commit comments

Comments
 (0)