aboutsummaryrefslogtreecommitdiffstats
path: root/alphabetlearning/resources/factories.py
blob: 47d86e2b237b811475e47e6e6feb7c392c8eb58d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import itertools

import factory

from .models import (PDFPageSnapshot, PDFResource, Resource, ResourceCategory,
                     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("alphabetlearning.resources.factories.PDFResourceModelFactory")


class ResourceModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Resource

    name = factory.Sequence(lambda n: f"Default Resource {n}")
    # price = factory.Faker("pydecimal", left_digits=4, right_digits=2, positive=True)
    thumbnail_filenames = factory.List(
        [factory.Faker("file_name", extension="jpg") for _ in range(3)]
    )
    resource_type = factory.SubFactory(ResourceTypeModelFactory)
    main_resource_category = factory.SubFactory(ResourceCategoryModelFactory)
    subcategories = factory.RelatedFactoryList(ResourceCategoryModelFactory, size=2)
    description = factory.Faker("paragraph")
    card_description = factory.Faker("text", max_nb_chars=1000)
    age_range = factory.Iterator(["5-7", "7-9", "9-11"])
    curriculum = factory.Iterator(["English", "Scottish", "No curriculum"])
    feature_slot = factory.Iterator(itertools.chain([1, 2, 3], itertools.repeat(None)))
    created_at = factory.Faker("date_time_this_year")
    updated_at = factory.Faker("date_time_this_month")

    @factory.post_generation
    def pdfs(self, create, extracted, **kwargs):
        if not create:
            return

        if extracted:
            for pdf in extracted:
                self.pdf_resources.add(pdf)
        else:
            PDFResourceModelFactory.create_batch(3, resource=self)


class ResourceSubcategoryModelFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = ResourceCategory
        django_get_or_create = ("name",)

    name = factory.Sequence(lambda n: f"Default Resource Subcategory {n}")


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)