mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #5583: Eliminate redundant change records when adding/removing tags
This commit is contained in:
@ -6,6 +6,8 @@ from django.test import override_settings
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
from extras.choices import ObjectChangeActionChoices
|
||||
from extras.models import ObjectChange
|
||||
from users.models import ObjectPermission, Token
|
||||
from .utils import disable_warnings
|
||||
from .views import ModelTestCase
|
||||
@ -223,13 +225,23 @@ class APIViewTestCases:
|
||||
response = self.client.post(self._get_list_url(), self.create_data[0], format='json', **self.header)
|
||||
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
||||
self.assertEqual(self._get_queryset().count(), initial_count + 1)
|
||||
instance = self._get_queryset().get(pk=response.data['id'])
|
||||
self.assertInstanceEqual(
|
||||
self._get_queryset().get(pk=response.data['id']),
|
||||
instance,
|
||||
self.create_data[0],
|
||||
exclude=self.validation_excluded_fields,
|
||||
api=True
|
||||
)
|
||||
|
||||
# Verify ObjectChange creation
|
||||
if hasattr(self.model, 'to_objectchange'):
|
||||
objectchanges = ObjectChange.objects.filter(
|
||||
changed_object_type=ContentType.objects.get_for_model(instance),
|
||||
changed_object_id=instance.pk
|
||||
)
|
||||
self.assertEqual(len(objectchanges), 1)
|
||||
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_CREATE)
|
||||
|
||||
def test_bulk_create_objects(self):
|
||||
"""
|
||||
POST a set of objects in a single request.
|
||||
@ -304,6 +316,15 @@ class APIViewTestCases:
|
||||
api=True
|
||||
)
|
||||
|
||||
# Verify ObjectChange creation
|
||||
if hasattr(self.model, 'to_objectchange'):
|
||||
objectchanges = ObjectChange.objects.filter(
|
||||
changed_object_type=ContentType.objects.get_for_model(instance),
|
||||
changed_object_id=instance.pk
|
||||
)
|
||||
self.assertEqual(len(objectchanges), 1)
|
||||
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_UPDATE)
|
||||
|
||||
def test_bulk_update_objects(self):
|
||||
"""
|
||||
PATCH a set of objects in a single request.
|
||||
@ -367,6 +388,15 @@ class APIViewTestCases:
|
||||
self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)
|
||||
self.assertFalse(self._get_queryset().filter(pk=instance.pk).exists())
|
||||
|
||||
# Verify ObjectChange creation
|
||||
if hasattr(self.model, 'to_objectchange'):
|
||||
objectchanges = ObjectChange.objects.filter(
|
||||
changed_object_type=ContentType.objects.get_for_model(instance),
|
||||
changed_object_id=instance.pk
|
||||
)
|
||||
self.assertEqual(len(objectchanges), 1)
|
||||
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_DELETE)
|
||||
|
||||
def test_bulk_delete_objects(self):
|
||||
"""
|
||||
DELETE a set of objects in a single request.
|
||||
|
Reference in New Issue
Block a user