Exemple #1
0
    def test_deserialize(self, format_type, pluralize_type, resource_type,
                         foreign_key_target, settings):
        settings.JSON_API_FORMAT_TYPES = format_type
        settings.JSON_API_PLURALIZE_TYPES = pluralize_type

        serializer = ForeignKeySourceSerializer(data={
            "target": {
                "type": resource_type,
                "id": str(foreign_key_target.pk)
            }
        })

        assert serializer.is_valid()
        assert serializer.validated_data["target"] == foreign_key_target
Exemple #2
0
    def test_validation_fails_on_invalid_type(self, format_type,
                                              pluralize_type, resource_type,
                                              foreign_key_target, settings):
        settings.JSON_API_FORMAT_TYPES = format_type
        settings.JSON_API_PLURALIZE_TYPES = pluralize_type

        with pytest.raises(Conflict) as e:
            serializer = ForeignKeySourceSerializer(
                data={
                    "target": {
                        "type": resource_type,
                        "id": str(foreign_key_target.pk)
                    }
                })
            serializer.is_valid()
        assert e.value.status_code == status.HTTP_409_CONFLICT
Exemple #3
0
    def test_serialize(self, format_type, pluralize_type, resource_type,
                       foreign_key_target, settings):
        settings.JSON_API_FORMAT_TYPES = format_type
        settings.JSON_API_PLURALIZE_TYPES = pluralize_type

        serializer = ForeignKeySourceSerializer(
            instance={"target": foreign_key_target})
        expected = {
            "type": resource_type,
            "id": str(foreign_key_target.pk),
        }

        assert serializer.data["target"] == expected
Exemple #4
0
 def test_invalid_resource_id_object(self, resource_identifier, error):
     serializer = ForeignKeySourceSerializer(
         data={"target": resource_identifier})
     assert not serializer.is_valid()
     assert serializer.errors == {"target": [error]}