From 2a686e96b728f0392983cb336ec4ac1f0ce319fc Mon Sep 17 00:00:00 2001 From: Dmitri Gavrilov Date: Thu, 4 Dec 2025 18:50:05 -0500 Subject: [PATCH 1/2] TST: unit tests for /history/clear with parameters --- .../tests/test_core_api_main.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/bluesky_httpserver/tests/test_core_api_main.py b/bluesky_httpserver/tests/test_core_api_main.py index 280bb0f..300610e 100644 --- a/bluesky_httpserver/tests/test_core_api_main.py +++ b/bluesky_httpserver/tests/test_core_api_main.py @@ -1235,6 +1235,51 @@ def test_http_server_plan_history(re_manager, fastapi_server): # noqa F811 assert resp3["items"] == [] +# fmt: off +@pytest.mark.parametrize("clear_params, exp_size", [ + ({}, 0), + ({"size": 2}, 2), + ({"item_uid": 1}, 2), + ({"item_uid": -1}, 4), +]) +# fmt: on +def test_http_server_history_clear(re_manager, fastapi_server, clear_params, exp_size): # noqa F811 + # Select very short plan + plan = {"item": {"name": "count", "args": [["det1", "det2"]], "item_type": "plan"}} + request_to_json("post", "/queue/item/add", json=plan) + request_to_json("post", "/queue/item/add", json=plan) + request_to_json("post", "/queue/item/add", json=plan) + request_to_json("post", "/queue/item/add", json=plan) + + request_to_json("post", "/environment/open") + assert wait_for_environment_to_be_created(10), "Timeout" + + request_to_json("post", "/queue/start") + assert wait_for_queue_execution_to_complete(10), "Timeout" + + request_to_json("post", "/environment/close") + assert wait_for_environment_to_be_closed(10), "Timeout" + + resp1 = request_to_json("get", "/history/get") + history = resp1["items"] + assert len(history) == 4 + + uids = [_["item_uid"] for _ in history] + if "item_uid" in clear_params: + n = clear_params["item_uid"] + if n >= 0: + clear_params["item_uid"] = uids[n] + else: + clear_params["item_uid"] = "non-existing-uid" + + resp2 = request_to_json("post", "/history/clear", json=clear_params) + assert resp2["success"] is True + + resp3 = request_to_json("get", "/history/get") + history2 = resp3["items"] + assert len(history2) == exp_size + + def test_http_server_manager_kill(re_manager, fastapi_server): # noqa F811 request_to_json("post", "/environment/open") assert wait_for_environment_to_be_created(10), "Timeout" From 253f28344869e63a7363eb089e1fbd8139d8d522 Mon Sep 17 00:00:00 2001 From: Dmitri Gavrilov Date: Thu, 4 Dec 2025 19:40:10 -0500 Subject: [PATCH 2/2] TST: fix the test --- bluesky_httpserver/tests/test_core_api_main.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bluesky_httpserver/tests/test_core_api_main.py b/bluesky_httpserver/tests/test_core_api_main.py index 300610e..b2b5140 100644 --- a/bluesky_httpserver/tests/test_core_api_main.py +++ b/bluesky_httpserver/tests/test_core_api_main.py @@ -1244,6 +1244,11 @@ def test_http_server_plan_history(re_manager, fastapi_server): # noqa F811 ]) # fmt: on def test_http_server_history_clear(re_manager, fastapi_server, clear_params, exp_size): # noqa F811 + """ + Test for ``/history/clear`` API with all parameters. + """ + clear_params = copy.deepcopy(clear_params) # The dictionary is modified during the test + # Select very short plan plan = {"item": {"name": "count", "args": [["det1", "det2"]], "item_type": "plan"}} request_to_json("post", "/queue/item/add", json=plan)