from django.test import TestCase, Client from django.contrib.auth.models import Permission from knox.models import AuthToken from authentication.models import ExtendedUser from inventory.models import Container class ContainerTestCase(TestCase): def setUp(self): self.user = ExtendedUser.objects.create_user('testuser', 'test', 'test') self.user.user_permissions.add(*Permission.objects.all()) self.token = AuthToken.objects.create(user=self.user) self.client = Client(headers={'Authorization': 'Token ' + self.token[1]}) def test_empty(self): response = self.client.get('/api/2/boxes/') self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), []) def test_members(self): Container.objects.create(name='BOX') response = self.client.get('/api/2/boxes/') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.json()), 1) self.assertEqual(response.json()[0]['cid'], 1) self.assertEqual(response.json()[0]['name'], 'BOX') self.assertEqual(response.json()[0]['itemCount'], 0) def test_multi_members(self): Container.objects.create(name='BOX 1') Container.objects.create(name='BOX 2') Container.objects.create(name='BOX 3') response = self.client.get('/api/2/boxes/') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.json()), 3) def test_create_container(self): response = self.client.post('/api/2/box/', {'name': 'BOX'}) self.assertEqual(response.status_code, 201) self.assertEqual(response.json()['cid'], 1) self.assertEqual(response.json()['name'], 'BOX') self.assertEqual(response.json()['itemCount'], 0) self.assertEqual(len(Container.objects.all()), 1) self.assertEqual(Container.objects.all()[0].cid, 1) self.assertEqual(Container.objects.all()[0].name, 'BOX') def test_update_container(self): box = Container.objects.create(name='BOX 1') response = self.client.put(f'/api/2/box/{box.cid}/', {'name': 'BOX 2'}, content_type='application/json') self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['cid'], 1) self.assertEqual(response.json()['name'], 'BOX 2') self.assertEqual(response.json()['itemCount'], 0) self.assertEqual(len(Container.objects.all()), 1) self.assertEqual(Container.objects.all()[0].cid, 1) self.assertEqual(Container.objects.all()[0].name, 'BOX 2') def test_delete_container(self): box = Container.objects.create(name='BOX 1') Container.objects.create(name='BOX 2') self.assertEqual(len(Container.objects.all()), 2) response = self.client.delete(f'/api/2/box/{box.cid}/') self.assertEqual(response.status_code, 204) self.assertEqual(len(Container.objects.all()), 1)