Ejemplo n.º 1
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)
Ejemplo n.º 2
0
def audit(context, request):
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title=AUDIT_TITLE
            ),
            TypeResponseField(
                at_type=[AUDIT_TITLE]
            ),
            IDResponseField(),
            SearchBaseResponseField(),
            ContextResponseField(),
            AuditMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES
            ),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 3
0
def matrixv2_raw(context, request):
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(request)},
                         response_fields=[
                             RawMatrixWithAggsResponseField(
                                 default_item_types=DEFAULT_ITEM_TYPES)
                         ])
    return fr.render()
Ejemplo n.º 4
0
def cart_search(context, request):
    '''
    Like search but takes cart params.
    '''
    # Note the order of rendering matters for some fields, e.g. AllResponseField and
    # NotificationResponseField depend on results from CartSearchWithFacetsResponseField.
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(request)},
                         response_fields=[
                             TitleResponseField(title='Cart search'),
                             TypeResponseField(at_type=[SEARCH_TITLE]),
                             IDResponseField(),
                             ContextResponseField(),
                             CartSearchWithFacetsResponseField(
                                 default_item_types=DEFAULT_ITEM_TYPES,
                                 cart=CartWithElements(request),
                             ),
                             AllResponseField(),
                             NotificationResponseField(),
                             CartFiltersResponseField(),
                             ClearFiltersResponseFieldWithCarts(),
                             ColumnsResponseField(),
                             SortResponseField(),
                             DebugQueryResponseField()
                         ])
    return fr.render()
Ejemplo n.º 5
0
def search(context, request):
    # Note the order of rendering matters for some fields, e.g. AllResponseField and
    # NotificationResponseField depend on results from BasicSearchWithFacetsResponseField.
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title=SEARCH_TITLE
            ),
            TypeResponseField(
                at_type=[SEARCH_TITLE]
            ),
            IDResponseField(),
            ContextResponseField(),
            BasicSearchWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES
            ),
            AllResponseField(),
            NotificationResponseField(),
            FiltersResponseField(),
            ClearFiltersResponseField(),
            ColumnsResponseField(),
            SortResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 6
0
def summary(context, request):
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title=SUMMARY_TITLE
            ),
            TypeResponseField(
                at_type=[SUMMARY_TITLE]
            ),
            IDResponseField(),
            SearchBaseResponseField(),
            ContextResponseField(),
            BasicMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES,
                matrix_definition_name=SUMMARY_MATRIX
            ),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 7
0
def mouse_development(context, request):
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title='Mouse Development Matrix'
            ),
            TypeResponseField(
                at_type=['MouseDevelopmentMatrix']
            ),
            IDResponseField(),
            SearchBaseResponseField(),
            ContextResponseField(),
            BasicMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES,
                matrix_definition_name='mouse_development'
            ),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 8
0
def entex_matrix(context, request):
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title='Epigenomes from four individuals (ENTEx)'
            ),
            TypeResponseField(
                at_type=['EntexMatrix']
            ),
            IDResponseField(),
            SearchBaseResponseField(),
            ContextResponseField(),
            MissingMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES,
                matrix_definition_name='entex'
            ),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 9
0
def report(context, request):
    fr = FieldedResponse(
        _meta={
            'params_parser': ParamsParser(request)
        },
        response_fields=[
            TitleResponseField(
                title=REPORT_TITLE
            ),
            TypeResponseField(
                at_type=[REPORT_TITLE]
            ),
            IDResponseField(),
            ContextResponseField(),
            BasicReportWithFacetsResponseField(),
            AllResponseField(),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            ColumnsResponseField(),
            NonSortableResponseField(),
            SortResponseField(),
            DebugQueryResponseField()
        ]
    )
    return fr.render()
Ejemplo n.º 10
0
def searchv2_quick(context, request):
    fr = FieldedResponse(
        _meta={'params_parser': ParamsParser(request)},
        response_fields=[
            BasicSearchResponseField(default_item_types=DEFAULT_ITEM_TYPES)
        ])
    return fr.render()
Ejemplo n.º 11
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
Ejemplo n.º 12
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}'
Ejemplo n.º 13
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]}
Ejemplo n.º 14
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()
Ejemplo n.º 15
0
def test_searches_responses_fielded_response_is_request_from_embed(
        dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    fr = FieldedResponse()
    assert not fr._is_request_from_embed()
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert not fr._is_request_from_embed()
    dummy_request.__parent__ = 'something'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    assert fr._is_request_from_embed()
Ejemplo n.º 16
0
def collection_view_listing_es(context, request):
    if not hasattr(request,
                   'datastore') or request.datastore != ELASTIC_SEARCH:
        return collection_view_listing_db(context, request)
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(request)},
                         response_fields=[
                             IDResponseField(),
                             CollectionSearchWithFacetsResponseField(),
                             AllResponseField(),
                             NotificationResponseField(),
                             FiltersResponseField(),
                             CollectionClearFiltersResponseField(),
                             ColumnsResponseField()
                         ])
    return fr.render()
Ejemplo n.º 17
0
def encore_rna_seq_matrix(context, request):
    fr = FieldedResponse(
        _meta={'params_parser': ParamsParser(request)},
        response_fields=[
            TitleResponseField(title='ENCORE RNA-seq Matrix'),
            TypeResponseField(at_type=['EncoreRnaSeqMatrix']),
            IDResponseField(),
            SearchBaseResponseField(),
            ContextResponseField(),
            MissingMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES,
                matrix_definition_name='encore_rna_seq_matrix'),
            NotificationResponseField(),
            FiltersResponseField(),
            TypeOnlyClearFiltersResponseField(),
            DebugQueryResponseField()
        ])
    return fr.render()
Ejemplo n.º 18
0
def test_searches_responses_generator_memory_response_init():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import FieldedGeneratorResponse
    from snovault.elasticsearch.searches.responses import GeneratorResponse
    fr = FieldedResponse()
    gr = GeneratorResponse(fr)
    assert isinstance(gr, GeneratorResponse)
    fgr = FieldedGeneratorResponse()
    gr = GeneratorResponse(fgr)
    assert isinstance(gr, GeneratorResponse)
Ejemplo n.º 19
0
def cart_matrix(context, request):
    fr = FieldedResponse(
        _meta={'params_parser': ParamsParser(request)},
        response_fields=[
            TitleResponseField(title='Cart matrix'),
            TypeResponseField(at_type=[MATRIX_TITLE]),
            IDResponseField(),
            SearchBaseResponseField(search_base='/cart-search/'),
            ContextResponseField(),
            CartMatrixWithFacetsResponseField(
                default_item_types=DEFAULT_ITEM_TYPES,
                cart=CartWithElements(request),
            ),
            NotificationResponseField(),
            CartFiltersResponseField(),
            TypeOnlyClearFiltersResponseFieldWithCarts(),
            DebugQueryResponseField()
        ])
    return fr.render()
Ejemplo n.º 20
0
def test_searches_responses_streamed_response_to_json_string():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    fr = FieldedResponse()
    sr = StreamedResponse(fr)
    assert sr._to_json({'a': 1}) == '{"a": 1}'
    assert sr._to_json({
        'a': 1,
        'b': [1, 2, 3]
    }) == '{"a": 1, "b": [1, 2, 3]}' or '{"b": [1, 2, 3], "a": 1}'
Ejemplo n.º 21
0
def test_searches_responses_fielded_response_validate_response_fields():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.fields import ResponseField
    rf = ResponseField()
    FieldedResponse(response_fields=[rf])

    class NewResponseField(ResponseField):
        def __init__(self):
            super().__init__()

    nrf = NewResponseField()
    FieldedResponse(response_fields=[rf, nrf])

    class OtherResponseField():
        pass

    orf = OtherResponseField()
    with pytest.raises(ValueError):
        FieldedResponse(response_fields=[rf, nrf, orf])
Ejemplo n.º 22
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]}
Ejemplo n.º 23
0
def test_searches_responses_streamed_response_characters():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    fr = FieldedResponse()
    sr = StreamedResponse(fr)
    assert sr._start_dict() == '{'
    assert sr._end_dict() == '}'
    assert sr._start_list() == '['
    assert sr._end_list() == ']'
    assert sr._comma() == ','
    assert sr._colon() == ':'
Ejemplo n.º 24
0
def test_searches_responses_streamed_response_to_json_string_from_generator():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import StreamedResponse
    fr = FieldedResponse()
    sr = StreamedResponse(fr)
    g = (x for x in [{'a': 1}])
    assert list(sr._to_json_from_generator(g)) == ['[', '{"a": 1}', ']']
    g = (x for x in [{'a': 1}, {'b': [1, 2, 3]}, {'x': {'y': {'a': 1}}}])
    assert list(sr._to_json_from_generator(g)) == [
        '[', '{"a": 1}', ',', '{"b": [1, 2, 3]}', ',',
        '{"x": {"y": {"a": 1}}}', ']'
    ]
Ejemplo n.º 25
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'}'
    ]
Ejemplo n.º 26
0
def test_searches_responses_fielded_response_get_request(dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    fr = FieldedResponse()
    assert fr.get_request() is None
    dummy_request.body = b'abc'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    request = fr.get_request()
    assert request
    assert request.body == b'abc'
Ejemplo n.º 27
0
def test_searches_responses_fielded_response_get_or_create_response(
        dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    from pyramid.response import Response
    fr = FieldedResponse()
    response = fr.get_or_create_response()
    assert isinstance(response, Response)
    dummy_request.response.body = b'abc'
    fr = FieldedResponse(_meta={'params_parser': ParamsParser(dummy_request)})
    response = fr.get_or_create_response()
    assert response.body == b'abc'
Ejemplo n.º 28
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()
Ejemplo n.º 29
0
def test_searches_responses_fielded_response_init():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    fr = FieldedResponse()
    assert isinstance(fr, FieldedResponse)
Ejemplo n.º 30
0
def test_searches_responses_in_memory_response_init():
    from snovault.elasticsearch.searches.responses import FieldedResponse
    from snovault.elasticsearch.searches.responses import InMemoryResponse
    fr = FieldedResponse()
    im = InMemoryResponse(fr)
    assert isinstance(im, InMemoryResponse)