def test_get_value_returns_empty_value(self): class FakeModelSerializer(object): partial = True parent = None instance = fields.ListField(child=fields.IntegerField()) instance.bind('test', FakeModelSerializer()) self.assertEqual(instance.get_value({'key': [1, 2, 3]}), empty)
def test_set_context_function_not_add_context_for_default(self): instance = fields.CreateOnlyDefault(self.FakeDefault) fake_parent = type('FakeParent', (), {'instance': object()}) serializer_field = fields.IntegerField() serializer_field.bind('pk', fake_parent) instance.set_context(serializer_field) self.assertTrue(instance.is_update) self.assertFalse(hasattr(serializer_field, 'test_attr'))
def test_to_internal_value_for_integer_list(self): instance = fields.ListField(child=fields.IntegerField()) self.assertEqual(instance.to_internal_value([1, 2, 3]), [1, 2, 3])
def test_to_internal_value_empty_list(self): instance = fields.ListField(child=fields.IntegerField()) self.assertEqual(instance.to_internal_value([]), [])
def test_to_internal_value_raises_not_implemented_error(self): instance = fields.ModelField(fields.IntegerField()) with self.assertRaises(NotImplementedError): instance.to_internal_value(10)
class FakeModelSerializer(serializers.ModelSerializer): child = None fields = {'pk': fields.IntegerField()}
def test_to_representation_for_string_list(self): instance = fields.ListField(child=fields.IntegerField()) self.assertEqual(instance.to_representation(['1', '2', '3']), [1, 2, 3])
def test_to_internal_value_raises_validation_error_for_empty_list(self): instance = fields.ListField(child=fields.IntegerField(), allow_empty=False) with self.assertRaises(ValidationError): instance.to_internal_value([])
def test_to_internal_value_raises_validate_exception(self): instance = fields.IntegerField() with self.assertRaises(ValidationError): instance.to_internal_value('object')
def test_to_internal_value_raises_max_string_length_exception(self): instance = fields.IntegerField() with self.assertRaises(ValidationError): data = 'value' * 250 instance.to_internal_value(data)
def test_to_internal_value(self): instance = fields.IntegerField() self.assertEqual(instance.to_internal_value(1), 1)
def test_init_with_min_and_max_values(self): instance = fields.IntegerField(min_value=1, max_value=10) self.assertEqual(instance.min_value, 1) self.assertEqual(instance.max_value, 10)
def test_init_with_max_value(self): instance = fields.IntegerField(max_value=10) self.assertIsNone(instance.min_value) self.assertEqual(instance.max_value, 10)
def test_init_without_borders(self): instance = fields.IntegerField() self.assertIsNone(instance.max_value) self.assertIsNone(instance.min_value)
def test_to_representation_raises_not_implemented_error(self): instance = fields.ModelField(fields.IntegerField()) with self.assertRaises(NotImplementedError): instance.to_representation(10)
def test_to_internal_value_for_list_with_integer_as_a_string(self): instance = fields.ListField(child=fields.IntegerField()) self.assertEqual(instance.to_internal_value(['1', '2', '3']), [1, 2, 3])
def test_to_internal_value_raises_validation_error_for_wrong_value(self): instance = fields.ListField(child=fields.IntegerField()) with self.assertRaises(ValidationError): instance.to_internal_value([1, 2, 'error'])
def test_to_to_representation(self): instance = fields.IntegerField() self.assertEqual(instance.to_representation('1'), 1)
def test_to_representation(self): instance = fields.ListField(child=fields.IntegerField()) self.assertEqual(instance.to_representation([1, 2, 3]), [1, 2, 3])
def test_init_raises_assertion_error_for_child_without_source(self): with self.assertRaises(AssertionError): fields.ListField(child=fields.IntegerField(source='value'))
@pytest.mark.parametrize( "value, expected", [("test_string", "test_string"), (["value_1", "value_2"], "['value_1', 'value_2']"), ({ "key": "value" }, "{'key': 'value'}"), (FakeView(), "<tests.fixtures.fakes.FakeView object>")]) def test_smart_repr(value, expected): assert smart_repr(value) == expected @pytest.mark.parametrize( "field, many, expected", [(fields.IntegerField(), False, 'IntegerField()'), (fields.LargeBinaryField(object, allow_null=True), False, "LargeBinaryField(<class 'object'>, allow_null=True)"), (FakePkField(many=True, read_only=True), True, "bool(child_relation=<utils.test_representation.FakePkField object>, " "many=True, read_only=True)")]) def test_field_repr(field, many, expected): assert field_repr(field, force_many=many) == expected @pytest.mark.parametrize("serializer, indent, force_many, expected", [ (FakeModelSerializer(), 1, False, "FakeModelSerializer():\n" " pk = IntegerField()"), (FakeNestedModelSerializer(), 1, False, "FakeNestedModelSerializer():\n" " nested = FakeModelSerializer():\n" " pk = IntegerField()"),
def test_get_value(self): instance = fields.ListField(child=fields.IntegerField()) instance.bind('test', None) self.assertEqual(instance.get_value({'test': [1, 2, 3]}), [1, 2, 3])
class FakeModelSerializerWithValidators(serializers.ModelSerializer): child = None fields = {'pk': fields.IntegerField()} validators = [ BaseValidator, ]
def test_get_attribute(self): instance = fields.ModelField(fields.IntegerField()) self.assertEqual(instance.get_attribute(10), 10)