refactor(base): model instancxe code de-duplicated

ref: #804
This commit is contained in:
2025-06-07 21:37:46 +09:30
parent f5ef97ab4a
commit 613ad7e4e4
5 changed files with 98 additions and 89 deletions

View File

@ -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()