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], }
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" })
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)
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
def construct(self, node: Node, context: TagContext) -> object: key = context.constructor.construct_scalar(node) # type: ignore return Argument(key)
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
def test_given_invalid_key(): value = {1: 2, 3: Argument("key")} with raises(CompilationError): inject_arguments(value, {"key": "value"})
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,
def test_given_valid_params(obj): compiled = compile_url_params(Argument("obj"), {"obj": obj}) assert compiled == obj
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
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