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'}' ]
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)
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()
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]}
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()
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
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)
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}'
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]}