def test_can_list_preference_of_requeting_user(self): second_user = User( username="******", email="*****@*****.**", is_superuser=True, is_staff=True) second_user.set_password('test') second_user.save() manager = registry.manager(instance=self.user) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(len(payload), len(registry.preferences())) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) # This should be 7 because each user gets 7 preferences by default. self.assertEqual(len(payload), 7) for e in payload: pref = manager.get_db_pref(section=e['section'], name=e['name']) serializer = serializers.UserPreferenceSerializer(pref) self.assertEqual(pref.preference.identifier(), e['identifier'])
def test_can_list_preference_of_requeting_user(self): second_user = User(username="******", email="*****@*****.**", is_superuser=True, is_staff=True) second_user.set_password('test') second_user.save() manager = registry.manager(instance=self.user) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(len(payload), len(registry.preferences())) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) # This should be 7 because each user gets 7 preferences by default. self.assertEqual(len(payload), 8) for e in payload: pref = manager.get_db_pref(section=e['section'], name=e['name']) serializer = serializers.UserPreferenceSerializer(pref) self.assertEqual(pref.preference.identifier(), e['identifier'])
def test_serializer_includes_additional_data_if_any(self): user = User(username="******", email="*****@*****.**") user.set_password('test') user.save() manager = user_registry.manager(instance=user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') serializer = UserPreferenceSerializer(pref) self.assertEqual(serializer.data['additional_data']['choices'], pref.preference.choices)
def test_can_detail_preference(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(pref.preference.identifier(), payload['identifier']) self.assertEqual(pref.value, payload['value'])
def test_can_detail_preference(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse( 'api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(pref.preference.identifier(), payload['identifier']) self.assertEqual(pref.value, payload['value'])
def test_update_preference_returns_validation_error(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.patch(url, json.dumps({'value': 'Z'}), content_type='application/json') self.assertEqual(response.status_code, 400) payload = json.loads(response.content.decode('utf-8')) self.assertIn('valid choice', payload['value'][0])
def test_can_update_preference(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.patch(url, json.dumps({'value': 'P'}), content_type='application/json') self.assertEqual(response.status_code, 200) pref = manager.get_db_pref(section='user', name='favorite_vegetable') self.assertEqual(pref.value, 'P')
def test_update_preference_returns_validation_error(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse( 'api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.patch( url, json.dumps({'value': 'Z'}), content_type='application/json') self.assertEqual(response.status_code, 400) payload = json.loads(response.content.decode('utf-8')) self.assertIn('valid choice', payload['value'][0])
def test_can_update_preference(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse( 'api:user-detail', kwargs={'pk': pref.preference.identifier()}) self.client.login(username='******', password="******") response = self.client.patch( url, json.dumps({'value': 'P'}), content_type='application/json') self.assertEqual(response.status_code, 200) pref = manager.get_db_pref(section='user', name='favorite_vegetable') self.assertEqual(pref.value, 'P')
def test_can_list_preferences(self): manager = registry.manager(instance=self.user) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(len(payload), len(registry.preferences())) for e in payload: pref = manager.get_db_pref(section=e['section'], name=e['name']) serializer = serializers.UserPreferenceSerializer(pref) self.assertEqual(pref.preference.identifier(), e['identifier'])
def test_serializer_includes_additional_data_if_any(self): user = User( username="******", email="*****@*****.**") user.set_password('test') user.save() manager = user_registry.manager(instance=user) pref = manager.get_db_pref( section='user', name='favorite_vegetable') serializer = UserPreferenceSerializer(pref) self.assertEqual( serializer.data['additional_data']['choices'], pref.preference.choices)
def test_can_list_preferences(self): manager = registry.manager(instance=self.user) url = reverse('api:user-list') self.client.login(username='******', password="******") response = self.client.get(url) self.assertEqual(response.status_code, 200) payload = json.loads(response.content.decode('utf-8')) self.assertEqual(len(payload), len(registry.preferences())) for e in payload: pref = manager.get_db_pref(section=e['section'], name=e['name']) serializer = serializers.UserPreferenceSerializer(pref) self.assertEqual(pref.preference.identifier(), e['identifier'])
def test_can_update_multiple_preferences(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-bulk') self.client.login(username='******', password="******") payload = { 'user__favorite_vegetable': 'C', 'misc__favourite_colour': 'Blue', } response = self.client.post(url, json.dumps(payload), content_type='application/json') self.assertEqual(response.status_code, 200) pref1 = manager.get_db_pref(section='user', name='favorite_vegetable') pref2 = manager.get_db_pref(section='misc', name='favourite_colour') self.assertEqual(pref1.value, 'C') self.assertEqual(pref2.value, 'Blue')
def test_can_update_multiple_preferences(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-bulk') self.client.login(username='******', password="******") payload = { 'user__favorite_vegetable': 'C', 'misc__favourite_colour': 'Blue', } response = self.client.post( url, json.dumps(payload), content_type='application/json') self.assertEqual(response.status_code, 200) pref1 = manager.get_db_pref(section='user', name='favorite_vegetable') pref2 = manager.get_db_pref( section='misc', name='favourite_colour') self.assertEqual(pref1.value, 'C') self.assertEqual(pref2.value, 'Blue')
def test_update_multiple_preferences_with_validation_errors_rollback(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-bulk') self.client.login(username='******', password="******") payload = { 'user__favorite_vegetable': 'Z', 'misc__favourite_colour': 'Blue', } response = self.client.post(url, json.dumps(payload), content_type='application/json') self.assertEqual(response.status_code, 400) errors = json.loads(response.content.decode('utf-8')) self.assertIn('valid choice', errors[pref.preference.identifier()]['value'][0]) pref1 = manager.get_db_pref(section='user', name='favorite_vegetable') pref2 = manager.get_db_pref(section='misc', name='favourite_colour') self.assertEqual(pref1.value, pref1.preference.default) self.assertEqual(pref2.value, pref2.preference.default)
def test_update_multiple_preferences_with_validation_errors_rollback(self): manager = registry.manager(instance=self.user) pref = manager.get_db_pref(section='user', name='favorite_vegetable') url = reverse('api:user-bulk') self.client.login(username='******', password="******") payload = { 'user__favorite_vegetable': 'Z', 'misc__favourite_colour': 'Blue', } response = self.client.post( url, json.dumps(payload), content_type='application/json') self.assertEqual(response.status_code, 400) errors = json.loads(response.content.decode('utf-8')) self.assertIn( 'valid choice', errors[pref.preference.identifier()]['value'][0]) pref1 = manager.get_db_pref(section='user', name='favorite_vegetable') pref2 = manager.get_db_pref( section='misc', name='favourite_colour') self.assertEqual(pref1.value, pref1.preference.default) self.assertEqual(pref2.value, pref2.preference.default)