system-pri/backend/tests/factory.py

73 lines
2.1 KiB
Python
Raw Normal View History

import datetime
from factory import Sequence, alchemy
from factory.faker import Faker
from factory.fuzzy import FuzzyDateTime, FuzzyInteger
from app.dependencies import db
from app.examination_schedule.models import ExaminationSchedule
from app.project_supervisor.models import ProjectSupervisor, YearGroupProjectSupervisors
from app.students.models import Group, Student, YearGroupStudents
class ProjectSupervisorFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = ProjectSupervisor
sqlalchemy_session = db.session
first_name = Faker("first_name")
last_name = Faker("last_name")
email = Faker("email")
class YearGroupProjectSupervisorsFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = YearGroupProjectSupervisors
sqlalchemy_session = db.session
limit_group = 4
class GroupFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = Group
sqlalchemy_session = db.session
name = Sequence(lambda n: f"Group-{n}")
points_for_first_term = FuzzyInteger(1, 5)
points_for_second_term = FuzzyInteger(1, 5)
class StudentFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = Student
sqlalchemy_session = db.session
first_name = Faker("first_name")
last_name = Faker("last_name")
email = Faker("email")
index = Sequence(lambda n: 400_000 + n)
class YearGroupStudentsFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = YearGroupStudents
sqlalchemy_session = db.session
class ExaminationScheduleFactory(alchemy.SQLAlchemyModelFactory):
class Meta:
model = ExaminationSchedule
sqlalchemy_session = db.session
title = Sequence(lambda n: f"Examination schedule {n}")
duration_time = 30
start_date = FuzzyDateTime(
datetime.datetime(2020, 1, 1, tzinfo=datetime.timezone.utc),
datetime.datetime(2020, 1, 5, tzinfo=datetime.timezone.utc),
)
end_date = FuzzyDateTime(
datetime.datetime(2020, 1, 10, tzinfo=datetime.timezone.utc),
datetime.datetime(2020, 1, 20, tzinfo=datetime.timezone.utc),
)