From bd61a78fbabc92089e6d3154e5422895e9c8fc93 Mon Sep 17 00:00:00 2001 From: Suhas Date: Mon, 25 Jan 2021 08:52:50 -0500 Subject: [PATCH] unittest multiple overrides --- features/steps/override.py | 2 +- tests/test_override.py | 17 ++++++++++++++++- tests/test_parse_args.py | 11 +++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/features/steps/override.py b/features/steps/override.py index a90ea686..6ecbc8dc 100644 --- a/features/steps/override.py +++ b/features/steps/override.py @@ -52,7 +52,7 @@ def config_override(context, key_as_dots: str, override_value: str): : run(context.parser) - assert mock_recurse.call_count == 2 + assert mock_recurse.call_count >= 2 mock_recurse.call_args_list = expected_call_args_list except SystemExit as e : diff --git a/tests/test_override.py b/tests/test_override.py index c6dc97a3..0290385a 100644 --- a/tests/test_override.py +++ b/tests/test_override.py @@ -9,6 +9,10 @@ def minimal_config(): "colors": {"body": "red", "date": "green"}, "default": "/tmp/journal.jrnl", "editor": "vim", + "journals": { + "default": "/tmp/journals/journal.jrnl" + } + } yield cfg @@ -26,6 +30,17 @@ def test_override_dot_notation(minimal_config): cfg = apply_overrides(overrides=overrides, base_config=cfg) assert cfg["colors"] == {"body": "blue", "date": "green"} +def test_multiple_overrides(minimal_config): + overrides = { + "colors.title": "magenta", + "editor": "nano", + "journals.burner": "/tmp/journals/burner.jrnl" + } # as returned by parse_args, saved in parser.config_override + cfg = apply_overrides(overrides, minimal_config.copy()) + assert cfg["editor"] == "nano" + assert cfg["colors"]["title"] == "magenta" + assert "burner" in cfg["journals"] + assert cfg["journals"]["burner"] == "/tmp/journals/burner.jrnl" def test_recursively_apply(): cfg = {"colors": {"body": "red", "title": "green"}} @@ -34,6 +49,6 @@ def test_recursively_apply(): def test_get_config_node(minimal_config): - assert len(minimal_config.keys()) == 3 + assert len(minimal_config.keys()) == 4 assert _get_config_node(minimal_config, "editor") == "vim" assert _get_config_node(minimal_config, "display_format") == None diff --git a/tests/test_parse_args.py b/tests/test_parse_args.py index f713d90b..67931892 100644 --- a/tests/test_parse_args.py +++ b/tests/test_parse_args.py @@ -1,3 +1,4 @@ +from features.steps.override import config_override import shlex import pytest @@ -218,6 +219,16 @@ def test_color_override(): '--config-override \'{"colors.body": "blue"}\'' ) == expected_args(config_override={"colors.body": "blue"}) +def test_multiple_overrides(): + assert cli_as_dict( + '--config-override \'{"colors.title": "green", "editor":"", "journal.scratchpad": "/tmp/scratchpad"}\'' + ) == expected_args( + config_override={ + "colors.title": "green", + "journal.scratchpad": "/tmp/scratchpad", + "editor": "" + } + ) # @see https://github.com/jrnl-org/jrnl/issues/520 @pytest.mark.parametrize(