test(devops): Add GitRepository Unit Model test suite
ref: #807 #515 #809
This commit is contained in:
19
app/devops/tests/unit/git_repository/conftest.py
Normal file
19
app/devops/tests/unit/git_repository/conftest.py
Normal 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
|
@ -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
|
6
app/tests/fixtures/__init__.py
vendored
6
app/tests/fixtures/__init__.py
vendored
@ -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
|
||||
)
|
||||
|
59
app/tests/fixtures/model_gitrepository.py
vendored
Normal file
59
app/tests/fixtures/model_gitrepository.py
vendored
Normal 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()
|
Reference in New Issue
Block a user