Skip to content
Snippets Groups Projects
Forked from funkwhale / funkwhale
7925 commits behind the upstream repository.
factories.py 2.18 KiB
import factory
import os

from funkwhale_api.users.tests.factories import UserFactory

SAMPLES_PATH = os.path.dirname(os.path.abspath(__file__))


class ArtistFactory(factory.django.DjangoModelFactory):
    name = factory.Faker('name')
    mbid = factory.Faker('uuid4')

    class Meta:
        model = 'music.Artist'


class AlbumFactory(factory.django.DjangoModelFactory):
    title = factory.Faker('sentence', nb_words=3)
    mbid = factory.Faker('uuid4')
    release_date = factory.Faker('date')
    cover = factory.django.ImageField()
    artist = factory.SubFactory(ArtistFactory)
    release_group_id = factory.Faker('uuid4')

    class Meta:
        model = 'music.Album'


class TrackFactory(factory.django.DjangoModelFactory):
    title = factory.Faker('sentence', nb_words=3)
    mbid = factory.Faker('uuid4')
    album = factory.SubFactory(AlbumFactory)
    artist = factory.SelfAttribute('album.artist')
    position = 1

    class Meta:
        model = 'music.Track'


class TrackFileFactory(factory.django.DjangoModelFactory):
    track = factory.SubFactory(TrackFactory)
    audio_file = factory.django.FileField(
        from_path=os.path.join(SAMPLES_PATH, 'test.ogg'))

    class Meta:
        model = 'music.TrackFile'


class ImportBatchFactory(factory.django.DjangoModelFactory):
    submitted_by = factory.SubFactory(UserFactory)

    class Meta:
        model = 'music.ImportBatch'


class ImportJobFactory(factory.django.DjangoModelFactory):
    batch = factory.SubFactory(ImportBatchFactory)
    source = factory.Faker('url')

    class Meta:
        model = 'music.ImportJob'


class WorkFactory(factory.django.DjangoModelFactory):
    mbid = factory.Faker('uuid4')
    language = 'eng'
    nature = 'song'
    title = factory.Faker('sentence', nb_words=3)

    class Meta:
        model = 'music.Work'


class LyricsFactory(factory.django.DjangoModelFactory):
    work = factory.SubFactory(WorkFactory)
    url = factory.Faker('url')
    content = factory.Faker('paragraphs', nb=4)

    class Meta:
        model = 'music.Lyrics'


class TagFactory(factory.django.DjangoModelFactory):
    name = factory.SelfAttribute('slug')
    slug = factory.Faker('slug')

    class Meta:
        model = 'taggit.Tag'