Update TaggedItemTest

This commit is contained in:
Jeremy Stretch 2020-06-17 10:50:37 -04:00
parent ce8b9b5007
commit 79088cc549

View File

@ -9,42 +9,53 @@ class TaggedItemTest(APITestCase):
""" """
Test the application of Tags to and item (a Site, for example) upon creation (POST) and modification (PATCH). Test the application of Tags to and item (a Site, for example) upon creation (POST) and modification (PATCH).
""" """
def setUp(self):
super().setUp()
def test_create_tagged_item(self): def test_create_tagged_item(self):
tags = self.create_tags("Foo", "Bar", "Baz")
data = { data = {
'name': 'Test Site', 'name': 'Test Site',
'slug': 'test-site', 'slug': 'test-site',
'tags': ['Foo', 'Bar', 'Baz'] 'tags': [t.pk for t in tags]
} }
url = reverse('dcim-api:site-list') url = reverse('dcim-api:site-list')
self.add_permissions('dcim.add_site') self.add_permissions('dcim.add_site')
response = self.client.post(url, data, format='json', **self.header) response = self.client.post(url, data, format='json', **self.header)
self.assertHttpStatus(response, status.HTTP_201_CREATED) self.assertHttpStatus(response, status.HTTP_201_CREATED)
self.assertEqual(sorted(response.data['tags']), sorted(data['tags'])) self.assertListEqual(
sorted([t['id'] for t in response.data['tags']]),
sorted(data['tags'])
)
site = Site.objects.get(pk=response.data['id']) site = Site.objects.get(pk=response.data['id'])
tags = [tag.name for tag in site.tags.all()] self.assertListEqual(
self.assertEqual(sorted(tags), sorted(data['tags'])) sorted([t.name for t in site.tags.all()]),
sorted(["Foo", "Bar", "Baz"])
)
def test_update_tagged_item(self): def test_update_tagged_item(self):
site = Site.objects.create( site = Site.objects.create(
name='Test Site', name='Test Site',
slug='test-site' slug='test-site'
) )
site.tags.add('Foo', 'Bar', 'Baz') site.tags.add("Foo", "Bar", "Baz")
self.create_tags("New Tag")
data = { data = {
'tags': ['Foo', 'Bar', 'New Tag'] 'tags': [
{"name": "Foo"},
{"name": "Bar"},
{"name": "New Tag"},
]
} }
self.add_permissions('dcim.change_site') self.add_permissions('dcim.change_site')
url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk}) url = reverse('dcim-api:site-detail', kwargs={'pk': site.pk})
response = self.client.patch(url, data, format='json', **self.header) response = self.client.patch(url, data, format='json', **self.header)
self.assertHttpStatus(response, status.HTTP_200_OK) self.assertHttpStatus(response, status.HTTP_200_OK)
self.assertEqual(sorted(response.data['tags']), sorted(data['tags'])) self.assertListEqual(
sorted([t['name'] for t in response.data['tags']]),
sorted([t['name'] for t in data['tags']])
)
site = Site.objects.get(pk=response.data['id']) site = Site.objects.get(pk=response.data['id'])
tags = [tag.name for tag in site.tags.all()] self.assertListEqual(
self.assertEqual(sorted(tags), sorted(data['tags'])) sorted([t.name for t in site.tags.all()]),
sorted(["Foo", "Bar", "New Tag"])
)