mirror of
https://github.com/Rhinemann/IoT-Systems.git
synced 2026-03-14 20:50:39 +02:00
73 lines
2.9 KiB
Python
73 lines
2.9 KiB
Python
import requests
|
|
import unittest
|
|
from unittest.mock import Mock, patch
|
|
from app.adapters.store_api_adapter import StoreApiAdapter
|
|
from app.entities.agent_data import AccelerometerData, AgentData, GpsData
|
|
from app.entities.processed_agent_data import ProcessedAgentData
|
|
|
|
class TestStoreApiAdapter(unittest.TestCase):
|
|
def setUp(self):
|
|
# Create the StoreApiAdapter instance
|
|
self.store_api_adapter = StoreApiAdapter(api_base_url="http://test-api.com")
|
|
@patch.object(requests, "post")
|
|
def test_save_data_success(self, mock_post):
|
|
# Test successful saving of data to the Store API
|
|
# Sample processed road data
|
|
agent_data = AgentData(
|
|
user_id=1,
|
|
accelerometer=AccelerometerData(
|
|
x=0.1,
|
|
y=0.2,
|
|
z=0.3,
|
|
),
|
|
gps=GpsData(
|
|
latitude=10.123,
|
|
longitude=20.456,
|
|
),
|
|
timestamp="2023-07-21T12:34:56Z",
|
|
)
|
|
processed_data = ProcessedAgentData(road_state="normal", agent_data=agent_data)
|
|
# Mock the response from the Store API
|
|
mock_response = Mock(status_code=201) # 201 indicates successful creation
|
|
mock_post.return_value = mock_response
|
|
# Call the save_data method
|
|
result = self.store_api_adapter.save_data(processed_data)
|
|
# Ensure that the post method of the mock is called with the correct arguments
|
|
mock_post.assert_called_once_with(
|
|
"http://test-api.com/agent_data", json=processed_data.model_dump()
|
|
)
|
|
# Ensure that the result is True, indicating successful saving
|
|
self.assertTrue(result)
|
|
@patch.object(requests, "post")
|
|
def test_save_data_failure(self, mock_post):
|
|
# Test failure to save data to the Store API
|
|
# Sample processed road data
|
|
agent_data = AgentData(
|
|
user_id=1,
|
|
accelerometer=AccelerometerData(
|
|
x=0.1,
|
|
y=0.2,
|
|
z=0.3,
|
|
),
|
|
gps=GpsData(
|
|
latitude=10.123,
|
|
longitude=20.456,
|
|
),
|
|
timestamp="2023-07-21T12:34:56Z",
|
|
)
|
|
processed_data = ProcessedAgentData(road_state="normal", agent_data=agent_data)
|
|
# Mock the response from the Store API
|
|
mock_response = Mock(status_code=400) # 400 indicates a client error
|
|
mock_post.return_value = mock_response
|
|
# Call the save_data method
|
|
result = self.store_api_adapter.save_data(processed_data)
|
|
# Ensure that the post method of the mock is called with the correct arguments
|
|
mock_post.assert_called_once_with(
|
|
"http://test-api.com/agent_data", json=processed_data.model_dump()
|
|
)
|
|
# Ensure that the result is False, indicating failure to save
|
|
self.assertFalse(result)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|