mirror of
https://github.com/bohd4nx/FragmentAPI.git
synced 2026-07-25 14:24:31 +00:00
ebd45d2991
- Implement tests for Stars methods: purchase_stars and giveaway_stars, including validation and success scenarios. - Add tests for Premium methods: purchase_premium and giveaway_premium, covering validation and success cases. - Create tests for topup_ton functionality, validating input and mocking successful operations. - Introduce wallet tests to verify get_wallet() functionality, ensuring correct wallet info retrieval. - Add tests for FragmentClient.call() method, validating API response handling and data merging. - Implement tests for anonymous number methods, including login codes and session management. - Create recharge_ads tests for self-service Telegram Ads recharge, validating input and success scenarios. - Add username search tests for the Fragment marketplace, ensuring correct result parsing and parameter forwarding. - Implement number search tests for the Fragment marketplace, validating result parsing and parameter handling. - Create gift search tests for the Fragment gifts marketplace, ensuring correct result parsing and parameter forwarding. - Add cookie extraction tests for get_cookies_from_browser(), validating successful extraction and error handling.
64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
"""Unit tests for FragmentClient.call() — raw Fragment API access."""
|
|
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
import pytest
|
|
|
|
from pyfragment import FragmentClient
|
|
from tests.shared import FAKE_HASH, FAKE_RESPONSE
|
|
|
|
# client.call() mocked tests
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_call_returns_api_response(client: FragmentClient) -> None:
|
|
with (
|
|
patch("pyfragment.client.get_fragment_hash", AsyncMock(return_value=FAKE_HASH)),
|
|
patch("pyfragment.client.fragment_request", AsyncMock(return_value=FAKE_RESPONSE)),
|
|
):
|
|
result = await client.call("anyMethod", {"key": "value"})
|
|
|
|
assert result == FAKE_RESPONSE
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_call_default_page_url(client: FragmentClient) -> None:
|
|
"""call() works without explicitly passing page_url (defaults to FRAGMENT_BASE_URL)."""
|
|
with (
|
|
patch("pyfragment.client.get_fragment_hash", AsyncMock(return_value=FAKE_HASH)),
|
|
patch("pyfragment.client.fragment_request", AsyncMock(return_value=FAKE_RESPONSE)),
|
|
):
|
|
result = await client.call("anyMethod")
|
|
|
|
assert result == FAKE_RESPONSE
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_call_no_data(client: FragmentClient) -> None:
|
|
"""call() with no extra data passes only the method field."""
|
|
mock_request = AsyncMock(return_value={})
|
|
|
|
with (
|
|
patch("pyfragment.client.get_fragment_hash", AsyncMock(return_value=FAKE_HASH)),
|
|
patch("pyfragment.client.fragment_request", mock_request),
|
|
):
|
|
await client.call("anyMethod")
|
|
|
|
_, _, _, sent_data = mock_request.call_args.args
|
|
assert sent_data == {"method": "anyMethod"}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_call_merges_extra_data(client: FragmentClient) -> None:
|
|
"""call() merges caller-supplied data with the method field."""
|
|
mock_request = AsyncMock(return_value={})
|
|
|
|
with (
|
|
patch("pyfragment.client.get_fragment_hash", AsyncMock(return_value=FAKE_HASH)),
|
|
patch("pyfragment.client.fragment_request", mock_request),
|
|
):
|
|
await client.call("anyMethod", {"key": "value", "num": 7})
|
|
|
|
_, _, _, sent_data = mock_request.call_args.args
|
|
assert sent_data == {"method": "anyMethod", "key": "value", "num": 7}
|