Files
studspider/tests/test_abricksetapi.py
2025-10-09 12:35:28 -07:00

63 lines
2.3 KiB
Python

import pytest
import asyncio
from unittest.mock import patch, AsyncMock
from ..src.abricksetapi import get_set
@pytest.mark.asyncio
@patch("abricksetapi.login", new_callable=AsyncMock)
@patch("abricksetapi.aiohttp.ClientSession")
async def test_get_set_success(mock_session_cls, mock_login):
# Mock login response
mock_login.return_value = {"hash": "fakehash"}
# Prepare mock response data
mock_response_data = {
"sets": [
{
"number": "10349-1",
"name": "Icons: Modular Jazz Club",
"image": {"thumbnailURL": "http://image.url"},
"barcode": {"UPC": "123456789012"},
"LEGOCom": {"US": {"retailPrice": 229.99}},
}
]
}
mock_response = AsyncMock()
mock_response.status = 200
mock_response.read.return_value = asyncio.Future()
mock_response.read.return_value.set_result(
str.encode(str(mock_response_data).replace("'", '"'))
)
# Mock session.get to return our mock_response
mock_session = AsyncMock()
mock_session.get.return_value.__aenter__.return_value = mock_response
mock_session_cls.return_value.__aenter__.return_value = mock_session
result = await get_set("10349")
assert result["set_num"] == "10349-1"
assert result["set_name"] == "Icons: Modular Jazz Club"
assert result["set_image"] == "http://image.url"
assert result["set_barcode"] == "123456789012"
assert result["set_retailprice"] == 230
assert "set_adjustredprice" in result
@pytest.mark.asyncio
@patch("abricksetapi.login", new_callable=AsyncMock)
@patch("abricksetapi.aiohttp.ClientSession")
async def test_get_set_api_error(mock_session_cls, mock_login):
mock_login.return_value = {"hash": "fakehash"}
mock_response = AsyncMock()
mock_response.status = 500
mock_response.read.return_value = asyncio.Future()
mock_response.read.return_value.set_result(b"{}")
mock_session = AsyncMock()
mock_session.get.return_value.__aenter__.return_value = mock_response
mock_session_cls.return_value.__aenter__.return_value = mock_session
with pytest.raises(Exception) as excinfo:
await get_set("badset")
assert "Internal Server Error" in str(excinfo.value)