From c89b434d187af72a31800f39ce3b00873476df97 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Wed, 11 Mar 2026 17:09:06 -0400 Subject: [PATCH] [tests] Add tests for the context processor --- tests/test_context_processors.py | 85 ++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/test_context_processors.py diff --git a/tests/test_context_processors.py b/tests/test_context_processors.py new file mode 100644 index 0000000..a0961f8 --- /dev/null +++ b/tests/test_context_processors.py @@ -0,0 +1,85 @@ +import os +from unittest.mock import patch, MagicMock +from pathlib import Path + +import pytest +from vrobbler.context_processors import version_info + + +@pytest.fixture +def mock_request(): + return MagicMock() + + +class TestVersionInfo: + def test_returns_version_and_commit(self, mock_request): + with ( + patch("vrobbler.context_processors.get_version") as mock_get_version, + patch( + "vrobbler.context_processors.subprocess.check_output" + ) as mock_check_output, + ): + mock_get_version.return_value = "1.0.0" + mock_check_output.return_value = b"abc1234" + + result = version_info(mock_request) + + assert result["app_version"] == "1.0.0" + assert result["git_commit"] == "abc1234" + + def test_uses_env_commit_if_set(self, mock_request): + with ( + patch.dict(os.environ, {"VROBBLER_COMMIT": "env_commit_hash"}), + patch("vrobbler.context_processors.get_version") as mock_get_version, + ): + mock_get_version.return_value = "1.0.0" + + result = version_info(mock_request) + + assert result["git_commit"] == "env_commit_hash" + + def test_returns_unknown_when_version_fails(self, mock_request): + with ( + patch("vrobbler.context_processors.get_version") as mock_get_version, + patch( + "vrobbler.context_processors.subprocess.check_output" + ) as mock_check_output, + ): + mock_get_version.side_effect = Exception("not found") + mock_check_output.return_value = b"abc1234" + + result = version_info(mock_request) + + assert result["app_version"] == "unknown" + + def test_returns_unknown_when_git_fails(self, mock_request): + import subprocess + + with ( + patch("vrobbler.context_processors.get_version") as mock_get_version, + patch( + "vrobbler.context_processors.subprocess.check_output" + ) as mock_check_output, + ): + mock_get_version.return_value = "1.0.0" + mock_check_output.side_effect = subprocess.SubprocessError() + + result = version_info(mock_request) + + assert result["git_commit"] == "unknown" + + def test_returns_unknown_when_git_not_found(self, mock_request): + import subprocess + + with ( + patch("vrobbler.context_processors.get_version") as mock_get_version, + patch( + "vrobbler.context_processors.subprocess.check_output" + ) as mock_check_output, + ): + mock_get_version.return_value = "1.0.0" + mock_check_output.side_effect = FileNotFoundError() + + result = version_info(mock_request) + + assert result["git_commit"] == "unknown"