"""Factories for members app models."""

import factory
from factory.django import DjangoModelFactory

from accounts.tests.factories import WorkspaceFactory
from members.models import Identity, Member


class MemberFactory(DjangoModelFactory):
    """Factory for creating Member instances."""

    class Meta:
        model = Member

    workspace = factory.SubFactory(WorkspaceFactory)
    display_name = factory.Sequence(lambda n: f"Member {n}")
    email = factory.LazyAttribute(lambda obj: f"{obj.display_name.lower().replace(' ', '.')}@example.com")
    avatar_url = ""


class IdentityFactory(DjangoModelFactory):
    """Factory for creating Identity instances."""

    class Meta:
        model = Identity

    member = factory.SubFactory(MemberFactory)
    provider = "github"
    external_id = factory.Sequence(lambda n: f"ext-{n}")
    handle = factory.Sequence(lambda n: f"user{n}")
