diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py index 34fd72b2b..cfb2e5d04 100644 --- a/netbox/extras/tests/test_changelog.py +++ b/netbox/extras/tests/test_changelog.py @@ -1,4 +1,5 @@ from django.contrib.contenttypes.models import ContentType +from django.test import override_settings from django.urls import reverse from rest_framework import status @@ -207,6 +208,63 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(objectchange.prechange_data['slug'], sites[0].slug) self.assertEqual(objectchange.postchange_data, None) + def test_update_object_change(self): + site = Site( + name='Site 1', + slug='site-1', + status=SiteStatusChoices.STATUS_PLANNED, + custom_field_data={ + 'cf1': None, + 'cf2': None + } + ) + site.save() + + form_data = { + 'name': site.name, + 'slug': site.slug, + 'status': SiteStatusChoices.STATUS_PLANNED, + } + + oc_count = ObjectChange.objects.count() + request = { + 'path': self._get_url('edit', instance=site), + 'data': post_data(form_data), + } + self.add_permissions('dcim.change_site', 'extras.view_tag') + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + self.assertNotEqual(oc_count, ObjectChange.objects.count()) + + @override_settings(CHANGELOG_SKIP_EMPTY_CHANGES=True) + def test_update_object_nochange(self): + site = Site( + name='Site 1', + slug='site-1', + status=SiteStatusChoices.STATUS_PLANNED, + custom_field_data={ + 'cf1': None, + 'cf2': None + } + ) + site.save() + + form_data = { + 'name': site.name, + 'slug': site.slug, + 'status': SiteStatusChoices.STATUS_PLANNED, + } + + oc_count = ObjectChange.objects.count() + request = { + 'path': self._get_url('edit', instance=site), + 'data': post_data(form_data), + } + self.add_permissions('dcim.change_site', 'extras.view_tag') + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + self.assertEqual(oc_count, ObjectChange.objects.count()) + class ChangeLogAPITest(APITestCase):