Skip to content

Commit 6acde0f

Browse files
committed
Incorporate changelog messages for object view tests
1 parent f174381 commit 6acde0f

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

netbox/utilities/testing/views.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from netbox.models.features import ChangeLoggingMixin, CustomFieldsMixin
1515
from users.models import ObjectPermission
1616
from .base import ModelTestCase
17-
from .utils import add_custom_field_data, disable_warnings, post_data
17+
from .utils import add_custom_field_data, disable_warnings, get_random_string, post_data
1818

1919
__all__ = (
2020
'ModelViewTestCase',
@@ -169,6 +169,11 @@ def test_create_object_with_permission(self):
169169
if issubclass(self.model, CustomFieldsMixin):
170170
add_custom_field_data(self.form_data, self.model)
171171

172+
# If supported, add a changelog message
173+
if issubclass(self.model, ChangeLoggingMixin):
174+
if 'changelog_message' not in self.form_data:
175+
self.form_data['changelog_message'] = get_random_string(10)
176+
172177
# Try POST with model-level permission
173178
initial_count = self._get_queryset().count()
174179
request = {
@@ -181,13 +186,14 @@ def test_create_object_with_permission(self):
181186
self.assertInstanceEqual(instance, self.form_data, exclude=self.validation_excluded_fields)
182187

183188
# Verify ObjectChange creation
184-
if issubclass(instance.__class__, ChangeLoggingMixin):
189+
if issubclass(self.model, ChangeLoggingMixin):
185190
objectchanges = ObjectChange.objects.filter(
186191
changed_object_type=ContentType.objects.get_for_model(instance),
187192
changed_object_id=instance.pk
188193
)
189194
self.assertEqual(len(objectchanges), 1)
190195
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_CREATE)
196+
self.assertEqual(objectchanges[0].message, self.form_data['changelog_message'])
191197

192198
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'], EXEMPT_EXCLUDE_MODELS=[])
193199
def test_create_object_with_constrained_permission(self):
@@ -272,6 +278,11 @@ def test_edit_object_with_permission(self):
272278
if issubclass(self.model, CustomFieldsMixin):
273279
add_custom_field_data(self.form_data, self.model)
274280

281+
# If supported, add a changelog message
282+
if issubclass(self.model, ChangeLoggingMixin):
283+
if 'changelog_message' not in self.form_data:
284+
self.form_data['changelog_message'] = get_random_string(10)
285+
275286
# Try POST with model-level permission
276287
request = {
277288
'path': self._get_url('edit', instance),
@@ -282,13 +293,14 @@ def test_edit_object_with_permission(self):
282293
self.assertInstanceEqual(instance, self.form_data, exclude=self.validation_excluded_fields)
283294

284295
# Verify ObjectChange creation
285-
if issubclass(instance.__class__, ChangeLoggingMixin):
296+
if issubclass(self.model, ChangeLoggingMixin):
286297
objectchanges = ObjectChange.objects.filter(
287298
changed_object_type=ContentType.objects.get_for_model(instance),
288299
changed_object_id=instance.pk
289300
)
290301
self.assertEqual(len(objectchanges), 1)
291302
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_UPDATE)
303+
self.assertEqual(objectchanges[0].message, self.form_data['changelog_message'])
292304

293305
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'], EXEMPT_EXCLUDE_MODELS=[])
294306
def test_edit_object_with_constrained_permission(self):
@@ -348,6 +360,7 @@ def test_delete_object_without_permission(self):
348360
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
349361
def test_delete_object_with_permission(self):
350362
instance = self._get_queryset().first()
363+
form_data = {'confirm': True}
351364

352365
# Assign model-level permission
353366
obj_perm = ObjectPermission(
@@ -361,23 +374,28 @@ def test_delete_object_with_permission(self):
361374
# Try GET with model-level permission
362375
self.assertHttpStatus(self.client.get(self._get_url('delete', instance)), 200)
363376

377+
# If supported, add a changelog message
378+
if issubclass(self.model, ChangeLoggingMixin):
379+
form_data['changelog_message'] = get_random_string(10)
380+
364381
# Try POST with model-level permission
365382
request = {
366383
'path': self._get_url('delete', instance),
367-
'data': post_data({'confirm': True}),
384+
'data': post_data(form_data),
368385
}
369386
self.assertHttpStatus(self.client.post(**request), 302)
370387
with self.assertRaises(ObjectDoesNotExist):
371388
self._get_queryset().get(pk=instance.pk)
372389

373390
# Verify ObjectChange creation
374-
if issubclass(instance.__class__, ChangeLoggingMixin):
391+
if issubclass(self.model, ChangeLoggingMixin):
375392
objectchanges = ObjectChange.objects.filter(
376393
changed_object_type=ContentType.objects.get_for_model(instance),
377394
changed_object_id=instance.pk
378395
)
379396
self.assertEqual(len(objectchanges), 1)
380397
self.assertEqual(objectchanges[0].action, ObjectChangeActionChoices.ACTION_DELETE)
398+
self.assertEqual(objectchanges[0].message, form_data['changelog_message'])
381399

382400
@override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
383401
def test_delete_object_with_constrained_permission(self):

0 commit comments

Comments
 (0)