Add NestedContactAssignmentSerializer; add contact assignment API tests

This commit is contained in:
jeremystretch 2021-11-04 11:55:00 -04:00
parent 519884d167
commit ff3edc9889
3 changed files with 80 additions and 2 deletions

View File

@ -5,6 +5,7 @@ from tenancy.models import *
__all__ = [
'NestedContactSerializer',
'NestedContactAssignmentSerializer',
'NestedContactGroupSerializer',
'NestedContactRoleSerializer',
'NestedTenantGroupSerializer',
@ -62,3 +63,13 @@ class NestedContactSerializer(WritableNestedSerializer):
class Meta:
model = Contact
fields = ['id', 'url', 'display', 'name']
class NestedContactAssignmentSerializer(WritableNestedSerializer):
url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactassignment-detail')
contact = NestedContactSerializer()
role = NestedContactRoleSerializer
class Meta:
model = ContactAssignment
fields = ['id', 'url', 'display', 'contact', 'role', 'priority']

View File

@ -1,7 +1,7 @@
import graphene
from tenancy import filtersets, models
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType
from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType
__all__ = (
'ContactAssignmentType',
@ -68,7 +68,7 @@ class ContactGroupType(OrganizationalObjectType):
filterset_class = filtersets.ContactGroupFilterSet
class ContactAssignmentType(OrganizationalObjectType):
class ContactAssignmentType(BaseObjectType):
class Meta:
model = models.ContactAssignment

View File

@ -1,5 +1,7 @@
from django.urls import reverse
from dcim.models import Site
from tenancy.choices import *
from tenancy.models import *
from utilities.testing import APITestCase, APIViewTestCases
@ -201,3 +203,68 @@ class ContactTest(APIViewTestCases.APIViewTestCase):
'group': contact_groups[1].pk,
},
]
class ContactAssignmentTest(APIViewTestCases.APIViewTestCase):
model = ContactAssignment
brief_fields = ['contact', 'display', 'id', 'priority', 'role', 'url']
bulk_update_data = {
'priority': ContactPriorityChoices.PRIORITY_INACTIVE,
}
@classmethod
def setUpTestData(cls):
sites = (
Site(name='Site 1', slug='site-1'),
Site(name='Site 2', slug='site-2'),
)
Site.objects.bulk_create(sites)
contacts = (
Contact(name='Contact 1'),
Contact(name='Contact 2'),
Contact(name='Contact 3'),
Contact(name='Contact 4'),
Contact(name='Contact 5'),
Contact(name='Contact 6'),
)
Contact.objects.bulk_create(contacts)
contact_roles = (
ContactRole(name='Contact Role 1', slug='contact-role-1'),
ContactRole(name='Contact Role 2', slug='contact-role-2'),
ContactRole(name='Contact Role 3', slug='contact-role-3'),
)
ContactRole.objects.bulk_create(contact_roles)
contact_assignments = (
ContactAssignment(object=sites[0], contact=contacts[0], role=contact_roles[0], priority=ContactPriorityChoices.PRIORITY_PRIMARY),
ContactAssignment(object=sites[0], contact=contacts[1], role=contact_roles[1], priority=ContactPriorityChoices.PRIORITY_SECONDARY),
ContactAssignment(object=sites[0], contact=contacts[2], role=contact_roles[2], priority=ContactPriorityChoices.PRIORITY_TERTIARY),
)
ContactAssignment.objects.bulk_create(contact_assignments)
cls.create_data = [
{
'content_type': 'dcim.site',
'object_id': sites[1].pk,
'contact': contacts[3].pk,
'role': contact_roles[0].pk,
'priority': ContactPriorityChoices.PRIORITY_PRIMARY,
},
{
'content_type': 'dcim.site',
'object_id': sites[1].pk,
'contact': contacts[4].pk,
'role': contact_roles[1].pk,
'priority': ContactPriorityChoices.PRIORITY_SECONDARY,
},
{
'content_type': 'dcim.site',
'object_id': sites[1].pk,
'contact': contacts[5].pk,
'role': contact_roles[2].pk,
'priority': ContactPriorityChoices.PRIORITY_TERTIARY,
},
]