from pathlib import Path
import sys
import os

current = os.path.dirname(os.path.realpath(__file__))
parent = os.path.dirname(current)
sys.path.append(parent)

from domain import Version, ReleaseType, Release

def test_version(tmp_path: Path):
    version = Version(tmp_path, [1, 2, 3])
    version.increment(ReleaseType.SNAPSHOT)
    assert version.get_version_string() == "1.2.3-SNAPSHOT"
    assert version.version_list == [1, 2, 3]
    assert version.is_snapshot

    version = Version(tmp_path, [1, 2, 3])
    version.increment(ReleaseType.BUMP)
    assert version.get_version_string() == "1.2.4-SNAPSHOT"
    assert version.version_list == [1, 2, 4]
    assert version.is_snapshot

    version = Version(tmp_path, [1, 2, 3])
    version.increment(ReleaseType.PATCH)
    assert version.get_version_string() == "1.2.4"
    assert version.version_list == [1, 2, 4]
    assert not version.is_snapshot

    version = Version(tmp_path, [1, 2, 3])
    version.increment(ReleaseType.MINOR)
    assert version.get_version_string() == "1.3.0"
    assert version.version_list == [1, 3, 0]
    assert not version.is_snapshot

    version = Version(tmp_path, [1, 2, 3])
    version.increment(ReleaseType.MAJOR)
    assert version.get_version_string() == "2.0.0"
    assert version.version_list == [2, 0, 0]
    assert not version.is_snapshot

def test_release(tmp_path):
    version = Version(tmp_path, [1, 2, 3])
    release = Release(ReleaseType.MINOR, version, "main")

    release_version = release.release_version()
    assert release_version.get_version_string() in '1.3.0'

    bump_version = release.bump_version()
    assert bump_version.get_version_string() in "1.3.1-SNAPSHOT"