Пример #1
0
def test_searches_responses_streamed_response__iter__():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    fr = FieldedResponse()
    sr = StreamedResponse(fr)
    fr.response = {}
    assert list(sr) == [b'{', b'}']
    fr.response = {'a': 1}
    assert list(sr) == [b'{', b'"a"', b':', b'1', b'}']
    fr.response = {'a': 1, 'b': (x for x in [1, 2, 3])}
    assert list(sr) == [
        b'{', b'"a"', b':', b'1', b',', b'"b"', b':', b'[', b'1', b',', b'2',
        b',', b'3', b']', b'}'
    ]
    fr.response = {
        'a': 1,
        'b': (x for x in [{
            'a': 0
        }, {
            'b': [1, 2, {
                'a': 1
            }]
        }, {
            'c': 3
        }])
    }
    assert list(sr) == [
        b'{', b'"a"', b':', b'1', b',', b'"b"', b':', b'[', b'{"a": 0}', b',',
        b'{"b": [1, 2, {"a": 1}]}', b',', b'{"c": 3}', b']', b'}'
    ]
Пример #2
0
def test_searches_responses_generator_response_render():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import FieldedGeneratorResponse
    from snovault.elasticsearch.searches.responses import GeneratorResponse
    from types import GeneratorType
    fr = FieldedResponse()
    gr = GeneratorResponse(fr)
    fr.response = {'a': 1}
    response = gr.render()
    assert isinstance(response, dict)
    assert response == {}
    fr.response = {'a': 1, 'b': (x for x in [1, 2, 3])}
    response = gr.render()
    assert 'a' not in response
    assert 'b' in response
    assert isinstance(response['b'], GeneratorType)
    fgr = FieldedGeneratorResponse()
    gr = GeneratorResponse(fgr)
    fgr.response = {'a': 1}
    response = gr.render()
    assert isinstance(response, dict)
    assert response == {}
    fgr.response = {'a': 1, 'b': (x for x in [1, 2, 3])}
    response = gr.render()
    assert 'a' not in response
    assert 'b' in response
    assert isinstance(response['b'], GeneratorType)
Пример #3
0
def test_searches_responses_fielded_response_is_response_with_generator(
        dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    fr = FieldedResponse()
    assert not fr._is_response_with_generator()
    fr.response = {'a': [1, 2, 3]}
    assert not fr._is_response_with_generator()
    fr.response = {'a': (x for x in [1, 2, 3])}
    assert fr._is_response_with_generator()
    fr.response = {'a': (x for x in [1, 2, 3]), 'b': 1}
    assert fr._is_response_with_generator()
Пример #4
0
def test_searches_responses_in_memory_response_render():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import InMemoryResponse
    fr = FieldedResponse()
    im = InMemoryResponse(fr)
    fr.response = {'a': 1}
    response = im.render()
    assert isinstance(response, dict)
    assert response == {'a': 1}
    fr.response = {'a': 1, 'b': (x for x in [1, 2, 3])}
    response = im.render()
    assert response == {'a': 1, 'b': [1, 2, 3]}
Пример #5
0
def test_searches_responses_fielded_response_should_stream_response(
        dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    fr = FieldedResponse()
    assert not fr._should_stream_response()
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert not fr._should_stream_response()
    fr.response = {'a': (x for x in [1, 2, 3])}
    assert fr._should_stream_response()
    dummy_request.__parent__ = 'something'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert not fr._should_stream_response()
    fr.response = {'a': (x for x in [1, 2, 3])}
    assert not fr._should_stream_response()
Пример #6
0
def test_searches_responses_fielded_response_ordered_response():
    from collections import OrderedDict
    from snovault.elasticsearch.searches.responses import FieldedResponse
    fr = FieldedResponse()
    fr.response = {'b': 2, 'a': 1}
    ordered_dict = OrderedDict([('a', 1), ('b', 2)])
    for item1, item2 in zip(fr.ordered_response.items(), ordered_dict.items()):
        assert item1 == item2
Пример #7
0
def test_searches_responses_fielded_response_response_factory(dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import InMemoryResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    fr = FieldedResponse()
    fr.response = {'a': 1}
    assert isinstance(fr._response_factory(), InMemoryResponse)
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert isinstance(fr._response_factory(), InMemoryResponse)
    fr.response = {'a': (x for x in [1, 2, 3])}
    assert isinstance(fr._response_factory(), StreamedResponse)
    dummy_request.__parent__ = 'something'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert isinstance(fr._response_factory(), InMemoryResponse)
    fr.response = {'a': (x for x in [1, 2, 3])}
    assert isinstance(fr._response_factory(), InMemoryResponse)
Пример #8
0
def test_searches_responses_streamed_response_render():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    fr = FieldedResponse()
    sr = StreamedResponse(fr)
    fr.response = {'a': 1}
    response = sr.render()
    assert response.content_type == 'application/json'
    assert isinstance(response.app_iter, StreamedResponse)
    assert response.body == b'{"a":1}'
Пример #9
0
def test_searches_responses_fielded_response_render(dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    from pyramid.response import Response
    fr = FieldedResponse()
    fr.response = {'a': 1}
    response = fr.render()
    assert isinstance(response, dict)
    fr.response = {'a': (x for x in [1, 2, 3])}
    response = fr.render()
    assert isinstance(response, Response)
    assert isinstance(response.app_iter, StreamedResponse)
    assert response.json == {'a': [1, 2, 3]}
    dummy_request.__parent__ = 'something'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    fr.response = {'a': (x for x in [1, 2, 3])}
    response = fr.render()
    assert isinstance(response, dict)
    assert response == {'a': [1, 2, 3]}