Skip to content

Commit

Permalink
Move repetitive assertions into a helper method
Browse files Browse the repository at this point in the history
Based on @sourcery-ai bot feedback on #5

#5 (comment)
  • Loading branch information
br3ndonland committed Aug 1, 2021
1 parent 83b7696 commit 78036c1
Showing 1 changed file with 35 additions and 89 deletions.
124 changes: 35 additions & 89 deletions tests/test_dotenv.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@
)


def _dotenv_has_expected_values(
dotenv: fastenv.dotenv.DotEnv,
environ: fastenv.dotenv.MutableMapping,
output_key: str,
output_value: str,
) -> bool:
"""Assert that a `DotEnv` model has the expected keys and values set."""
assert isinstance(dotenv, fastenv.dotenv.DotEnv)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
return True


class TestDotEnvClass:
"""Test `class DotEnv` and its methods."""

Expand All @@ -102,11 +118,7 @@ def test_instantiate_dotenv_class_with_arg(
"""
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv(input_arg)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == 1

@pytest.mark.parametrize("input_arg", dotenv_args_with_incorrect_types)
Expand Down Expand Up @@ -135,11 +147,7 @@ def test_instantiate_dotenv_class_with_args(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
input_args = tuple(arg[0] for arg in dotenv_args)
dotenv = fastenv.dotenv.DotEnv(*input_args)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)

@pytest.mark.parametrize("input_arg, output_key, output_value", dotenv_args)
Expand All @@ -155,11 +163,7 @@ def test_instantiate_dotenv_class_with_kwarg(
"""
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv(**{output_key: output_value})
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == 1

@pytest.mark.parametrize(
Expand All @@ -178,11 +182,7 @@ def test_instantiate_dotenv_class_with_kwarg_incorrect_type(
"""
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv(**input_kwarg)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == 1

@pytest.mark.parametrize("input_arg, output_key, output_value", dotenv_args)
Expand All @@ -199,11 +199,7 @@ def test_instantiate_dotenv_class_with_kwargs(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
input_kwargs = {arg[1]: arg[2] for arg in dotenv_args}
dotenv = fastenv.dotenv.DotEnv(**input_kwargs)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)

@pytest.mark.parametrize("input_arg, output_key, output_value", dotenv_args)
Expand All @@ -223,11 +219,7 @@ def test_instantiate_dotenv_class_with_both_args_and_kwargs(
input_args = tuple(arg[0] for arg in dotenv_args)
input_kwargs = {arg[1]: arg[2] for arg in dotenv_args}
dotenv = fastenv.dotenv.DotEnv(input_to_override, *input_args, **input_kwargs)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)

@pytest.mark.parametrize("input_arg, output_key, output_value", dotenv_args)
Expand All @@ -244,11 +236,7 @@ def test_instantiate_dotenv_class_with_string(
"""
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv(env_str)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)

def test_get_single_variable_unset(self, mocker: MockerFixture) -> None:
Expand Down Expand Up @@ -303,11 +291,7 @@ def test_set_variable_with_call(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(input_arg)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert result == {output_key: output_value}
assert len(result) == len(dotenv) == 1

Expand Down Expand Up @@ -360,11 +344,7 @@ def test_set_variables_with_call_and_args(
input_args = tuple(arg[0] for arg in dotenv_args)
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(*input_args)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert isinstance(result, dict)
assert result == dict(dotenv)
assert result[output_key] == output_value
Expand All @@ -386,11 +366,7 @@ def test_set_variables_with_call_and_kwargs(
input_kwargs = {arg[1]: arg[2] for arg in dotenv_args}
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(**input_kwargs)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert isinstance(result, dict)
assert result == dict(dotenv)
assert result[output_key] == output_value
Expand All @@ -414,11 +390,7 @@ def test_set_variables_with_call_and_both_args_and_kwargs(
input_kwargs = {arg[1]: arg[2] for arg in dotenv_args}
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(input_to_override, *input_args, **input_kwargs)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert isinstance(result, dict)
assert result == dict(dotenv)
assert result[output_key] == output_value
Expand All @@ -441,11 +413,7 @@ def test_set_variables_with_call_and_kwarg_incorrect_type(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(**input_kwarg)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert isinstance(result, dict)
assert result == dict(dotenv)
assert result[output_key] == output_value
Expand All @@ -467,11 +435,7 @@ def test_set_variables_with_call_and_string(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
dotenv = fastenv.dotenv.DotEnv()
result = dotenv(env_str)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert isinstance(result, dict)
assert result == dict(dotenv)
assert result[output_key] == output_value
Expand Down Expand Up @@ -625,11 +589,7 @@ async def test_find_and_load_dotenv_with_file_in_sub_dir(
dotenv = await fastenv.dotenv.load_dotenv(env_file, find_source=True)
assert await fastenv.dotenv.anyio.Path.cwd() == env_file_child_dir
assert isinstance(dotenv, fastenv.dotenv.DotEnv)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)
assert dotenv.source == env_file
logger.info.assert_called_once_with(
Expand Down Expand Up @@ -657,11 +617,7 @@ async def test_find_and_load_dotenv_with_files_in_sub_dirs(
fastenv.dotenv.os.chdir(env_file_child_dir)
dotenv = await fastenv.dotenv.load_dotenv(*filenames, find_source=True)
assert isinstance(dotenv, fastenv.dotenv.DotEnv)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert "fastenv loaded" in logger.info.call_args.args[0]
assert str(env_files_in_child_dirs) in logger.info.call_args.args[0]

Expand Down Expand Up @@ -715,12 +671,7 @@ async def test_load_dotenv_file(
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
logger = mocker.patch.object(fastenv.dotenv, "logger", autospec=True)
dotenv = await fastenv.dotenv.load_dotenv(env_file, raise_exceptions=True)
assert isinstance(dotenv, fastenv.dotenv.DotEnv)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)
assert dotenv.source == env_file
logger.info.assert_called_once_with(
Expand Down Expand Up @@ -763,11 +714,7 @@ async def test_load_dotenv_files_in_same_dir(
logger = mocker.patch.object(fastenv.dotenv, "logger", autospec=True)
dotenv = await fastenv.dotenv.load_dotenv(*env_files_in_same_dir)
assert isinstance(dotenv, fastenv.dotenv.DotEnv)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert environ[output_key] == output_value
assert environ.get(output_key) == output_value
assert fastenv.dotenv.os.getenv(output_key) == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert dotenv.source == env_files_in_same_dir
for env_file in env_files_in_same_dir:
assert isinstance(env_file, fastenv.dotenv.anyio.Path)
Expand Down Expand Up @@ -924,14 +871,13 @@ async def test_load_and_dump_dotenv_file(
new file, load the new file into another `DotEnv` instance, and assert
that the resultant `DotEnv` instance contains the expected contents.
"""
mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
environ = mocker.patch.dict(fastenv.dotenv.os.environ, clear=True)
logger = mocker.patch.object(fastenv.dotenv, "logger", autospec=True)
source = await fastenv.dotenv.load_dotenv(env_file)
destination = env_file.parent / ".env.dumped"
dump = await fastenv.dotenv.dump_dotenv(str(source), destination)
dotenv = await fastenv.dotenv.load_dotenv(dump)
assert dotenv(output_key) == output_value
assert dotenv[output_key] == output_value
assert _dotenv_has_expected_values(dotenv, environ, output_key, output_value)
assert len(dotenv) == len(dotenv_args)
assert dotenv.source == destination
assert logger.info.call_count == 3
Expand Down

0 comments on commit 78036c1

Please sign in to comment.