test(devops): Add GitRepository Unit Model test suite

ref: #807 #515 #809
This commit is contained in:
2025-06-09 17:03:05 +09:30
parent 8f0a5386af
commit 07b6a2f4e2
4 changed files with 208 additions and 0 deletions

View File

@ -0,0 +1,19 @@
import pytest
@pytest.fixture( scope = 'class')
def model(model_gitrepository):
yield model_gitrepository
@pytest.fixture( scope = 'class', autouse = True)
def model_kwargs(request, kwargs_gitrepository):
request.cls.kwargs_create_item = kwargs_gitrepository.copy()
yield kwargs_gitrepository.copy()
if hasattr(request.cls, 'kwargs_create_item'):
del request.cls.kwargs_create_item

View File

@ -0,0 +1,124 @@
import pytest
from django.db import models
from core.tests.unit.centurion_abstract.test_unit_centurion_abstract_model import (
CenturionAbstractModelInheritedCases
)
from devops.models.git_group import GitGroup
@pytest.mark.model_gitrepository
class GitRepositoryBaseModelTestCases(
CenturionAbstractModelInheritedCases
):
@property
def parameterized_class_attributes(self):
return {
'model_tag': {
'type': str,
'value': 'git_repository'
},
'url_model_name': {
'type': str,
'value': 'gitrepository'
},
}
parameterized_model_fields = {
'provider': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.IntegerField,
'null': False,
'unique': False,
},
'provider_id': {
'blank': True,
'default': models.fields.NOT_PROVIDED,
'field_type': models.IntegerField,
'null': True,
'unique': False,
},
'git_group': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.ForeignKey,
'null': False,
'unique': False,
},
'path': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.CharField,
'length': 80,
'null': False,
'unique': False,
},
'name': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.CharField,
'length': 80,
'null': False,
'unique': False,
},
'description': {
'blank': True,
'default': models.fields.NOT_PROVIDED,
'field_type': models.TextField,
'length': 300,
'null': True,
'unique': False,
},
'modified': {
'blank': False,
'default': models.fields.NOT_PROVIDED,
'field_type': models.DateTimeField,
'null': False,
'unique': False,
},
}
def test_method_get_url_kwargs(self, mocker, model_instance, settings):
"""Test Class Method
Ensure method `get_url_kwargs` returns the correct value.
"""
if model_instance.provider == GitGroup.GitProvider.GITHUB:
provider = 'github'
elif model_instance.provider == GitGroup.GitProvider.GITLAB:
provider = 'gitlab'
url = model_instance.get_url_kwargs()
assert model_instance.get_url_kwargs() == {
# 'git_provider': provider,
'pk': model_instance.id
}
class GitRepositoryBaseModelInheritedCases(
GitRepositoryBaseModelTestCases,
):
pass
@pytest.mark.module_devops
class GitRepositoryBaseModelPyTest(
GitRepositoryBaseModelTestCases,
):
pass