import unittest from proxy import __version__ from utils import update_check class UpdateCheckTests(unittest.TestCase): def setUp(self): self._orig_state = dict(update_check._state) def tearDown(self): update_check._state.clear() update_check._state.update(self._orig_state) def test_apply_release_tag_marks_update_available(self): version_parts = [int(part) for part in __version__.split(".")] version_parts[-1] += 1 next_version = ".".join(str(part) for part in version_parts) update_check._apply_release_tag( tag=f"v{next_version}", html_url="https://example.com/release", current_version=__version__, ) status = update_check.get_status() self.assertTrue(status["has_update"]) self.assertFalse(status["ahead_of_release"]) self.assertEqual(status["latest"], next_version) self.assertEqual(status["html_url"], "https://example.com/release") def test_apply_release_tag_marks_ahead_of_release(self): update_check._apply_release_tag( tag="v1.2.1", html_url="https://example.com/release", current_version=__version__, ) status = update_check.get_status() self.assertFalse(status["has_update"]) self.assertTrue(status["ahead_of_release"]) self.assertEqual(status["latest"], "1.2.1") def test_apply_release_tag_marks_latest_when_versions_match(self): update_check._apply_release_tag( tag=f"v{__version__}", html_url="https://example.com/release", current_version=__version__, ) status = update_check.get_status() self.assertFalse(status["has_update"]) self.assertFalse(status["ahead_of_release"]) self.assertEqual(status["latest"], __version__) if __name__ == "__main__": unittest.main()