コード例 #1
0
ファイル: test_argument.py プロジェクト: ymoch/preacher
def test_given_nested_value():
    value = {
        "foo": Argument("foo"),
        "bar": [1, Argument("bar"), 3],
    }
    assert inject_arguments(value, {
        "foo": "x",
        "bar": "y"
    }) == {
        "foo": "x",
        "bar": [1, "y", 3],
    }
コード例 #2
0
def test_given_type(compiler: RequestBodyCompiler, default_body, type_key,
                    expected):
    replaced_body = NonCallableMock(RequestBodyCompiled)
    replaced_body.compile_and_replace = Mock(return_value=sentinel.new_result)
    default_body.replace = Mock(return_value=replaced_body)

    obj = {"type": Argument("type"), "foo": Argument("foo")}
    compiled = compiler.compile(obj, {"type": type_key, "foo": "bar"})
    assert compiled is sentinel.new_result

    default_body.replace.assert_called_once_with(expected)
    replaced_body.compile_and_replace.assert_called_once_with({
        "type": type_key,
        "foo": "bar"
    })
コード例 #3
0
def test_compile_flattening(compiler: ScenarioCompiler):
    obj = [
        [],
        [[{
            "label": "foo"
        }], {
            "label": Argument("arg")
        }, [[{
            "label": 1
        }]]],
    ]

    scenarios = compiler.compile_flattening(obj, {"arg": "bar"})
    assert next(scenarios).label == "foo"
    assert next(scenarios).label == "bar"

    with raises(CompilationError) as error_info:
        next(scenarios)
    assert error_info.value.path == [
        IndexedNode(1),
        IndexedNode(2),
        IndexedNode(0),
        IndexedNode(0),
        NamedNode("label"),
    ]

    with raises(StopIteration):
        next(scenarios)
コード例 #4
0
def test_given_a_string(compiler: RequestCompiler):
    compiled = compiler.compile(Argument("path"), {"path": "/path"})
    assert compiled.method is sentinel.default_method
    assert compiled.path == "/path"
    assert compiled.headers is sentinel.default_headers
    assert compiled.params is sentinel.default_params
    assert compiled.body is sentinel.default_body
コード例 #5
0
ファイル: argument.py プロジェクト: ymoch/preacher
 def construct(self, node: Node, context: TagContext) -> object:
     key = context.constructor.construct_scalar(node)  # type: ignore
     return Argument(key)
コード例 #6
0
ファイル: test_argument.py プロジェクト: ymoch/preacher
def test_given_single_value():
    value = Argument("foo")
    assert inject_arguments(value) is None
    assert inject_arguments(value, {"foo": 1}) == 1
    assert inject_arguments(value, {"bar": 2}) is None
コード例 #7
0
ファイル: test_argument.py プロジェクト: ymoch/preacher
def test_given_invalid_key():
    value = {1: 2, 3: Argument("key")}
    with raises(CompilationError):
        inject_arguments(value, {"key": "value"})
コード例 #8
0

def test_given_a_filled_object(
    compiler: ScenarioCompiler,
    description,
    case,
    case_of_default,
    sub_case,
    mocker,
):
    ctor = mocker.patch(f"{PKG}.Scenario", return_value=sentinel.scenario)

    scenario = compiler.compile(
        obj={
            "label":
            Argument("arg1"),
            "ordered":
            False,
            "default": {
                "a": Argument("arg2")
            },
            "when": {
                "b": Argument("arg3")
            },
            "cases": [{}, {
                "c": Argument("arg4")
            }],
            "subscenarios": [
                {
                    "label": Argument("arg5"),
                    "ordered": True,
コード例 #9
0
def test_given_valid_params(obj):
    compiled = compile_url_params(Argument("obj"), {"obj": obj})
    assert compiled == obj
コード例 #10
0
def test_given_a_valid_method(compiler: RequestCompiler, method_obj, expected):
    obj = {"method": Argument("method")}
    arguments = {"method": method_obj}
    compiled = compiler.compile(obj, arguments)
    assert compiled.method is expected
コード例 #11
0
def test_given_valid_headers(compiler: RequestCompiler, headers_obj, expected):
    obj = {"headers": Argument("headers")}
    arguments = {"headers": headers_obj}
    compiled = compiler.compile(obj, arguments)
    assert compiled.headers == expected