43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import AsyncMock, Mock
|
|
|
|
from app.database.crud.subscription import create_trial_subscription
|
|
|
|
|
|
async def test_create_trial_subscription_uses_all_available_squads_by_default(monkeypatch):
|
|
db = Mock()
|
|
db.add = Mock()
|
|
db.commit = AsyncMock()
|
|
db.refresh = AsyncMock()
|
|
|
|
monkeypatch.setattr('app.database.crud.subscription.get_subscription_by_user_id', AsyncMock(return_value=None))
|
|
monkeypatch.setattr('app.database.crud.subscription.generate_unique_short_id', AsyncMock(return_value='abc123'))
|
|
monkeypatch.setattr(
|
|
'app.database.crud.server_squad.get_available_server_squads',
|
|
AsyncMock(
|
|
return_value=[
|
|
SimpleNamespace(squad_uuid='fi-uuid'),
|
|
SimpleNamespace(squad_uuid='ru-uuid'),
|
|
]
|
|
),
|
|
)
|
|
get_server_ids_mock = AsyncMock(return_value=[11, 12])
|
|
add_user_to_servers_mock = AsyncMock()
|
|
monkeypatch.setattr('app.database.crud.server_squad.get_server_ids_by_uuids', get_server_ids_mock)
|
|
monkeypatch.setattr('app.database.crud.server_squad.add_user_to_servers', add_user_to_servers_mock)
|
|
|
|
subscription = await create_trial_subscription(
|
|
db,
|
|
user_id=1,
|
|
duration_days=14,
|
|
traffic_limit_gb=100,
|
|
device_limit=5,
|
|
)
|
|
|
|
assert subscription.connected_squads == ['fi-uuid', 'ru-uuid']
|
|
db.add.assert_called_once_with(subscription)
|
|
db.commit.assert_awaited_once()
|
|
db.refresh.assert_awaited_once_with(subscription)
|
|
get_server_ids_mock.assert_awaited_once_with(db, ['fi-uuid', 'ru-uuid'])
|
|
add_user_to_servers_mock.assert_awaited_once_with(db, [11, 12])
|