diff --git a/test/unit/api/v1/endpoints/test_robot_endpoint.py b/test/unit/api/v1/endpoints/test_robot_endpoint.py index 72a0220..deb9075 100644 --- a/test/unit/api/v1/endpoints/test_robot_endpoint.py +++ b/test/unit/api/v1/endpoints/test_robot_endpoint.py @@ -7,7 +7,7 @@ from fastapi import FastAPI from fastapi.testclient import TestClient from control_backend.api.v1.endpoints import robot -from control_backend.schemas.ri_message import SpeechCommand +from control_backend.schemas.ri_message import GestureCommand, SpeechCommand @pytest.fixture @@ -47,7 +47,7 @@ def mock_sockets(mock_zmq_context): return {"sub": mock_sub_socket, "pub": mock_pub_socket} -def test_receive_command_success(client): +def test_receive_speech_command_success(client): """ Test for successful reception of a command. Ensures the status code is 202 and the response body is correct. It also verifies that the ZeroMQ socket's send_multipart method is called with the @@ -73,6 +73,32 @@ def test_receive_command_success(client): ) +def test_receive_gesture_command_success(client): + """ + Test for successful reception of a command. Ensures the status code is 202 and the response body + is correct. It also verifies that the ZeroMQ socket's send_multipart method is called with the + expected data. + """ + # Arrange + mock_pub_socket = AsyncMock() + client.app.state.endpoints_pub_socket = mock_pub_socket + + command_data = {"endpoint": "actuate/gesture/tag", "data": "happy"} + gesture_command = GestureCommand(**command_data) + + # Act + response = client.post("/command", json=command_data) + + # Assert + assert response.status_code == 202 + assert response.json() == {"status": "Command received"} + + # Verify that the ZMQ socket was used correctly + mock_pub_socket.send_multipart.assert_awaited_once_with( + [b"command", gesture_command.model_dump_json().encode()] + ) + + def test_receive_command_invalid_payload(client): """ Test invalid data handling (schema validation).