mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 01:06:11 -06:00
Add tests for object type validation
This commit is contained in:
parent
bbcec4ffff
commit
8b0633ebf2
@ -821,6 +821,10 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
content_types = {
|
||||||
|
'site': ContentType.objects.get_by_natural_key('dcim', 'site'),
|
||||||
|
'provider': ContentType.objects.get_by_natural_key('circuits', 'provider'),
|
||||||
|
}
|
||||||
|
|
||||||
tags = (
|
tags = (
|
||||||
Tag(name='Tag 1', slug='tag-1', color='ff0000', description='foobar1'),
|
Tag(name='Tag 1', slug='tag-1', color='ff0000', description='foobar1'),
|
||||||
@ -828,6 +832,8 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
Tag(name='Tag 3', slug='tag-3', color='0000ff'),
|
Tag(name='Tag 3', slug='tag-3', color='0000ff'),
|
||||||
)
|
)
|
||||||
Tag.objects.bulk_create(tags)
|
Tag.objects.bulk_create(tags)
|
||||||
|
tags[0].object_types.add(content_types['site'])
|
||||||
|
tags[1].object_types.add(content_types['provider'])
|
||||||
|
|
||||||
# Apply some tags so we can filter by content type
|
# Apply some tags so we can filter by content type
|
||||||
site = Site.objects.create(name='Site 1', slug='site-1')
|
site = Site.objects.create(name='Site 1', slug='site-1')
|
||||||
@ -860,6 +866,18 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||||||
params = {'content_type_id': [site_ct, provider_ct]}
|
params = {'content_type_id': [site_ct, provider_ct]}
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
|
||||||
|
def test_object_types(self):
|
||||||
|
params = {'for_object_type_id': [ContentType.objects.get_by_natural_key('dcim', 'site').pk]}
|
||||||
|
self.assertEqual(
|
||||||
|
list(self.filterset(params, self.queryset).qs.values_list('name', flat=True)),
|
||||||
|
['Tag 1', 'Tag 3']
|
||||||
|
)
|
||||||
|
params = {'for_object_type_id': [ContentType.objects.get_by_natural_key('circuits', 'provider').pk]}
|
||||||
|
self.assertEqual(
|
||||||
|
list(self.filterset(params, self.queryset).qs.values_list('name', flat=True)),
|
||||||
|
['Tag 2', 'Tag 3']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
|
class ObjectChangeTestCase(TestCase, BaseFilterSetTests):
|
||||||
queryset = ObjectChange.objects.all()
|
queryset = ObjectChange.objects.all()
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from dcim.models import Device, DeviceRole, DeviceType, Location, Manufacturer, Platform, Region, Site, SiteGroup
|
from dcim.models import Device, DeviceRole, DeviceType, Location, Manufacturer, Platform, Region, Site, SiteGroup
|
||||||
from extras.models import ConfigContext, Tag
|
from extras.models import ConfigContext, Tag
|
||||||
from tenancy.models import Tenant, TenantGroup
|
from tenancy.models import Tenant, TenantGroup
|
||||||
|
from utilities.exceptions import AbortRequest
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine
|
||||||
|
|
||||||
|
|
||||||
@ -14,6 +16,22 @@ class TagTest(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(tag.slug, 'testing-unicode-台灣')
|
self.assertEqual(tag.slug, 'testing-unicode-台灣')
|
||||||
|
|
||||||
|
def test_object_type_validation(self):
|
||||||
|
region = Region.objects.create(name='Region 1', slug='region-1')
|
||||||
|
sitegroup = SiteGroup.objects.create(name='Site Group 1', slug='site-group-1')
|
||||||
|
|
||||||
|
# Create a Tag that can only be applied to Regions
|
||||||
|
tag = Tag.objects.create(name='Tag 1', slug='tag-1')
|
||||||
|
tag.object_types.add(ContentType.objects.get_by_natural_key('dcim', 'region'))
|
||||||
|
|
||||||
|
# Apply the Tag to a Region
|
||||||
|
region.tags.add(tag)
|
||||||
|
self.assertIn(tag, region.tags.all())
|
||||||
|
|
||||||
|
# Apply the Tag to a SiteGroup
|
||||||
|
with self.assertRaises(AbortRequest):
|
||||||
|
sitegroup.tags.add(tag)
|
||||||
|
|
||||||
|
|
||||||
class ConfigContextTest(TestCase):
|
class ConfigContextTest(TestCase):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user