"""
API тесты для подписок.
"""
import pytest
from rest_framework import status
from apps.subscriptions.models import SubscriptionPlan, Subscription


@pytest.mark.django_db
@pytest.mark.api
class TestSubscriptionPlanAPI:
    """Тесты API тарифных планов."""
    
    def test_list_plans(self, api_client):
        """Тест получения списка тарифных планов."""
        SubscriptionPlan.objects.create(
            name='Базовый',
            slug='basic',
            price=1000.00,
            duration_days=30,
            is_active=True
        )
        
        response = api_client.get('/api/subscriptions/plans/')
        
        assert response.status_code == status.HTTP_200_OK
        assert len(response.data) > 0
    
    def test_get_plan_detail(self, api_client):
        """Тест получения деталей тарифа."""
        plan = SubscriptionPlan.objects.create(
            name='Премиум',
            slug='premium',
            price=2000.00,
            duration_days=30,
            is_active=True
        )
        
        response = api_client.get(f'/api/subscriptions/plans/{plan.slug}/')
        
        assert response.status_code == status.HTTP_200_OK
        assert response.data['name'] == 'Премиум'


@pytest.mark.django_db
@pytest.mark.api
class TestSubscriptionAPI:
    """Тесты API подписок."""
    
    def test_get_user_subscription(self, authenticated_client, mentor_user):
        """Тест получения подписки пользователя."""
        plan = SubscriptionPlan.objects.create(
            name='Базовый',
            slug='basic',
            price=1000.00,
            duration_days=30
        )
        
        Subscription.objects.create(
            user=mentor_user,
            plan=plan,
            status='active'
        )
        
        response = authenticated_client.get('/api/subscriptions/current/')
        
        assert response.status_code == status.HTTP_200_OK
        assert response.data['status'] == 'active'

