def test_get_field_names_with_include(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = ('id', 'name') serializer = VehicleSerializer() info = model_info(Vehicle) field_names = serializer.get_field_names([], info) self.assertEqual(set(field_names), {Vehicle.id.key, Vehicle.name.key})
def test_build_unknows_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' serializer = VehicleSerializer() info = model_info(Vehicle) with self.assertRaises(ImproperlyConfigured): serializer.build_field('abcde', info, 0)
def test_build_property_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' serializer = VehicleSerializer() info = model_info(Vehicle) field = serializer.build_field('lower_name', info, 0) self.assertIsInstance(field, fields.ReadOnlyField)
def test_get_field_names_includes_all_required_fields(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = ('id', 'name') serializer = VehicleSerializer() info = model_info(Vehicle) with self.assertRaises(AssertionError): serializer.get_field_names(['type'], info)
def test_build_composite_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' serializer = VehicleSerializer() info = model_info(Vehicle) field = serializer.build_field(Vehicle.engine.key, info, 0) self.assertIsInstance(field, CompositeSerializer) self.assertEqual(len(field.fields), 4)
def test_build_one_to_many_relationship_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' serializer = VehicleSerializer() info = model_info(Vehicle) nested_serializer = serializer.build_field(Vehicle.owner.key, info, 0) self.assertIsNotNone(nested_serializer) self.assertIsInstance(nested_serializer, ModelSerializer) self.assertEqual(len(nested_serializer.fields), 2)
def test_build_enum_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = ('type', ) serializer = VehicleSerializer() info = model_info(Vehicle) field = serializer.build_field(Vehicle.type.key, info, 0) self.assertEqual(field.help_text, Vehicle.type.doc) self.assertEqual(field.label, 'Type') self.assertTrue(field.required) self.assertIsInstance(field, fields.ChoiceField) self.assertFalse(field.allow_null)
def test_build_standard_char_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' serializer = VehicleSerializer() info = model_info(Vehicle) field = serializer.build_field(Vehicle.name.key, info, 0) self.assertEqual(field.help_text, Vehicle.name.doc) self.assertEqual(field.label, 'Name') self.assertFalse(field.required) self.assertIsInstance(field, fields.CharField) self.assertTrue(field.allow_null)
def test_get_field_names_with_exclude(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session exclude = ('type', 'options') serializer = VehicleSerializer() info = model_info(Vehicle) field_names = serializer.get_field_names([], info) self.assertEqual( set(field_names), { Vehicle.created_at.key, Vehicle.engine.key, Vehicle.id.key, Vehicle.name.key, Vehicle.other.key, Vehicle.owner.key, Vehicle.paint.key, Vehicle.is_used.key, 'url' })
def test_build_one_to_many_relationship_field_with_nested_updates_disabled( self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = '__all__' extra_kwargs = {'owner': {'allow_nested_updates': False}} serializer = VehicleSerializer() info = model_info(Vehicle) nested_serializer = serializer.build_field(Vehicle.owner.key, info, 0) self.assertIsNotNone(nested_serializer) self.assertIsInstance(nested_serializer, ModelSerializer) self.assertEqual(len(nested_serializer.fields), 2) self.assertTrue(nested_serializer.fields['name'].read_only)
def test_get_default_field_names_should_get_all_field_names(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = ('id', 'name') serializer = VehicleSerializer() info = model_info(Vehicle) field_names = serializer.get_default_field_names([], info) self.assertEqual( set(field_names), { Vehicle.created_at.key, Vehicle.engine.key, Vehicle.id.key, Vehicle.name.key, Vehicle.options.key, Vehicle.other.key, Vehicle.owner.key, Vehicle.paint.key, Vehicle.type.key, Vehicle.is_used.key, 'url' })
def test_build_choice_field(self): class VehicleSerializer(ModelSerializer): class Meta: model = Vehicle session = session fields = ('paint', ) serializer = VehicleSerializer() info = model_info(Vehicle) field = serializer.build_field(Vehicle.paint.key, info, 0) self.assertEqual(field.help_text, Vehicle.paint.doc) self.assertEqual(field.label, 'Paint') self.assertFalse(field.required) self.assertIsInstance(field, fields.ChoiceField) self.assertEqual(field.choices, OrderedDict([(color, color) for color in COLORS])) self.assertTrue(field.allow_null)