def test_can_serialize_preference(self): manager = registry.manager() pref = manager.get_db_pref(section='user', name='max_users') serializer = serializers.GlobalPreferenceSerializer(pref) data = serializer.data self.assertEqual(data['default'], pref.preference.api_repr(pref.preference.default)) self.assertEqual(data['value'], pref.preference.api_repr(pref.value)) self.assertEqual(data['identifier'], pref.preference.identifier()) self.assertEqual(data['section'], pref.section) self.assertEqual(data['name'], pref.name) self.assertEqual(data['verbose_name'], pref.preference.verbose_name) self.assertEqual(data['help_text'], pref.preference.help_text) self.assertEqual(data['field']['class'], 'IntegerField') self.assertEqual(data['field']['input_type'], 'number') self.assertEqual(data['field']['widget']['class'], 'NumberInput') pref = manager.get_db_pref(section='exam', name='duration') serializer = serializers.GlobalPreferenceSerializer(pref) data = serializer.data self.assertEqual(data['value'], '03:00:00') pref = manager.get_db_pref(section='company', name='RegistrationDate') serializer = serializers.GlobalPreferenceSerializer(pref) data = serializer.data self.assertEqual(data['value'], '1998-09-04') pref = manager.get_db_pref(section='child', name='BirthDateTime') serializer = serializers.GlobalPreferenceSerializer(pref) data = serializer.data self.assertEqual(data['value'], '1992-05-04T03:04:10.000150+05:30')
def test_serializer_also_uses_custom_clean_method(self): manager = registry.manager() pref = manager.get_db_pref(section='user', name='max_users') # will fail because of preference cleaning data = {'value': 1001} serializer = serializers.GlobalPreferenceSerializer(pref, data=data) is_valid = serializer.is_valid() self.assertFalse(is_valid) self.assertIn('value', serializer.errors)
def get(self, request, *args, **kwargs): manager = global_preferences_registry.manager() manager.all() all_preferences = manager.model.objects.all().order_by( "section", "name") api_preferences = [ p for p in all_preferences if getattr(p.preference, "show_in_api", False) ] data = serializers.GlobalPreferenceSerializer(api_preferences, many=True).data return Response(data, status=200)
def test_can_change_preference_value_using_serializer(self): manager = registry.manager() pref = manager.get_db_pref(section='user', name='max_users') data = {'value': 666} serializer = serializers.GlobalPreferenceSerializer(pref, data=data) is_valid = serializer.is_valid() self.assertTrue(is_valid) serializer.save() pref = manager.get_db_pref(section='user', name='max_users') self.assertEqual(pref.value, data['value'])
def test_can_list_preferences(self): manager = registry.manager() url = reverse('api:global-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.GlobalPreferenceSerializer(pref) self.assertEqual(pref.preference.identifier(), e['identifier'])
def test_can_serialize_preference(self): manager = registry.manager() pref = manager.get_db_pref(section='user', name='max_users') serializer = serializers.GlobalPreferenceSerializer(pref) data = serializer.data self.assertEqual(data['default'], pref.preference.api_repr(pref.preference.default)) self.assertEqual(data['value'], pref.preference.api_repr(pref.value)) self.assertEqual(data['identifier'], pref.preference.identifier()) self.assertEqual(data['section'], pref.section) self.assertEqual(data['name'], pref.name) self.assertEqual(data['verbose_name'], pref.preference.verbose_name) self.assertEqual(data['help_text'], pref.preference.help_text) self.assertEqual(data['field']['class'], 'IntegerField') self.assertEqual(data['field']['input_type'], 'number') self.assertEqual(data['field']['widget']['class'], 'NumberInput')