Add tests for Owner & OwnerGroup
Some checks are pending
CI / build (20.x, 3.12) (push) Waiting to run
CI / build (20.x, 3.13) (push) Waiting to run

This commit is contained in:
Jeremy Stretch
2025-10-23 09:47:29 -04:00
parent 3a7b4ac7fc
commit c858d2a176
5 changed files with 335 additions and 3 deletions

View File

@@ -53,4 +53,4 @@ class OwnerGroupType(BaseObjectType):
pagination=True pagination=True
) )
class OwnerType(BaseObjectType): class OwnerType(BaseObjectType):
group: OwnerGroupType group: OwnerGroupType | None

View File

@@ -3,7 +3,7 @@ from django.urls import reverse
from core.models import ObjectType from core.models import ObjectType
from users.constants import TOKEN_DEFAULT_LENGTH from users.constants import TOKEN_DEFAULT_LENGTH
from users.models import Group, ObjectPermission, Token, User from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
from utilities.data import deepmerge from utilities.data import deepmerge
from utilities.testing import APIViewTestCases, APITestCase, create_test_user from utilities.testing import APIViewTestCases, APITestCase, create_test_user
@@ -448,3 +448,112 @@ class UserConfigTest(APITestCase):
self.assertDictEqual(response.data, new_data) self.assertDictEqual(response.data, new_data)
userconfig.refresh_from_db() userconfig.refresh_from_db()
self.assertDictEqual(userconfig.data, new_data) self.assertDictEqual(userconfig.data, new_data)
class OwnerGroupTest(APIViewTestCases.APIViewTestCase):
model = OwnerGroup
brief_fields = ['description', 'display', 'id', 'name', 'url']
bulk_update_data = {
'description': 'New description',
}
@classmethod
def setUpTestData(cls):
owner_groups = (
OwnerGroup(name='Owner Group 1'),
OwnerGroup(name='Owner Group 2'),
OwnerGroup(name='Owner Group 3'),
)
OwnerGroup.objects.bulk_create(owner_groups)
cls.create_data = [
{
'name': 'Owner Group 4',
'description': 'Fourth owner group',
},
{
'name': 'Owner Group 5',
'description': 'Fifth owner group',
},
{
'name': 'Owner Group 6',
'description': 'Sixth owner group',
},
]
class OwnerTest(APIViewTestCases.APIViewTestCase):
model = Owner
brief_fields = ['description', 'display', 'id', 'name', 'url']
@classmethod
def setUpTestData(cls):
owner_groups = (
OwnerGroup(name='Owner Group 1'),
OwnerGroup(name='Owner Group 2'),
OwnerGroup(name='Owner Group 3'),
OwnerGroup(name='Owner Group 4'),
)
OwnerGroup.objects.bulk_create(owner_groups)
groups = (
Group(name='Group 1'),
Group(name='Group 2'),
Group(name='Group 3'),
Group(name='Group 4'),
)
Group.objects.bulk_create(groups)
users = (
User(username='User 1'),
User(username='User 2'),
User(username='User 3'),
User(username='User 4'),
)
User.objects.bulk_create(users)
owners = (
Owner(name='Owner 1'),
Owner(name='Owner 2'),
Owner(name='Owner 3'),
)
Owner.objects.bulk_create(owners)
# Assign users and groups to owners
owners[0].user_groups.add(groups[0])
owners[1].user_groups.add(groups[1])
owners[2].user_groups.add(groups[2])
owners[0].users.add(users[0])
owners[1].users.add(users[1])
owners[2].users.add(users[2])
cls.create_data = [
{
'name': 'Owner 4',
'description': 'Fourth owner',
'group': owner_groups[3].pk,
'user_groups': [groups[3].pk],
'users': [users[3].pk],
},
{
'name': 'Owner 5',
'description': 'Fifth owner',
'group': owner_groups[3].pk,
'user_groups': [groups[3].pk],
'users': [users[3].pk],
},
{
'name': 'Owner 6',
'description': 'Sixth owner',
'group': owner_groups[3].pk,
'user_groups': [groups[3].pk],
'users': [users[3].pk],
},
]
cls.bulk_update_data = {
'group': owner_groups[3].pk,
'user_groups': [groups[3].pk],
'users': [users[3].pk],
'description': 'New description',
}

View File

@@ -5,7 +5,7 @@ from django.utils.timezone import make_aware
from core.models import ObjectType from core.models import ObjectType
from users import filtersets from users import filtersets
from users.models import Group, ObjectPermission, Token, User from users.models import Group, ObjectPermission, Owner, OwnerGroup, Token, User
from utilities.testing import BaseFilterSetTests from utilities.testing import BaseFilterSetTests
@@ -348,3 +348,106 @@ class TokenTestCase(TestCase, BaseFilterSetTests):
def test_description(self): def test_description(self):
params = {'description': ['foobar1', 'foobar2']} params = {'description': ['foobar1', 'foobar2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class OwnerGroupTestCase(TestCase, BaseFilterSetTests):
queryset = OwnerGroup.objects.all()
filterset = filtersets.OwnerGroupFilterSet
@classmethod
def setUpTestData(cls):
owner_groups = (
OwnerGroup(name='Owner Group 1', description='Foo'),
OwnerGroup(name='Owner Group 2', description='Bar'),
OwnerGroup(name='Owner Group 3', description='Baz'),
)
OwnerGroup.objects.bulk_create(owner_groups)
def test_q(self):
params = {'q': 'foo'}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
def test_name(self):
params = {'name': ['Owner Group 1', 'Owner Group 2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_description(self):
params = {'description': ['Foo', 'Bar']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class OwnerTestCase(TestCase, BaseFilterSetTests):
queryset = Owner.objects.all()
filterset = filtersets.OwnerFilterSet
@classmethod
def setUpTestData(cls):
owner_groups = (
OwnerGroup(name='Owner Group 1'),
OwnerGroup(name='Owner Group 2'),
OwnerGroup(name='Owner Group 3'),
)
OwnerGroup.objects.bulk_create(owner_groups)
groups = (
Group(name='Group 1'),
Group(name='Group 2'),
Group(name='Group 3'),
)
Group.objects.bulk_create(groups)
users = (
User(username='User 1'),
User(username='User 2'),
User(username='User 3'),
)
User.objects.bulk_create(users)
owners = (
Owner(name='Owner 1', group=owner_groups[0], description='Foo'),
Owner(name='Owner 2', group=owner_groups[1], description='Bar'),
Owner(name='Owner 3', group=owner_groups[2], description='Baz'),
)
Owner.objects.bulk_create(owners)
# Assign users and groups to owners
owners[0].user_groups.add(groups[0])
owners[1].user_groups.add(groups[1])
owners[2].user_groups.add(groups[2])
owners[0].users.add(users[0])
owners[1].users.add(users[1])
owners[2].users.add(users[2])
def test_q(self):
params = {'q': 'foo'}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
def test_name(self):
params = {'name': ['Owner 1', 'Owner 2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_description(self):
params = {'description': ['Foo', 'Bar']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_group(self):
owner_groups = OwnerGroup.objects.order_by('id')[:2]
params = {'group_id': [owner_groups[0].pk, owner_groups[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'group': [owner_groups[0].name, owner_groups[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_user_group(self):
group = Group.objects.order_by('id')[:2]
params = {'user_group_id': [group[0].pk, group[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'user_group': [group[0].name, group[1].name]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_user(self):
users = User.objects.order_by('id')[:2]
params = {'user_id': [users[0].pk, users[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'user': [users[0].username, users[1].username]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

View File

@@ -255,3 +255,108 @@ class TokenTestCase(
cls.bulk_edit_data = { cls.bulk_edit_data = {
'description': 'New description', 'description': 'New description',
} }
class OwnerGroupTestCase(ViewTestCases.AdminModelViewTestCase):
model = OwnerGroup
@classmethod
def setUpTestData(cls):
owner_groups = (
OwnerGroup(name='Owner Group 1'),
OwnerGroup(name='Owner Group 2'),
OwnerGroup(name='Owner Group 3'),
)
OwnerGroup.objects.bulk_create(owner_groups)
cls.form_data = {
'name': 'Owner Group X',
'description': 'A new owner group',
}
cls.csv_data = (
"name,description",
"Owner Group 4,Foo",
"Owner Group 5,Bar",
"Owner Group 6,Baz",
)
cls.csv_update_data = (
"id,description",
f"{owner_groups[0].pk},Foo",
f"{owner_groups[1].pk},Bar",
f"{owner_groups[2].pk},Baz",
)
cls.bulk_edit_data = {
'description': 'New description',
}
class OwnerTestCase(ViewTestCases.AdminModelViewTestCase):
model = Owner
@classmethod
def setUpTestData(cls):
groups = (
Group(name='Group 1'),
Group(name='Group 2'),
Group(name='Group 3'),
)
Group.objects.bulk_create(groups)
users = (
User(username='User 1'),
User(username='User 2'),
User(username='User 3'),
)
User.objects.bulk_create(users)
owner_groups = (
OwnerGroup(name='Owner Group 1'),
OwnerGroup(name='Owner Group 2'),
OwnerGroup(name='Owner Group 3'),
OwnerGroup(name='Owner Group 4'),
)
OwnerGroup.objects.bulk_create(owner_groups)
owners = (
Owner(name='Owner 1'),
Owner(name='Owner 2'),
Owner(name='Owner 3'),
)
Owner.objects.bulk_create(owners)
# Assign users and groups to owners
owners[0].user_groups.add(groups[0])
owners[1].user_groups.add(groups[1])
owners[2].user_groups.add(groups[2])
owners[0].users.add(users[0])
owners[1].users.add(users[1])
owners[2].users.add(users[2])
cls.form_data = {
'name': 'Owner X',
'group': owner_groups[3].pk,
'user_groups': [groups[0].pk, groups[1].pk],
'users': [users[0].pk, users[1].pk],
'description': 'A new owner',
}
cls.csv_data = (
"name,group,description",
"Owner 4,Owner Group 4,Foo",
"Owner 5,Owner Group 4,Bar",
"Owner 6,Owner Group 4,Baz",
)
cls.csv_update_data = (
"id,description",
f"{owners[0].pk},Foo",
f"{owners[1].pk},Bar",
f"{owners[2].pk},Baz",
)
cls.bulk_edit_data = {
'description': 'New description',
}

View File

@@ -1113,6 +1113,21 @@ class ViewTestCases:
""" """
maxDiff = None maxDiff = None
class AdminModelViewTestCase(
GetObjectViewTestCase,
CreateObjectViewTestCase,
EditObjectViewTestCase,
DeleteObjectViewTestCase,
ListObjectsViewTestCase,
BulkImportObjectsViewTestCase,
BulkEditObjectsViewTestCase,
BulkDeleteObjectsViewTestCase,
):
"""
TestCase suitable for testing all standard View functions for objects which inherit from AdminModel.
"""
maxDiff = None
class DeviceComponentTemplateViewTestCase( class DeviceComponentTemplateViewTestCase(
EditObjectViewTestCase, EditObjectViewTestCase,
DeleteObjectViewTestCase, DeleteObjectViewTestCase,