def test_invalid_item():
    """
    When given an invalid value the ListOrItemField validate method should raise a ValidationError.
    """
    field = ListOrItemField(CharField(max_length=5))
    with pytest.raises(ValidationError):
        field.run_validators('123456')
def test_validate_required_missing():
    """
    When given a None value the ListOrItemField validate method should raise a ValidationError.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    with pytest.raises(ValidationError):
        field.to_internal_value(None)
def test_validate_required_missing():
    """
    When given a None value the ListOrItemField validate method should raise a ValidationError.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    with pytest.raises(ValidationError):
        field.to_internal_value(None)
def test_invalid_item():
    """
    When given an invalid value the ListOrItemField validate method should raise a ValidationError.
    """
    field = ListOrItemField(child=CharField(max_length=5))
    with pytest.raises(ValidationError):
        field.to_internal_value('123456')
def test_validate_required_missing():
    """
    When given a None value the ListOrItemField validate method should raise a ValidationError.
    """
    field = ListOrItemField()
    with pytest.raises(ValidationError):
        field.validate(None)
def test_from_native_item():
    """
    When given a valid item, the ListOrItemField from_native method should utilize the item
    from-native logic.
    """
    field = ListOrItemField(DateField(format=ISO_8601))
    data = field.from_native(date.today().isoformat())
    assert date.today() == data
def test_from_native_list():
    """
    When given a valid list, the ListOrItemField from_native method should utilize the list
    from-native logic.
    """
    field = ListOrItemField(DateField(format=ISO_8601))
    data = field.from_native([date.today().isoformat()])
    assert [date.today()] == data
def test_list_value_invalid_items():
    """
    When given a list with an invalid value the ListOrItemField validate method should raise a
    ValidationError.
    """
    field = ListOrItemField(child=CharField(max_length=5))
    with pytest.raises(ValidationError):
        field.to_internal_value(['12345', '123456'])
def test_to_representation_list():
    """
    When given a valid list, the ListOrItemField to_representation method should utilize the list to-native
    logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_representation([date.today()])
    assert [date.today().isoformat()] == data
def test_to_representation_item():
    """
    When given a valid item, the ListOrItemField to_representation method should utilize the item to-native
    logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_representation(date.today())
    assert date.today().isoformat() == data
def test_to_internal_value_list():
    """
    When given a valid list, the ListOrItemField to_internal_value method should utilize the list
    from-native logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_internal_value([date.today().isoformat()])
    assert [date.today()] == data
def test_to_representation_list():
    """
    When given a valid list, the ListOrItemField to_representation method should utilize the list to-native
    logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_representation([date.today()])
    assert [date.today().isoformat()] == data
def test_to_internal_value_item():
    """
    When given a valid item, the ListOrItemField to_internal_value method should utilize the item
    from-native logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_internal_value(date.today().isoformat())
    assert date.today() == data
def test_to_representation_item():
    """
    When given a valid item, the ListOrItemField to_representation method should utilize the item to-native
    logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_representation(date.today())
    assert date.today().isoformat() == data
def test_to_internal_value_list():
    """
    When given a valid list, the ListOrItemField to_internal_value method should utilize the list
    from-native logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_internal_value([date.today().isoformat()])
    assert [date.today()] == data
def test_to_internal_value_item():
    """
    When given a valid item, the ListOrItemField to_internal_value method should utilize the item
    from-native logic.
    """
    field = ListOrItemField(child=DateField(format=ISO_8601))
    data = field.to_internal_value(date.today().isoformat())
    assert date.today() == data
def test_list_value_invalid_items():
    """
    When given a list with an invalid value the ListOrItemField validate method should raise a
    ValidationError.
    """
    field = ListOrItemField(CharField(max_length=5))
    with pytest.raises(ValidationError) as e:
        field.validate(['12345', '123456'])
        assert [1] == e.messages[0].keys()
def test_validate_not_required_missing():
    """
    When given a null value and is not required, do not raise a ValidationError
    """
    field = ListOrItemField(required=False)

    try:
        field.validate(None)
    except ValidationError:
        assert False, "ValidationError was raised"
def test_list_value_invalid_items():
    """
    When given a list with an invalid value the ListOrItemField validate method should raise a
    ValidationError.
    """
    field = ListOrItemField(CharField(max_length=5))
    try:
        field.run_validators(['12345', '123456'])
        assert False, 'Expected ValidationError'
    except ValidationError as e:
        assert [1] == list(e.messages[0].keys())
Exemple #20
0
class ListOrItemKwArgsSerializer(serializers.Serializer):
    authors = ListOrItemField(child=serializers.IntegerField(), required=False)
Exemple #21
0
class ContainerSerializer(serializers.Serializer):
    embedded = ListOrItemField(child=EmbeddedSerializer())