@ -92,7 +92,7 @@ class ModelTestCases(
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'function', autouse = True)
|
||||
def model_instance(cls, request, model, model_kwargs):
|
||||
def model_instance(cls, model_kwarg_data, model, model_kwargs):
|
||||
|
||||
class MockModel(model):
|
||||
class Meta:
|
||||
@ -110,52 +110,24 @@ class ModelTestCases(
|
||||
|
||||
else:
|
||||
|
||||
|
||||
kwargs = {}
|
||||
|
||||
many_field = {}
|
||||
|
||||
for field, value in model_kwargs.items():
|
||||
|
||||
if isinstance(getattr(model, field).field, models.ManyToManyField):
|
||||
|
||||
if field in many_field:
|
||||
|
||||
many_field[field] += [ value ]
|
||||
|
||||
else:
|
||||
|
||||
many_field.update({
|
||||
field: [
|
||||
value
|
||||
]
|
||||
})
|
||||
|
||||
continue
|
||||
|
||||
kwargs.update({
|
||||
field: value
|
||||
})
|
||||
|
||||
instance = model.objects.create( **kwargs )
|
||||
instance = model_kwarg_data(
|
||||
model = model,
|
||||
model_kwargs = model_kwargs,
|
||||
create_instance = True,
|
||||
)
|
||||
|
||||
|
||||
|
||||
for field, values in many_field.items():
|
||||
|
||||
for value in values:
|
||||
|
||||
getattr(instance, field).add( value )
|
||||
|
||||
|
||||
|
||||
yield instance
|
||||
yield instance['instance']
|
||||
|
||||
if 'mockmodel' in apps.all_models['core']:
|
||||
|
||||
del apps.all_models['core']['mockmodel']
|
||||
|
||||
if instance.id and type(instance) is not MockModel:
|
||||
if type(instance) is dict:
|
||||
|
||||
instance['instance'].delete()
|
||||
|
||||
elif instance.id and type(instance) is not MockModel:
|
||||
|
||||
instance.delete()
|
||||
|
||||
|
4
app/tests/fixtures/__init__.py
vendored
4
app/tests/fixtures/__init__.py
vendored
@ -98,6 +98,10 @@ from .model_knowledgebasecategory import (
|
||||
model_knowledgebasecategory,
|
||||
)
|
||||
|
||||
from .model_kwarg_data import (
|
||||
model_kwarg_data
|
||||
)
|
||||
|
||||
from .model_manufacturer import (
|
||||
kwargs_manufacturer,
|
||||
model_manufacturer,
|
||||
|
4
app/tests/fixtures/kwargs_api_create.py
vendored
4
app/tests/fixtures/kwargs_api_create.py
vendored
@ -1,4 +1,5 @@
|
||||
import pytest
|
||||
import json
|
||||
|
||||
from django.db import models
|
||||
|
||||
@ -19,6 +20,9 @@ def kwargs_api_create(django_db_blocker, model_kwargs):
|
||||
if isinstance(value, models.Model):
|
||||
value = value.id
|
||||
|
||||
elif isinstance(value, dict):
|
||||
value = json.dumps(value)
|
||||
|
||||
kwargs.update({
|
||||
field: value
|
||||
})
|
||||
|
54
app/tests/fixtures/model_instance.py
vendored
54
app/tests/fixtures/model_instance.py
vendored
@ -10,7 +10,7 @@ model_objs: list = []
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class')
|
||||
def model_instance(django_db_blocker, model_user, model, model_kwargs):
|
||||
def model_instance(django_db_blocker, model_kwarg_data, model, model_kwargs):
|
||||
|
||||
with django_db_blocker.unblock():
|
||||
|
||||
@ -51,57 +51,13 @@ def model_instance(django_db_blocker, model_user, model, model_kwargs):
|
||||
|
||||
else:
|
||||
|
||||
new_kwargs = model_kwargs.copy()
|
||||
|
||||
new_kwargs.update( kwargs_create )
|
||||
|
||||
|
||||
kwargs = {}
|
||||
|
||||
many_field = {}
|
||||
|
||||
for field, value in new_kwargs.items():
|
||||
|
||||
if isinstance(getattr(model, field).field, models.ManyToManyField):
|
||||
|
||||
if field in many_field:
|
||||
|
||||
many_field[field] += [ value ]
|
||||
|
||||
else:
|
||||
|
||||
many_field.update({
|
||||
field: [
|
||||
value
|
||||
]
|
||||
})
|
||||
|
||||
continue
|
||||
|
||||
kwargs.update({
|
||||
field: value
|
||||
})
|
||||
|
||||
|
||||
if random_field:
|
||||
|
||||
random_str = str(datetime.datetime.now(tz=datetime.timezone.utc)).replace(
|
||||
' ', '').replace(':', '').replace('+', '').replace('.', '')
|
||||
|
||||
kwargs.update({
|
||||
random_field: str( random_field ) + '' + random_str
|
||||
})
|
||||
|
||||
|
||||
obj = model.objects.create(
|
||||
**kwargs
|
||||
obj = model_kwarg_data(
|
||||
model = model,
|
||||
model_kwargs = model_kwargs,
|
||||
create_instance = True,
|
||||
)
|
||||
|
||||
for field, values in many_field.items():
|
||||
|
||||
for value in values:
|
||||
|
||||
getattr(obj, field).add( value )
|
||||
|
||||
|
||||
model_objs += [ obj ]
|
||||
|
73
app/tests/fixtures/model_kwarg_data.py
vendored
Normal file
73
app/tests/fixtures/model_kwarg_data.py
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
import datetime
|
||||
import json
|
||||
import pytest
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
||||
@pytest.fixture( scope = 'class' )
|
||||
def model_kwarg_data():
|
||||
|
||||
def data(model, model_kwargs, model_instance = None, create_instance = False) -> dict:
|
||||
|
||||
random_str = str(datetime.datetime.now(tz=datetime.timezone.utc))
|
||||
random_str = str(random_str).replace(
|
||||
' ', '').replace(':', '').replace('+', '').replace('.', '').replace('-', '')
|
||||
|
||||
# data = {}
|
||||
|
||||
|
||||
kwargs = {}
|
||||
|
||||
many_field = {}
|
||||
|
||||
for field, value in model_kwargs.items():
|
||||
|
||||
if isinstance(getattr(model, field).field, models.ManyToManyField):
|
||||
|
||||
if field in many_field:
|
||||
|
||||
many_field[field] += [ value ]
|
||||
|
||||
else:
|
||||
|
||||
many_field.update({
|
||||
field: [
|
||||
value
|
||||
]
|
||||
})
|
||||
|
||||
continue
|
||||
|
||||
elif getattr(model, field).field.unique:
|
||||
|
||||
value = 'a' + random_str
|
||||
|
||||
kwargs.update({
|
||||
field: value
|
||||
})
|
||||
|
||||
instance = None
|
||||
|
||||
if create_instance:
|
||||
|
||||
instance =model.objects.create(
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
for field, values in many_field.items():
|
||||
|
||||
for value in values:
|
||||
|
||||
getattr(instance, field).add( value )
|
||||
|
||||
|
||||
return {
|
||||
'instance': instance,
|
||||
'kwargs': kwargs,
|
||||
'api_json': ''
|
||||
}
|
||||
|
||||
|
||||
yield data
|
Reference in New Issue
Block a user