|
5 | 5 | from unittest import mock
|
6 | 6 | import logging
|
7 | 7 | import configparser
|
| 8 | +import json |
8 | 9 |
|
9 | 10 | from waybar_crypto import (
|
10 | 11 | API_KEY_ENV,
|
|
20 | 21 | ResponseQuotesLatest,
|
21 | 22 | WaybarCrypto,
|
22 | 23 | WaybarCryptoException,
|
| 24 | + main, |
23 | 25 | parse_args,
|
24 | 26 | read_config,
|
25 | 27 | )
|
@@ -362,6 +364,11 @@ def test_read_config_no_api_key():
|
362 | 364 | _ = read_config(tmp_config_path)
|
363 | 365 |
|
364 | 366 |
|
| 367 | +def test_read_config_invalid_path(): |
| 368 | + with pytest.raises(WaybarCryptoException): |
| 369 | + _ = read_config("/invalid/config.ini") |
| 370 | + |
| 371 | + |
365 | 372 | class TestWaybarCrypto:
|
366 | 373 | """Tests for the WaybarCrypto."""
|
367 | 374 |
|
@@ -422,3 +429,21 @@ def test_no_api_key(self, config: Config):
|
422 | 429 | with pytest.raises(NoApiKeyException):
|
423 | 430 | config["general"]["api_key"] = ""
|
424 | 431 | _ = WaybarCrypto(config)
|
| 432 | + |
| 433 | + |
| 434 | +@pytest.mark.skipif(API_KEY is None, reason=f"test API key not provided in '{TEST_API_KEY_ENV}'") |
| 435 | +@mock.patch.dict(os.environ, {API_KEY_ENV: API_KEY}) |
| 436 | +@mock.patch("sys.argv", ["waybar_crypto.py", "--config-path", "./config.ini.example"]) |
| 437 | +def test_main(capsys): |
| 438 | + main() |
| 439 | + captured = capsys.readouterr() |
| 440 | + waybar_obj = json.loads(captured.out) |
| 441 | + assert "text" in waybar_obj |
| 442 | + assert "tooltip" in waybar_obj |
| 443 | + assert "class" in waybar_obj |
| 444 | + |
| 445 | + |
| 446 | +@mock.patch("sys.argv", ["waybar_crypto.py", "--config-path", "/invalid/config.ini"]) |
| 447 | +def test_main_config_path_invalid(): |
| 448 | + with pytest.raises(WaybarCryptoException): |
| 449 | + main() |
0 commit comments