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
81
82
|
import itertools
import factory
from alphabetlearning.payments.models import Price
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)]
)
# price_obj = factory.RelatedFactoryList("alphabetlearning.payments.factories.PriceFactory", size=1)
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)
|