Exemplo n.º 1
0
def test_searches_parsers_params_parser_get_must_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&files.file_type!=fastq&field=status&type=*')
    p = ParamsParser(dummy_request)
    assert p.get_must_filters() == [('type', 'Experiment'), ('type', 'File'),
                                    ('field', 'status')]
Exemplo n.º 2
0
def test_searches_parsers_params_parser_get_field_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&field=status&type!=Item'
        '&searchTerm=my+favorite+experiment&searchTerm=my+other+experiment')
    p = ParamsParser(dummy_request)
    assert p.get_field_filters() == [('field', 'status')]
Exemplo n.º 3
0
def test_searches_parsers_params_parser_get_query_string(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=File&file_format%21=bigWig&file_type%21=bigBed+tss_peak'
        '&file_format_type=bed3%2B')
    p = ParamsParser(dummy_request)
    assert dummy_request.environ['QUERY_STRING'] == p.get_query_string()
Exemplo n.º 4
0
def test_searches_parsers_params_parser_get_wildcard_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'status=released&type=*&file_format%21=*'
        '&file_type%21=bigBed+tss_peak&file_format_type=bed3%2B')
    p = ParamsParser(dummy_request)
    assert p.get_wildcard_filters() == [('type', '*'), ('file_format!', '*')]
Exemplo n.º 5
0
def test_searches_parsers_params_parser_get_debug(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'frame=embedded&status!=submitted&type=File&sort=date_created&debug=true'
    )
    p = ParamsParser(dummy_request)
    assert p.get_debug() == [('debug', 'true')]
Exemplo n.º 6
0
def test_searches_parsers_params_parser_get_advanced_query_filters_empty(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&field=status&type!=Item')
    p = ParamsParser(dummy_request)
    assert p.get_advanced_query_filters() == []
Exemplo n.º 7
0
def test_searches_parsers_params_parser_get_not_exists_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&files.file_type!=fastq'
        '&field=status&type=*&file_size!=*')
    p = ParamsParser(dummy_request)
    assert p.get_not_exists_filters() == [('file_size!', '*')]
Exemplo n.º 8
0
def test_searches_parsers_params_parser_get_key_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&status=archived&type!=Item&status!=released'
    )
    p = ParamsParser(dummy_request)
    assert p.get_key_filters(key='status') == [('status', 'archived'),
                                               ('status!', 'released')]
Exemplo n.º 9
0
def test_searches_parsers_params_parser_is_param(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&files.file_type=fastq&field=status')
    p = ParamsParser(dummy_request)
    assert p.is_param(key='type', value='File')
    assert p.is_param(key='files.file_type', value='fastq')
    assert not p.is_param(key='files.file_type', value='bam')
Exemplo n.º 10
0
def test_searches_parsers_params_parser_param_remove_not_flag(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'frame=embedded&status!=submitted&type=File&sort=date_created')
    p = ParamsParser(dummy_request)
    assert p.remove_not_flag() == [('frame', 'embedded'),
                                   ('status', 'submitted'), ('type', 'File'),
                                   ('sort', 'date_created')]
Exemplo n.º 11
0
def test_searches_parsers_params_parser_get_mode(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'frame=embedded&status!=submitted&mode=picker&type=File&sort=date_created'
    )
    p = ParamsParser(dummy_request)
    assert p.get_mode() == [('mode', 'picker')]
    assert p.param_values_to_list(params=p.get_mode())[0] == 'picker'
Exemplo n.º 12
0
def test_searches_parsers_params_parser_get_filters_by_condition_value_status(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ[
        'QUERY_STRING'] = 'type=Experiment&type=File&field=status'
    p = ParamsParser(dummy_request)
    assert p.get_filters_by_condition(
        key_and_value_condition=lambda _, v: v == 'status') == [('field',
                                                                 'status')]
Exemplo n.º 13
0
def test_searches_parsers_params_parser_params_coerce_value_to_int_or_return_none(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'frame=embedded&status!=submitted&type=File&sort=date_created')
    p = ParamsParser(dummy_request)
    assert p.coerce_value_to_int_or_return_none('12') == 12
    assert p.coerce_value_to_int_or_return_none(12) == 12
    assert p.coerce_value_to_int_or_return_none('all') is None
Exemplo n.º 14
0
def test_searches_parsers_params_parser_get_must_not_match_advanced_query_filters(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&field=status&type!=Item'
        '&advancedQuery!=whatever')
    p = ParamsParser(dummy_request)
    assert p.get_must_not_match_advanced_query_filters() == [('advancedQuery!',
                                                              'whatever')]
Exemplo n.º 15
0
def test_searches_parsers_params_parser_get_filters_by_condition_none(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ[
        'QUERY_STRING'] = 'type=Experiment&type=File&field=status'
    p = ParamsParser(dummy_request)
    assert p.get_filters_by_condition() == [('type', 'Experiment'),
                                            ('type', 'File'),
                                            ('field', 'status')]
Exemplo n.º 16
0
def test_searches_parsers_params_parser_get_advanced_query_filters(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&field=status&type!=Item'
        '&advancedQuery=my+favorite+experiment&searchTerm=my+other+experiment'
        '&searchTerm!=whatever')
    p = ParamsParser(dummy_request)
    assert p.get_advanced_query_filters() == [('advancedQuery',
                                               'my favorite experiment')]
Exemplo n.º 17
0
def test_searches_parsers_params_parser_get_keys_filters(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=File&file_format%21=bigWig&file_type%21=bigBed+tss_peak'
        '&file_format_type=bed3%2B')
    p = ParamsParser(dummy_request)
    assert p.get_keys_filters(['type', 'file_format_type'
                               ]) == [('type', 'File'),
                                      ('file_format_type', 'bed3+')]
    assert p.get_keys_filters() == []
Exemplo n.º 18
0
def test_searches_parsers_params_parser_get_filters_by_condition_contains_letter(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ[
        'QUERY_STRING'] = 'type=Experiment&type=File&field=status'
    p = ParamsParser(dummy_request)
    assert p.get_filters_by_condition(
        key_and_value_condition=lambda k, v: 't' in k and 'F' in v) == [
            ('type', 'File')
        ]
Exemplo n.º 19
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()
Exemplo n.º 20
0
def test_searches_parsers_params_parser_param_values_to_list(dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'frame=embedded&status!=submitted&type=File&sort=date_created')
    p = ParamsParser(dummy_request)
    assert p.param_values_to_list() == [
        'embedded',
        'submitted',
        'File',
        'date_created',
    ]
Exemplo n.º 21
0
def test_searches_parsers_params_parser_get_must_match_advanced_query_filters(
        dummy_request):
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=Experiment&type=File&field=status&type!=Item'
        '&advancedQuery=date_created:[01/01/2018 TO 01/02/2019]'
        '&advancedQuery=@type:Experiment date_released:[2009-01-01 TO 2019-12-31]'
        '&searchTerm=whatever')
    p = ParamsParser(dummy_request)
    assert p.get_must_match_advanced_query_filters() == [
        ('advancedQuery', 'date_created:[01/01/2018 TO 01/02/2019]'),
        ('advancedQuery',
         '@type:Experiment date_released:[2009-01-01 TO 2019-12-31]')
    ]
Exemplo n.º 22
0
def test_searchers_parsers_params_parser_split_filters_by_must_and_exists(
        dummy_request):
    from snovault.elasticsearch.searches.defaults import NOT_FILTERS
    from snovault.elasticsearch.searches.parsers import ParamsParser
    dummy_request.environ['QUERY_STRING'] = (
        'type=*&status=released&status!=submitted&type=File&file_size=*'
        '&file_format%21=bigWig&restricted!=*&no_file_available!=*&limit=all')
    p = ParamsParser(dummy_request)
    must, must_not, exists, not_exists = p.split_filters_by_must_and_exists(
        params=p.get_not_keys_filters(not_keys=NOT_FILTERS) +
        p.get_type_filters())
    assert must == [('status', 'released'), ('type', 'File')]
    assert must_not == [('status!', 'submitted'), ('file_format!', 'bigWig')]
    assert exists == [('file_size', '*'), ('type', '*')]
    assert not_exists == [('restricted!', '*'), ('no_file_available!', '*')]
Exemplo n.º 23
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()
Exemplo n.º 24
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()
Exemplo n.º 25
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()
Exemplo n.º 26
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()
Exemplo n.º 27
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()
Exemplo n.º 28
0
def test_searches_responses_fielded_generator_response_render(dummy_request):
    from snovault.elasticsearch.searches.responses import FieldedGeneratorResponse
    from snovault.elasticsearch.searches.responses import GeneratorResponse
    from snovault.elasticsearch.searches.parsers import ParamsParser
    from types import GeneratorType
    from pyramid.response import Response
    fgr = FieldedGeneratorResponse()
    fgr.response = {'a': 1}
    response = fgr.render()
    assert isinstance(response, dict)
    fgr.response = {'a': (x for x in [1, 2, 3])}
    response = fgr.render()
    assert isinstance(response, dict)
    assert 'a' in response
    assert isinstance(response['a'], GeneratorType)
    assert list(response['a']) == [1, 2, 3]
    dummy_request.__parent__ = 'something'
    fgr = FieldedGeneratorResponse(
        _meta={'params_parser': ParamsParser(dummy_request)})
    fgr.response = {'a': (x for x in [1, 2, 3])}
    response = fgr.render()
    assert isinstance(response, dict)
    assert 'a' in response
    assert isinstance(response['a'], GeneratorType)
    assert list(response['a']) == [1, 2, 3]
Exemplo n.º 29
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()
Exemplo n.º 30
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()