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