diff --git a/cookbook/tests/api/test_api_food.py b/cookbook/tests/api/test_api_food.py index 87e3317c0..1f0cf5192 100644 --- a/cookbook/tests/api/test_api_food.py +++ b/cookbook/tests/api/test_api_food.py @@ -1,9 +1,8 @@ import json -from django.urls import reverse - from cookbook.models import Food from cookbook.tests.views.test_views import TestViews +from django.urls import reverse class TestApiUnit(TestViews): @@ -19,8 +18,16 @@ class TestApiUnit(TestViews): def test_keyword_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:food-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 200), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:food-list') + ) # verify storage is returned r = self.user_client_1.get(reverse('api:food-list')) @@ -42,12 +49,21 @@ class TestApiUnit(TestViews): self.assertEqual(len(response), 1) def test_keyword_update(self): - r = self.user_client_1.patch(reverse('api:food-detail', args={self.food_1.id}), {'name': 'new'}, content_type='application/json') + r = self.user_client_1.patch( + reverse( + 'api:food-detail', + args={self.food_1.id} + ), + {'name': 'new'}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['name'], 'new') def test_keyword_delete(self): - r = self.user_client_1.delete(reverse('api:food-detail', args={self.food_1.id})) + r = self.user_client_1.delete( + reverse('api:food-detail', args={self.food_1.id}) + ) self.assertEqual(r.status_code, 204) self.assertEqual(Food.objects.count(), 1) diff --git a/cookbook/tests/api/test_api_keyword.py b/cookbook/tests/api/test_api_keyword.py index 90fb68c30..a86f4e426 100644 --- a/cookbook/tests/api/test_api_keyword.py +++ b/cookbook/tests/api/test_api_keyword.py @@ -1,11 +1,8 @@ import json -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - -from cookbook.models import Storage, Sync, Keyword +from cookbook.models import Keyword from cookbook.tests.views.test_views import TestViews +from django.urls import reverse class TestApiKeyword(TestViews): @@ -21,8 +18,16 @@ class TestApiKeyword(TestViews): def test_keyword_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:keyword-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 200), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:keyword-list') + ) # verify storage is returned r = self.user_client_1.get(reverse('api:keyword-list')) @@ -35,7 +40,9 @@ class TestApiKeyword(TestViews): response = json.loads(r.content) self.assertEqual(len(response), 1) - r = self.user_client_1.get(f'{reverse("api:keyword-list")}?query=chicken') + r = self.user_client_1.get( + f'{reverse("api:keyword-list")}?query=chicken' + ) response = json.loads(r.content) self.assertEqual(len(response), 0) @@ -44,12 +51,24 @@ class TestApiKeyword(TestViews): self.assertEqual(len(response), 1) def test_keyword_update(self): - r = self.user_client_1.patch(reverse('api:keyword-detail', args={self.keyword_1.id}), {'name': 'new'}, content_type='application/json') + r = self.user_client_1.patch( + reverse( + 'api:keyword-detail', + args={self.keyword_1.id} + ), + {'name': 'new'}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['name'], 'new') def test_keyword_delete(self): - r = self.user_client_1.delete(reverse('api:keyword-detail', args={self.keyword_1.id})) + r = self.user_client_1.delete( + reverse( + 'api:keyword-detail', + args={self.keyword_1.id} + ) + ) self.assertEqual(r.status_code, 204) self.assertEqual(Keyword.objects.count(), 1) diff --git a/cookbook/tests/api/test_api_recipe.py b/cookbook/tests/api/test_api_recipe.py index a6ddfa5b2..9bd679011 100644 --- a/cookbook/tests/api/test_api_recipe.py +++ b/cookbook/tests/api/test_api_recipe.py @@ -1,11 +1,7 @@ -import json - -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - -from cookbook.models import Storage, Sync, Keyword, ShoppingList, Recipe +from cookbook.models import Recipe from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse class TestApiShopping(TestViews): @@ -19,8 +15,17 @@ class TestApiShopping(TestViews): ) def test_shopping_view_permissions(self): - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 200), (self.user_client_1, 200), - (self.user_client_2, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:recipe-detail', args={self.internal_recipe.id})) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 200), + (self.user_client_1, 200), + (self.user_client_2, 200), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse( + 'api:recipe-detail', args={self.internal_recipe.id}) + ) # TODO add tests for editing diff --git a/cookbook/tests/api/test_api_shopping.py b/cookbook/tests/api/test_api_shopping.py index cb902bb4d..e25a16a5a 100644 --- a/cookbook/tests/api/test_api_shopping.py +++ b/cookbook/tests/api/test_api_shopping.py @@ -1,27 +1,48 @@ -import json - -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - -from cookbook.models import Storage, Sync, Keyword, ShoppingList +from cookbook.models import ShoppingList from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse class TestApiShopping(TestViews): def setUp(self): super(TestApiShopping, self).setUp() - self.list_1 = ShoppingList.objects.create(created_by=auth.get_user(self.user_client_1)) - self.list_2 = ShoppingList.objects.create(created_by=auth.get_user(self.user_client_2)) + self.list_1 = ShoppingList.objects.create( + created_by=auth.get_user(self.user_client_1) + ) + self.list_2 = ShoppingList.objects.create( + created_by=auth.get_user(self.user_client_2) + ) def test_shopping_view_permissions(self): - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 404), (self.admin_client_1, 404), (self.superuser_client, 200)], - reverse('api:shoppinglist-detail', args={self.list_1.id})) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 404), + (self.user_client_1, 200), + (self.user_client_2, 404), + (self.admin_client_1, 404), + (self.superuser_client, 200) + ], + reverse( + 'api:shoppinglist-detail', args={self.list_1.id} + ) + ) self.list_1.shared.add(auth.get_user(self.user_client_2)) - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 200), (self.admin_client_1, 404), (self.superuser_client, 200)], - reverse('api:shoppinglist-detail', args={self.list_1.id})) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 404), + (self.user_client_1, 200), + (self.user_client_2, 200), + (self.admin_client_1, 404), + (self.superuser_client, 200) + ], + reverse( + 'api:shoppinglist-detail', args={self.list_1.id}) + ) # TODO add tests for editing diff --git a/cookbook/tests/api/test_api_storage.py b/cookbook/tests/api/test_api_storage.py index 67300f48a..64f57ff84 100644 --- a/cookbook/tests/api/test_api_storage.py +++ b/cookbook/tests/api/test_api_storage.py @@ -1,11 +1,10 @@ import json -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - from cookbook.models import Storage, Sync from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.db.models import ProtectedError +from django.urls import reverse class TestApiStorage(TestViews): @@ -23,8 +22,16 @@ class TestApiStorage(TestViews): def test_storage_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:storage-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 403), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:storage-list') + ) # verify storage is returned r = self.admin_client_1.get(reverse('api:storage-list')) @@ -38,7 +45,14 @@ class TestApiStorage(TestViews): def test_storage_update(self): # can update storage as admin - r = self.admin_client_1.patch(reverse('api:storage-detail', args={self.storage.id}), {'name': 'new', 'password': 'new_password'}, content_type='application/json') + r = self.admin_client_1.patch( + reverse( + 'api:storage-detail', + args={self.storage.id} + ), + {'name': 'new', 'password': 'new_password'}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['name'], 'new') @@ -49,13 +63,20 @@ class TestApiStorage(TestViews): def test_storage_delete(self): # can delete storage as admin - r = self.admin_client_1.delete(reverse('api:storage-detail', args={self.storage.id})) + r = self.admin_client_1.delete( + reverse('api:storage-detail', args={self.storage.id}) + ) self.assertEqual(r.status_code, 204) self.assertEqual(Storage.objects.count(), 0) - self.storage = Storage.objects.create(created_by=auth.get_user(self.admin_client_1), name='test protect') + self.storage = Storage.objects.create( + created_by=auth.get_user(self.admin_client_1), name='test protect' + ) Sync.objects.create(storage=self.storage, ) - # test if deleting a storage with existing sync fails (as sync protects storage) + # test if deleting a storage with existing + # sync fails (as sync protects storage) with self.assertRaises(ProtectedError): - self.admin_client_1.delete(reverse('api:storage-detail', args={self.storage.id})) + self.admin_client_1.delete( + reverse('api:storage-detail', args={self.storage.id}) + ) diff --git a/cookbook/tests/api/test_api_syn_log.py b/cookbook/tests/api/test_api_syn_log.py index d899b28ef..0efaaabdb 100644 --- a/cookbook/tests/api/test_api_syn_log.py +++ b/cookbook/tests/api/test_api_syn_log.py @@ -1,11 +1,9 @@ import json -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - from cookbook.models import Storage, Sync, SyncLog from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse class TestApiSyncLog(TestViews): @@ -26,12 +24,22 @@ class TestApiSyncLog(TestViews): path='path' ) - self.sync_log = SyncLog.objects.create(sync=self.sync, status='success') + self.sync_log = SyncLog.objects.create( + sync=self.sync, status='success' + ) def test_sync_log_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:synclog-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 403), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:synclog-list') + ) # verify log entry is returned r = self.admin_client_1.get(reverse('api:synclog-list')) @@ -42,10 +50,21 @@ class TestApiSyncLog(TestViews): def test_sync_log_update(self): # read only view - r = self.admin_client_1.patch(reverse('api:synclog-detail', args={self.sync.id}), {'path': 'new'}, content_type='application/json') + r = self.admin_client_1.patch( + reverse( + 'api:synclog-detail', + args={self.sync.id} + ), + {'path': 'new'}, + content_type='application/json' + ) self.assertEqual(r.status_code, 405) def test_sync_log_delete(self): # read only view - r = self.admin_client_1.delete(reverse('api:synclog-detail', args={self.sync.id})) + r = self.admin_client_1.delete( + reverse( + 'api:synclog-detail', + args={self.sync.id}) + ) self.assertEqual(r.status_code, 405) diff --git a/cookbook/tests/api/test_api_sync.py b/cookbook/tests/api/test_api_sync.py index 1b5963cd7..26c84df15 100644 --- a/cookbook/tests/api/test_api_sync.py +++ b/cookbook/tests/api/test_api_sync.py @@ -1,11 +1,9 @@ import json -from django.contrib import auth -from django.db.models import ProtectedError -from django.urls import reverse - from cookbook.models import Storage, Sync from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse class TestApiSync(TestViews): @@ -28,8 +26,16 @@ class TestApiSync(TestViews): def test_sync_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 403), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:sync-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 403), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:sync-list') + ) # verify sync is returned r = self.admin_client_1.get(reverse('api:sync-list')) @@ -41,13 +47,22 @@ class TestApiSync(TestViews): def test_sync_update(self): # can update sync as admin - r = self.admin_client_1.patch(reverse('api:sync-detail', args={self.sync.id}), {'path': 'new'}, content_type='application/json') + r = self.admin_client_1.patch( + reverse( + 'api:sync-detail', + args={self.sync.id} + ), + {'path': 'new'}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['path'], 'new') def test_sync_delete(self): # can delete sync as admin - r = self.admin_client_1.delete(reverse('api:sync-detail', args={self.sync.id})) + r = self.admin_client_1.delete( + reverse('api:sync-detail', args={self.sync.id}) + ) self.assertEqual(r.status_code, 204) self.assertEqual(Sync.objects.count(), 0) diff --git a/cookbook/tests/api/test_api_unit.py b/cookbook/tests/api/test_api_unit.py index 3d849166b..e21a4f34d 100644 --- a/cookbook/tests/api/test_api_unit.py +++ b/cookbook/tests/api/test_api_unit.py @@ -1,9 +1,8 @@ import json -from django.urls import reverse - from cookbook.models import Unit from cookbook.tests.views.test_views import TestViews +from django.urls import reverse class TestApiUnit(TestViews): @@ -19,8 +18,16 @@ class TestApiUnit(TestViews): def test_keyword_list(self): # verify view permissions are applied accordingly - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 403), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:unit-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 403), + (self.user_client_1, 200), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:unit-list') + ) # verify storage is returned r = self.user_client_1.get(reverse('api:unit-list')) @@ -42,12 +49,21 @@ class TestApiUnit(TestViews): self.assertEqual(len(response), 1) def test_keyword_update(self): - r = self.user_client_1.patch(reverse('api:unit-detail', args={self.unit_1.id}), {'name': 'new'}, content_type='application/json') + r = self.user_client_1.patch( + reverse( + 'api:unit-detail', + args={self.unit_1.id} + ), + {'name': 'new'}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['name'], 'new') def test_keyword_delete(self): - r = self.user_client_1.delete(reverse('api:unit-detail', args={self.unit_1.id})) + r = self.user_client_1.delete( + reverse('api:unit-detail', args={self.unit_1.id}) + ) self.assertEqual(r.status_code, 204) self.assertEqual(Unit.objects.count(), 1) diff --git a/cookbook/tests/api/test_api_username.py b/cookbook/tests/api/test_api_username.py index 23f3c2732..23657ece2 100644 --- a/cookbook/tests/api/test_api_username.py +++ b/cookbook/tests/api/test_api_username.py @@ -1,11 +1,7 @@ -import json - +from cookbook.tests.views.test_views import TestViews from django.contrib import auth from django.urls import reverse -from cookbook.models import UserPreference -from cookbook.tests.views.test_views import TestViews - class TestApiUsername(TestViews): @@ -13,15 +9,33 @@ class TestApiUsername(TestViews): super(TestApiUsername, self).setUp() def test_forbidden_methods(self): - r = self.user_client_1.post(reverse('api:username-list')) + r = self.user_client_1.post( + reverse('api:username-list')) self.assertEqual(r.status_code, 405) - r = self.user_client_1.put(reverse('api:username-detail', args=[auth.get_user(self.user_client_1).pk])) + r = self.user_client_1.put( + reverse( + 'api:username-detail', + args=[auth.get_user(self.user_client_1).pk]) + ) self.assertEqual(r.status_code, 405) - r = self.user_client_1.delete(reverse('api:username-detail', args=[auth.get_user(self.user_client_1).pk])) + r = self.user_client_1.delete( + reverse( + 'api:username-detail', + args=[auth.get_user(self.user_client_1).pk] + ) + ) self.assertEqual(r.status_code, 405) def test_username_list(self): - self.batch_requests([(self.anonymous_client, 403), (self.guest_client_1, 200), (self.user_client_1, 200), (self.admin_client_1, 200), (self.superuser_client, 200)], - reverse('api:username-list')) + self.batch_requests( + [ + (self.anonymous_client, 403), + (self.guest_client_1, 200), + (self.user_client_1, 200), + (self.admin_client_1, 200), + (self.superuser_client, 200) + ], + reverse('api:username-list') + ) diff --git a/cookbook/tests/api/test_api_userpreference.py b/cookbook/tests/api/test_api_userpreference.py index f13ae2745..7e8d051aa 100644 --- a/cookbook/tests/api/test_api_userpreference.py +++ b/cookbook/tests/api/test_api_userpreference.py @@ -1,10 +1,9 @@ import json -from django.contrib import auth -from django.urls import reverse - from cookbook.models import UserPreference from cookbook.tests.views.test_views import TestViews +from django.contrib import auth +from django.urls import reverse class TestApiUserPreference(TestViews): @@ -16,8 +15,13 @@ class TestApiUserPreference(TestViews): r = self.user_client_1.post(reverse('api:userpreference-list')) self.assertEqual(r.status_code, 201) response = json.loads(r.content) - self.assertEqual(response['user'], auth.get_user(self.user_client_1).id) - self.assertEqual(response['theme'], UserPreference._meta.get_field('theme').get_default()) + self.assertEqual( + response['user'], auth.get_user(self.user_client_1).id + ) + self.assertEqual( + response['theme'], + UserPreference._meta.get_field('theme').get_default() + ) def test_preference_list(self): UserPreference.objects.create(user=auth.get_user(self.user_client_1)) @@ -28,7 +32,9 @@ class TestApiUserPreference(TestViews): self.assertEqual(r.status_code, 200) response = json.loads(r.content) self.assertEqual(len(response), 1) - self.assertEqual(response[0]['user'], auth.get_user(self.user_client_1).id) + self.assertEqual( + response[0]['user'], auth.get_user(self.user_client_1).id + ) # superusers can see all user prefs in list r = self.superuser_client.get(reverse('api:userpreference-list')) @@ -40,47 +46,104 @@ class TestApiUserPreference(TestViews): UserPreference.objects.create(user=auth.get_user(self.user_client_1)) UserPreference.objects.create(user=auth.get_user(self.guest_client_1)) - self.batch_requests([(self.guest_client_1, 404), (self.user_client_1, 200), (self.user_client_2, 404), (self.anonymous_client, 403), (self.admin_client_1, 404), (self.superuser_client, 200)], - reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + self.batch_requests( + [ + (self.guest_client_1, 404), + (self.user_client_1, 200), + (self.user_client_2, 404), + (self.anonymous_client, 403), + (self.admin_client_1, 404), + (self.superuser_client, 200) + ], + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ) + ) def test_preference_update(self): UserPreference.objects.create(user=auth.get_user(self.user_client_1)) UserPreference.objects.create(user=auth.get_user(self.guest_client_1)) # can update users preference - r = self.user_client_1.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.DARKLY}, content_type='application/json') + r = self.user_client_1.put( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ), + {'theme': UserPreference.DARKLY}, + content_type='application/json' + ) response = json.loads(r.content) self.assertEqual(r.status_code, 200) self.assertEqual(response['theme'], UserPreference.DARKLY) # cant set another users non existent pref - r = self.user_client_1.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_2).id}), {'theme': UserPreference.DARKLY}, content_type='application/json') + r = self.user_client_1.put( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_2).id} + ), + {'theme': UserPreference.DARKLY}, + content_type='application/json' + ) self.assertEqual(r.status_code, 404) # cant set another users existent pref - r = self.user_client_2.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.FLATLY}, content_type='application/json') + r = self.user_client_2.put( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ), + {'theme': UserPreference.FLATLY}, + content_type='application/json' + ) self.assertEqual(r.status_code, 404) # can set pref as superuser - r = self.superuser_client.put(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id}), {'theme': UserPreference.FLATLY}, content_type='application/json') + r = self.superuser_client.put( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ), + {'theme': UserPreference.FLATLY}, + content_type='application/json' + ) self.assertEqual(r.status_code, 200) def test_preference_delete(self): UserPreference.objects.create(user=auth.get_user(self.user_client_1)) # can delete own preference - r = self.user_client_1.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + r = self.user_client_1.delete( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ) + ) self.assertEqual(r.status_code, 204) self.assertEqual(UserPreference.objects.count(), 0) - UserPreference.objects.create(user=auth.get_user(self.user_client_1)) + UserPreference.objects.create(user=auth.get_user(self.user_client_1 + ) + ) # cant delete other preference - r = self.user_client_2.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + r = self.user_client_2.delete( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ) + ) self.assertEqual(r.status_code, 404) self.assertEqual(UserPreference.objects.count(), 1) # superuser can delete everything - r = self.superuser_client.delete(reverse('api:userpreference-detail', args={auth.get_user(self.user_client_1).id})) + r = self.superuser_client.delete( + reverse( + 'api:userpreference-detail', + args={auth.get_user(self.user_client_1).id} + ) + ) self.assertEqual(r.status_code, 204) self.assertEqual(UserPreference.objects.count(), 0)