aboutsummaryrefslogtreecommitdiffstats
path: root/ctrack/caf/tests/factories.py
blob: bc2431eb72be2972446d2d3767d3188726edd3b8 (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
import random

import factory
from factory import Faker

from ctrack.caf.models import ApplicableSystem, Grading, DocumentFile, FileStore, CAF
from ctrack.organisations.tests.factories import OrganisationFactory, PersonFactory


class CAFFactory(factory.DjangoModelFactory):
    quality_grading = factory.SubFactory("ctrack.caf.tests.factories.GradingFactory")
    confidence_grading = factory.SubFactory("ctrack.caf.tests.factories.GradingFactory")
    file = None
    version = Faker("bothify", text="??##", letters="ABCD")
    triage_review_date = Faker("date_object")
    triage_review_inspector = factory.SubFactory(PersonFactory)
    comments = Faker("paragraph", nb_sentences=5, variable_nb_sentences=True, ext_word_list=None)


    class Meta:
        model = CAF


class ApplicableSystemFactory(factory.DjangoModelFactory):
    """Factory for Essential Services."""

    name = Faker("text", max_nb_chars=100, ext_word_list=None)
    description = Faker(
        "paragraph", nb_sentences=4, variable_nb_sentences=True, ext_word_list=None
    )
    organisation = factory.SubFactory(OrganisationFactory)
    caf = factory.SubFactory("ctrack.caf.tests.factories.CAFFactory")

    class Meta:
        model = ApplicableSystem


class GradingFactory(factory.DjangoModelFactory):
    descriptor = factory.Iterator(
        ["Q1", "Q2", "Q3", "Q4", "Q5", "C1", "C2", "C3", "C4", "C5"]
    )
    description = Faker("text", max_nb_chars=100, ext_word_list=None)
    type = factory.Iterator(Grading.GRADING_TYPE, getter=lambda g: g[0])

    class Meta:
        model = Grading


class FileStoreFactory(factory.DjangoModelFactory):
    descriptor = "File Store X"
    virtual_location = Faker("street_name")
    physical_location = random.choice(["Cupboard A", "Tin Box", "The Vault"])
    physical_location_organisation = factory.SubFactory(OrganisationFactory)

    class Meta:
        model = FileStore


class DocumentFileFactory(factory.DjangoModelFactory):
    name = Faker("file_name", extension="xlsx")
    type = random.choice([1, 2, 3, 4])
    file_store_location = factory.SubFactory(FileStoreFactory)

    class Meta:
        model = DocumentFile