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

View File

@ -88,6 +88,12 @@ from .model_gitgroup import (
serializer_gitgroup,
)
from .model_gitrepository import (
kwargs_gitrepository,
model_gitrepository,
serializer_gitrepository,
)
from .model_instance import (
model_instance
)

View File

@ -0,0 +1,59 @@
import pytest
from devops.models.git_repository.base import (
GitGroup,
GitRepository,
)
from devops.serializers.git_repository.base import (
ModelSerializer,
ViewSerializer
)
@pytest.fixture( scope = 'class')
def model_gitrepository(request):
yield GitRepository
@pytest.fixture( scope = 'class')
def serializer_gitrepository():
yield {
'model': ModelSerializer,
'view': ViewSerializer,
}
@pytest.fixture( scope = 'class')
def kwargs_gitrepository(django_db_blocker,
kwargs_centurionmodel, model_gitgroup, kwargs_gitgroup
):
kwargs = kwargs_gitgroup.copy()
kwargs.update({
'name': 'gitrepo'
})
with django_db_blocker.unblock():
git_group = model_gitgroup.objects.create(
**kwargs
)
kwargs = {
**kwargs_centurionmodel.copy(),
'provider': GitGroup.GitProvider.GITHUB,
'provider_id': 1,
'git_group': git_group,
'path': 'a_path',
'name': 'the name',
'description': 'a random bit of text.',
'modified': '2025-06-09T01:02:03Z'
}
yield kwargs.copy()
with django_db_blocker.unblock():
git_group.delete()