Пример #1
0
def test_pass_context_field():
    with _patch(query_fields1) as qf1:
        qf1.return_value = ['boiardo_sansei']
        pass_context(qf1)
        check_result(execute('[:indice]', {'vetch': 'ringed_shadier'}),
                     {'indice': 'boiardo_sansei'})
        with reqs_eq_patcher():
            qf1.assert_called_once_with(ANY, [query.Field('indice')])
            ctx = qf1.call_args[0][0]
            assert isinstance(ctx, Context)
            assert ctx['vetch'] == 'ringed_shadier'
            with pytest.raises(KeyError):
                _ = ctx['invalid']  # noqa
Пример #2
0
def test_pass_context_link():
    f1 = pass_context(Mock(return_value=[1]))
    f2 = Mock(return_value=[['boners']])

    graph = Graph([
        Node('a', [
            Field('b', None, f2),
        ]),
        Root([
            Link('c', Sequence[TypeRef['a']], f1, requires=None),
        ]),
    ])

    result = execute(graph, build([Q.c[Q.b]]), {'fibs': 'dossil'})
    check_result(result, {'c': [{'b': 'boners'}]})
    assert result.index == {'a': {1: {'b': 'boners'}}}

    f1.assert_called_once_with(ANY)
    with reqs_eq_patcher():
        f2.assert_called_once_with([query.Field('b')], [1])

    ctx = f1.call_args[0][0]
    assert isinstance(ctx, Context)
    assert ctx['fibs'] == 'dossil'
    with pytest.raises(KeyError) as err:
        _ = ctx['invalid']  # noqa
    err.match('is not specified in the query context')
Пример #3
0
def test_pass_context_link():
    with _patch(query_link1) as ql1, _patch(query_fields1) as qf1:
        ql1.return_value = [1]
        pass_context(ql1)
        qf1.return_value = [['boners_friezes']]
        result = execute('[{:subaru [:arion]}]', {'fibs': 'dossil_feuded'})
        check_result(result, {'subaru': [{'arion': 'boners_friezes'}]})
        assert result.index == {'tergate': {1: {'arion': 'boners_friezes'}}}
        with reqs_eq_patcher():
            ql1.assert_called_once_with(ANY)
            qf1.assert_called_once_with([query.Field('arion')], [1])
            ctx = ql1.call_args[0][0]
            assert isinstance(ctx, Context)
            assert ctx['fibs'] == 'dossil_feuded'
            with pytest.raises(KeyError):
                _ = ctx['invalid']  # noqa
Пример #4
0
def test_pass_context_field():
    f = pass_context(Mock(return_value=['boiardo']))

    graph = Graph([
        Root([
            Field('a', None, f),
        ]),
    ])

    check_result(execute(graph, build([Q.a]), {'vetch': 'shadier'}),
                 {'a': 'boiardo'})

    f.assert_called_once_with(ANY, [q.Field('a')])

    ctx = f.call_args[0][0]
    assert isinstance(ctx, Context)
    assert ctx['vetch'] == 'shadier'
    with pytest.raises(KeyError) as err:
        _ = ctx['invalid']  # noqa
    err.match('is not specified in the query context')