"""Factories for billing app models."""

import factory
from factory.django import DjangoModelFactory

from accounts.tests.factories import WorkspaceFactory
from billing.models import Plan, Subscription


class PlanFactory(DjangoModelFactory):
    """Factory for creating Plan instances."""

    class Meta:
        model = Plan

    name = factory.Sequence(lambda n: f"Plan {n}")
    price_cents = 999
    currency = "usd"
    is_active = True
    description = "A test plan"
    features = factory.LazyFunction(list)


class SubscriptionFactory(DjangoModelFactory):
    """Factory for creating Subscription instances."""

    class Meta:
        model = Subscription

    workspace = factory.SubFactory(WorkspaceFactory)
    plan = factory.SubFactory(PlanFactory)
    status = "active"
    current_period_end = None
