From 22b8a45a71a79a2505dcb316fc29e6b0e8be74f6 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 28 Aug 2019 10:18:37 -0400 Subject: [PATCH] Add tests for changelog --- netbox/extras/tests/test_changelog.py | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 netbox/extras/tests/test_changelog.py diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py new file mode 100644 index 000000000..0567fa62c --- /dev/null +++ b/netbox/extras/tests/test_changelog.py @@ -0,0 +1,72 @@ +from django.urls import reverse +from rest_framework import status + +from dcim.models import Site +from extras.constants import OBJECTCHANGE_ACTION_CREATE, OBJECTCHANGE_ACTION_UPDATE, OBJECTCHANGE_ACTION_DELETE +from extras.models import ObjectChange +from utilities.testing import APITestCase + + +class ChangeLogTest(APITestCase): + + def test_create_object(self): + + data = { + 'name': 'Test Site 1', + 'slug': 'test-site-1', + } + + self.assertEqual(ObjectChange.objects.count(), 0) + + url = reverse('dcim-api:site-list') + response = self.client.post(url, data, format='json', **self.header) + + self.assertHttpStatus(response, status.HTTP_201_CREATED) + self.assertEqual(ObjectChange.objects.count(), 1) + + oc = ObjectChange.objects.first() + site = Site.objects.get(pk=response.data['id']) + self.assertEqual(oc.changed_object, site) + self.assertEqual(oc.action, OBJECTCHANGE_ACTION_CREATE) + + def test_update_object(self): + + site = Site(name='Test Site 1', slug='test-site-1') + site.save() + + data = { + 'name': 'Test Site X', + 'slug': 'test-site-x', + } + + self.assertEqual(ObjectChange.objects.count(), 0) + + url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk}) + response = self.client.put(url, data, format='json', **self.header) + + self.assertHttpStatus(response, status.HTTP_200_OK) + self.assertEqual(ObjectChange.objects.count(), 1) + site = Site.objects.get(pk=response.data['id']) + self.assertEqual(site.name, data['name']) + + oc = ObjectChange.objects.first() + self.assertEqual(oc.changed_object, site) + self.assertEqual(oc.action, OBJECTCHANGE_ACTION_UPDATE) + + def test_delete_object(self): + + site = Site(name='Test Site 1', slug='test-site-1') + site.save() + + self.assertEqual(ObjectChange.objects.count(), 0) + + url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk}) + response = self.client.delete(url, **self.header) + + self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT) + self.assertEqual(Site.objects.count(), 0) + + oc = ObjectChange.objects.first() + self.assertEqual(oc.changed_object, None) + self.assertEqual(oc.object_repr, site.name) + self.assertEqual(oc.action, OBJECTCHANGE_ACTION_DELETE)