From 650a7c55a9cc0cf457e87bc567b14524856d1ac5 Mon Sep 17 00:00:00 2001 From: genewoo Date: Thu, 5 Jun 2025 14:55:23 +0800 Subject: [PATCH] fix chart bucket sizing --- src/hrm/bt_client.py | 2 +- tests/mcp/test_bt_client.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/hrm/bt_client.py b/src/hrm/bt_client.py index 759b6cf..29f4efb 100644 --- a/src/hrm/bt_client.py +++ b/src/hrm/bt_client.py @@ -222,7 +222,7 @@ def build_heart_rate_chart(self, since_from: float = 600.0) -> str: bucket_len = since_from / bucket_size if bucket_len > 60: - bucket_size = int(since_from / 60) + bucket_size = math.ceil(since_from / 60) else: bucket_size = 1 data = self.get_heart_rate_bucket( diff --git a/tests/mcp/test_bt_client.py b/tests/mcp/test_bt_client.py index d01c07e..3d72dba 100644 --- a/tests/mcp/test_bt_client.py +++ b/tests/mcp/test_bt_client.py @@ -198,6 +198,20 @@ def fake_savefig(buf, format=None): mock_plt.savefig.assert_called() +@patch("hrm.bt_client.upload_file", return_value="http://fake.url/chart.png") +@patch("hrm.bt_client.plt") +def test_build_heart_rate_chart_bucket_size(mock_plt, mock_upload_file, bt_client): + with patch.object( + bt_client, + "get_heart_rate_bucket", + return_value=[{"time": 1, "value": 60}], + ) as mock_bucket: + since = 100.0 + url = bt_client.build_heart_rate_chart(since_from=since) + assert url == "http://fake.url/chart.png" + mock_bucket.assert_called_once_with(since_from=since, bucket_size=math.ceil(since / 60)) + + def test_upload_file_success(monkeypatch): # Set up environment variables monkeypatch.setenv("QINIU_ACCESS_KEY", "fake_key")