From f698ff35b88cf8bf813c0a45ace89a9195c6851b Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 22 Jul 2020 13:58:12 -0400 Subject: [PATCH] Add filter tests for group, users --- netbox/users/filters.py | 2 +- netbox/users/tests/test_filters.py | 116 +++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 netbox/users/tests/test_filters.py diff --git a/netbox/users/filters.py b/netbox/users/filters.py index e48394cfe..d33c10270 100644 --- a/netbox/users/filters.py +++ b/netbox/users/filters.py @@ -45,7 +45,7 @@ class UserFilterSet(BaseFilterSet): class Meta: model = User - fields = ['id', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined'] + fields = ['id', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active'] def search(self, queryset, name, value): if not value.strip(): diff --git a/netbox/users/tests/test_filters.py b/netbox/users/tests/test_filters.py new file mode 100644 index 000000000..7db013a4b --- /dev/null +++ b/netbox/users/tests/test_filters.py @@ -0,0 +1,116 @@ +from django.contrib.auth.models import Group, User +from django.test import TestCase + +from users.filters import GroupFilterSet, UserFilterSet + + +class UserTestCase(TestCase): + queryset = User.objects.all() + filterset = UserFilterSet + + @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='User1', + first_name='Hank', + last_name='Hill', + email='hank@stricklandpropane.com', + is_staff=True + ), + User( + username='User2', + first_name='Dale', + last_name='Gribble', + email='dale@dalesdeadbug.com' + ), + User( + username='User3', + first_name='Bill', + last_name='Dauterive', + email='bill.dauterive@army.mil' + ), + User( + username='User4', + first_name='Jeff', + last_name='Boomhauer', + email='boomhauer@dangolemail.com' + ), + User( + username='User5', + first_name='Debbie', + last_name='Grund', + is_active=False + ) + ) + User.objects.bulk_create(users) + + users[0].groups.set([groups[0]]) + users[1].groups.set([groups[1]]) + users[2].groups.set([groups[2]]) + + def test_id(self): + params = {'id': self.queryset.values_list('pk', flat=True)[:2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_username(self): + params = {'username': ['User1', 'User2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_first_name(self): + params = {'first_name': ['Hank', 'Dale']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_last_name(self): + params = {'last_name': ['Hill', 'Gribble']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_email(self): + params = {'email': ['hank@stricklandpropane.com', 'dale@dalesdeadbug.com']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_is_staff(self): + params = {'is_staff': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_is_active(self): + params = {'is_active': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + def test_group(self): + groups = Group.objects.all()[:2] + params = {'group_id': [groups[0].pk, groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'group': [groups[0].name, groups[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class GroupTestCase(TestCase): + queryset = Group.objects.all() + filterset = GroupFilterSet + + @classmethod + def setUpTestData(cls): + + groups = ( + Group(name='Group 1'), + Group(name='Group 2'), + Group(name='Group 3'), + ) + Group.objects.bulk_create(groups) + + def test_id(self): + params = {'id': self.queryset.values_list('pk', flat=True)[:2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_name(self): + params = {'name': ['Group 1', 'Group 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)