def _create_field(self, view_name, version):
        request = factory.get("/")
        request.versioning_scheme = NamespaceVersioning()
        request.version = version

        field = serializers.HyperlinkedRelatedField(view_name=view_name,
                                                    read_only=True)
        field._context = {'request': request}
        return field
    def setUp(self):
        super(TestHyperlinkedRelatedField, self).setUp()

        class MockQueryset(object):
            def get(self, pk):
                return 'object %s' % pk

        self.field = serializers.HyperlinkedRelatedField(
            view_name='namespaced', queryset=MockQueryset())
        request = factory.get('/')
        request.versioning_scheme = NamespaceVersioning()
        request.version = 'v1'
        self.field._context = {'request': request}
 def setUp(self):
     self.queryset = MockQueryset([
         MockObject(pk=1, name='foobar'),
         MockObject(pk=2, name='bazABCqux'),
     ])
     self.field = serializers.HyperlinkedRelatedField(
         view_name='example',
         lookup_field='name',
         lookup_url_kwarg='name',
         queryset=self.queryset,
     )
     self.field.reverse = mock_reverse
     self.field._context = {'request': True}
    def hyperlinked_related_queryset_error(self, exc_type):
        class QuerySet:
            def get(self, *args, **kwargs):
                raise exc_type

        field = serializers.HyperlinkedRelatedField(
            view_name='example',
            lookup_field='name',
            queryset=QuerySet(),
        )
        with pytest.raises(serializers.ValidationError) as excinfo:
            field.to_internal_value('http://example.org/example/doesnotexist/')
        msg = excinfo.value.detail[0]
        assert msg == 'Invalid hyperlink - Object does not exist.'
 class TestSerializer(serializers.Serializer):
     via_unreachable = serializers.HyperlinkedRelatedField(
         source='does_not_exist.unreachable',
         view_name='example',
         read_only=True,
     )