Files
centurion_erp/app/tests/fixtures/model_project.py

102 lines
2.6 KiB
Python

import datetime
import pytest
import random
from django.db import models
from project_management.models.projects import Project
from project_management.serializers.project import (
ProjectBaseSerializer,
ProjectImportSerializer,
ProjectModelSerializer,
ProjectViewSerializer,
)
@pytest.fixture( scope = 'class')
def model_project():
yield Project
@pytest.fixture( scope = 'class')
def kwargs_project(kwargs_centurionmodel, django_db_blocker,
model_projectstate, kwargs_projectstate,
model_projecttype, kwargs_projecttype,
model_user, kwargs_user,
):
random_str = str(datetime.datetime.now(tz=datetime.timezone.utc))
random_str = str(random_str).replace(
' ', '').replace(':', '').replace('+', '').replace('.', '')
with django_db_blocker.unblock():
state = model_projectstate.objects.create( **kwargs_projectstate )
pr_type = model_projecttype.objects.create( **kwargs_projecttype )
kwargs = kwargs_user.copy()
kwargs['username'] = 'tm_proj' + str( random.randint(333, 666) )
manager = model_user.objects.create( **kwargs )
kwargs = kwargs_user.copy()
kwargs['username'] = 'tm_proj' + str( random.randint(777, 999) )
team_member = model_user.objects.create( **kwargs )
kwargs = kwargs_centurionmodel.copy()
del kwargs['model_notes']
kwargs = {
**kwargs,
'code': 'aCODE',
'name': 'project_' + random_str,
'description': 'a description',
'priority': Project.Priority.LOW,
'state': state,
'project_type': pr_type,
'planned_start_date': '2025-08-04T00:00:01Z',
'planned_finish_date': '2025-08-04T00:00:02Z',
'real_start_date': '2025-08-04T00:00:03Z',
'real_finish_date': '2025-08-04T00:00:04Z',
'manager_user': manager,
'team_members': [ team_member ],
}
yield kwargs.copy()
with django_db_blocker.unblock():
try:
state.delete()
except models.deletion.ProtectedError:
pass
try:
pr_type.delete()
except models.deletion.ProtectedError:
pass
try:
manager.delete()
except models.deletion.ProtectedError:
pass
try:
team_member.delete()
except models.deletion.ProtectedError:
pass
@pytest.fixture( scope = 'class')
def serializer_project():
yield {
'base': ProjectBaseSerializer,
'import': ProjectImportSerializer,
'model': ProjectModelSerializer,
'view': ProjectViewSerializer
}