Source code for config.version_test

from pathlib import Path
from unittest.mock import MagicMock, patch

import pytest

from config.version import ReleaseInformation, Version, VersionTag, VersionType


# Test for Version.from_string
[docs] @pytest.mark.parametrize( "version_string, expected", [ ("1.2.3", (1, 2, 3)), ("1.2", (1, 2, 0)), ("1", (1, 0, 0)), ], ) def test_version_from_string(version_string, expected): version = Version.from_string(version_string) assert version.version_parts == expected
# Test for Version.with_tag
[docs] @pytest.mark.parametrize("tag", [VersionTag.TEST, VersionTag.PROD]) def test_version_with_tag(tag): version = Version((1, 2, 3)) tagged_version = version.with_tag(tag) assert tagged_version.version_parts == (1, 2, 3) assert tagged_version.version_tag == tag
[docs] @pytest.mark.parametrize( "parts, tag, expected", [ ((1, 2, 3), None, "1_2_3"), ((1, 2, 3), VersionTag.TEST, "1_2_3-test"), ], ) def test_version_as_file_version(parts, tag, expected): version = Version(parts, tag) assert version.as_file_version() == expected
[docs] @pytest.mark.parametrize( "initial, version_type, expected", [ ((1, 2, 3), VersionType.PATCH, (1, 2, 4)), ((1, 2, 3), VersionType.MINOR, (1, 3, 3)), ((1, 2, 3), VersionType.MAJOR, (2, 2, 3)), ], ) def test_version_next_version(initial, version_type, expected): version = Version(initial) new_version = version.next_version(version_type) assert new_version.version_parts == expected
[docs] @patch("pathlib.Path.exists", return_value=False) def test_release_information_get_output_file(mock_exists): version = Version((1, 2, 3), VersionTag.TEST) release_info = ReleaseInformation( version=version, output_dir=Path("/tmp"), file_prefix="ticket-dataset-", file_extension=".json", ) output_file = release_info.get_output_file() assert str(output_file) == str(Path("/tmp/ticket-dataset-1_2_3-test.json"))
[docs] @patch("pathlib.Path.exists", side_effect=[True, False]) def test_release_information_get_next_existing(mock_exists): version = MagicMock(spec=Version) version.is_to_high.return_value = False version.next_version.return_value = Version((1, 2, 4)) release_info = ReleaseInformation(version, Path("/tmp")) next_release = release_info.get_next_existing() assert next_release.version.version_parts == (1, 2, 4)
[docs] @patch("pathlib.Path.exists", return_value=True) def test_release_information_exists(mock_exists): version = Version((1, 2, 3)) release_info = ReleaseInformation(version, Path("/tmp")) assert release_info.exists() is True
# Test for ReleaseInformation.next_version
[docs] @pytest.mark.parametrize( "release_type, expected", [ (VersionType.PATCH, (1, 2, 4)), (VersionType.MINOR, (1, 3, 3)), (VersionType.MAJOR, (2, 2, 3)), ], ) def test_release_information_next_version(release_type, expected): version = Version((1, 2, 3)) release_info = ReleaseInformation(version, Path("/tmp"), release_type=release_type) next_version_info = release_info.next_version assert next_version_info.version.version_parts == expected