import factory from .models import PDFPageSnapshot from .models import PDFResource from .models import Resource from .models import ResourceCategory from .models import ResourceType class ResourceTypeModelFactory(factory.django.DjangoModelFactory): class Meta: model = ResourceType django_get_or_create = ("name",) name = factory.Sequence(lambda n: f"Default Resource Type {n}") class ResourceCategoryModelFactory(factory.django.DjangoModelFactory): class Meta: model = ResourceCategory django_get_or_create = ("name",) name = factory.Sequence(lambda n: f"Default Resource Category {n}") class PDFPageSnapshotModelFactory(factory.django.DjangoModelFactory): class Meta: model = PDFPageSnapshot name = factory.Sequence(lambda n: f"pdf_page_snapshot_{n}") file_name = factory.Sequence(lambda n: f"pdf_page_snapshot_{n}.jpg") pdf_file = factory.SubFactory("pyblackbird_cc.resources.factories.PDFResourceModelFactory") class ResourceModelFactory(factory.django.DjangoModelFactory): class Meta: model = Resource name = factory.Sequence(lambda n: f"Default Resource {n}") thumbnail_filenames = factory.Sequence(lambda n: [f"thumbnail_{n}.jpg"]) resource_type = factory.SubFactory(ResourceTypeModelFactory) main_resource_category = factory.SubFactory(ResourceCategoryModelFactory) additional_resource_category = factory.SubFactory(ResourceCategoryModelFactory) description = factory.Sequence(lambda n: f"Default description {n}") age_range = factory.Iterator(["5-7", "7-10", "10+"]) curriculum = factory.Iterator(["English", "Scottish"]) pdfs = factory.RelatedFactoryList( "pyblackbird_cc.resources.factories.PDFResourceModelFactory", factory_related_name="resource", size=3, ) # TODO: Don't think we can include this this way - we are getting import issues # pdf_snapshots = factory.RelatedFactoryList( # "pyblackbird_cc.resources.factories.PDFPageSnapshotModelFactory", # factory_related_name="pdfs", # size=20, # ) class PDFResourceModelFactory(factory.django.DjangoModelFactory): class Meta: model = PDFResource resource = factory.SubFactory(ResourceModelFactory) file_name = factory.Sequence(lambda n: f"test_{n}.pdf") file_size = factory.Faker("random_int", min=0, max=1000)