Filterset tests

This commit is contained in:
Brian Tiemann 2024-10-21 19:24:39 -04:00
parent 9da0191b09
commit b75f142ce4
3 changed files with 101 additions and 3 deletions

View File

@ -1123,10 +1123,14 @@ class VLANTranslationPolicyFilterSet(NetBoxModelFilterSet):
class VLANTranslationRuleFilterSet(NetBoxModelFilterSet):
policy_id = django_filters.ModelMultipleChoiceFilter(
queryset=VLANTranslationPolicy.objects.all(),
label=_('VLAN Translation Policy (ID)'),
)
class Meta:
model = VLANTranslationRule
fields = ('id', 'policy', 'local_vid', 'remote_vid')
fields = ('id', 'policy_id', 'local_vid', 'remote_vid')
def search(self, queryset, name, value):
if not value.strip():

View File

@ -484,14 +484,24 @@ class VLANTranslationRuleFilterForm(NetBoxModelFilterSetForm):
model = VLANTranslationRule
fieldsets = (
FieldSet('q', 'filter_id', 'tag'),
FieldSet('policy', 'local_vid', 'remote_vid', name=_('Attributes')),
FieldSet('policy_id', 'local_vid', 'remote_vid', name=_('Attributes')),
)
tag = TagFilterField(model)
policy = DynamicModelMultipleChoiceField(
policy_id = DynamicModelMultipleChoiceField(
queryset=VLANTranslationPolicy.objects.all(),
required=False,
label=_('VLAN Translation Policy')
)
local_vid = forms.IntegerField(
min_value=1,
required=False,
label=_('Local VLAN ID')
)
remote_vid = forms.IntegerField(
min_value=1,
required=False,
label=_('Remote VLAN ID')
)
class VLANFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):

View File

@ -1898,6 +1898,90 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests):
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
class VLANTranslationPolicyTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = VLANTranslationPolicy.objects.all()
filterset = VLANTranslationPolicyFilterSet
@classmethod
def setUpTestData(cls):
vlan_translation_policies = (
VLANTranslationPolicy(
name='Policy 1',
description='foobar1',
),
VLANTranslationPolicy(
name='Policy 2',
description='foobar2',
),
VLANTranslationPolicy(
name='Policy 3',
description='foobar3',
),
)
VLANTranslationPolicy.objects.bulk_create(vlan_translation_policies)
def test_name(self):
params = {'name': ['Policy 1', 'Policy 2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_description(self):
params = {'description': ['foobar1', 'foobar2']}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class VLANTranslationRuleTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = VLANTranslationRule.objects.all()
filterset = VLANTranslationRuleFilterSet
@classmethod
def setUpTestData(cls):
vlan_translation_policies = (
VLANTranslationPolicy(
name='Policy 1',
description='foobar1',
),
VLANTranslationPolicy(
name='Policy 2',
description='foobar2',
),
)
VLANTranslationPolicy.objects.bulk_create(vlan_translation_policies)
vlan_translation_rules = (
VLANTranslationRule(
policy=vlan_translation_policies[0],
local_vid=100,
remote_vid=200,
),
VLANTranslationRule(
policy=vlan_translation_policies[0],
local_vid=101,
remote_vid=201,
),
VLANTranslationRule(
policy=vlan_translation_policies[1],
local_vid=100,
remote_vid=200,
),
)
VLANTranslationRule.objects.bulk_create(vlan_translation_rules)
def test_policy_id(self):
policies = VLANTranslationPolicy.objects.all()[:2]
params = {'policy_id': [policies[0].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_local_vid(self):
params = {'local_vid': [100]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_remote_vid(self):
params = {'remote_vid': [200]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
class ServiceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = ServiceTemplate.objects.all()
filterset = ServiceTemplateFilterSet