77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
from unittest import mock
|
|
|
|
import requests
|
|
from update_checker import UpdateChecker, update_check
|
|
|
|
|
|
PACKAGE = "praw"
|
|
|
|
|
|
def mock_response(response, latest_version="5.0.0"):
|
|
response.json = mock.Mock(
|
|
return_value={"releases": {"0.0.1": [], latest_version: []}}
|
|
)
|
|
response.status_code = 200
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_checker_check__no_update_to_beta_version(mock_get):
|
|
mock_response(mock_get.return_value, "3.7.0b1")
|
|
checker = UpdateChecker(bypass_cache=True)
|
|
assert checker.check(PACKAGE, "3.6") is None
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_checker_check__update_to_beta_version_from_beta_version(mock_get):
|
|
mock_response(mock_get.return_value, "4.0.0b5")
|
|
checker = UpdateChecker(bypass_cache=True)
|
|
result = checker.check(PACKAGE, "4.0.0b4")
|
|
assert result.available_version == "4.0.0b5"
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_checker_check__update_to_rc_version_from_beta_version(mock_get):
|
|
mock_response(mock_get.return_value, "4.0.0rc1")
|
|
checker = UpdateChecker(bypass_cache=True)
|
|
result = checker.check(PACKAGE, "4.0.0b4")
|
|
assert result.available_version == "4.0.0rc1"
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_checker_check__successful(mock_get):
|
|
mock_response(mock_get.return_value)
|
|
checker = UpdateChecker(bypass_cache=True)
|
|
result = checker.check(PACKAGE, "1.0.0")
|
|
assert result.available_version == "5.0.0"
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_checker_check__unsuccessful(mock_get):
|
|
mock_get.side_effect = requests.exceptions.RequestException
|
|
checker = UpdateChecker(bypass_cache=True)
|
|
assert checker.check(PACKAGE, "1.0.0") is None
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_update_check__successful__has_no_update(mock_get, capsys):
|
|
mock_response(mock_get.return_value, "0.0.2")
|
|
update_check(PACKAGE, "0.0.2", bypass_cache=True)
|
|
assert "" == capsys.readouterr().err
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_update_check__successful__has_update(mock_get, capsys):
|
|
mock_response(mock_get.return_value)
|
|
update_check(PACKAGE, "0.0.1", bypass_cache=True)
|
|
assert (
|
|
"Version 0.0.1 of praw is outdated. Version 5.0.0 is available.\n"
|
|
== capsys.readouterr().err
|
|
)
|
|
|
|
|
|
@mock.patch("requests.get")
|
|
def test_update_check__unsuccessful(mock_get, capsys):
|
|
mock_get.side_effect = requests.exceptions.RequestException
|
|
update_check(PACKAGE, "0.0.1", bypass_cache=True)
|
|
assert "" == capsys.readouterr().err
|