Skip to content

Commit 8a2abdb

Browse files
committed
test: Enhance test coverage and fix CI issues
- Add comprehensive unit tests for core functions - Mock user input to prevent test failures - Fix unused variable warnings in tests - Ensure all CI checks pass locally
1 parent f110244 commit 8a2abdb

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,73 @@
11
import os
22
import sys
3+
from unittest.mock import MagicMock, patch
34

45
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
56
import kubernetes_monitoring
67

78

89
def test_main_function_exists():
10+
"""Test that main function exists and is callable"""
911
assert callable(kubernetes_monitoring.main)
12+
13+
14+
def test_node_group_label_constant():
15+
"""Test that NODE_GROUP_LABEL constant is defined"""
16+
assert hasattr(kubernetes_monitoring, "NODE_GROUP_LABEL")
17+
assert isinstance(kubernetes_monitoring.NODE_GROUP_LABEL, str)
18+
19+
20+
@patch("kubernetes_monitoring.config")
21+
def test_load_kube_config_success(mock_config):
22+
"""Test successful kube config loading"""
23+
mock_config.load_kube_config.return_value = None
24+
25+
# Should not raise an exception
26+
kubernetes_monitoring.load_kube_config()
27+
mock_config.load_kube_config.assert_called_once()
28+
29+
30+
@patch("kubernetes_monitoring.config")
31+
@patch("sys.exit")
32+
def test_load_kube_config_failure(mock_exit, mock_config):
33+
"""Test kube config loading failure"""
34+
mock_config.load_kube_config.side_effect = Exception("Config error")
35+
36+
kubernetes_monitoring.load_kube_config()
37+
mock_exit.assert_called_once_with(1)
38+
39+
40+
@patch("kubernetes_monitoring.Prompt.ask")
41+
@patch("kubernetes_monitoring.client")
42+
@patch("kubernetes_monitoring.load_kube_config")
43+
def test_choose_namespace_success(mock_load_config, mock_client, mock_prompt):
44+
"""Test successful namespace selection"""
45+
# Mock the namespace list
46+
mock_ns = MagicMock()
47+
mock_ns.metadata.name = "test-namespace"
48+
49+
mock_ns_list = MagicMock()
50+
mock_ns_list.items = [mock_ns]
51+
52+
mock_v1 = MagicMock()
53+
mock_v1.list_namespace.return_value = mock_ns_list
54+
mock_client.CoreV1Api.return_value = mock_v1
55+
56+
# Mock user input (empty string for default/all namespaces)
57+
mock_prompt.return_value = ""
58+
59+
# This should not raise an exception
60+
kubernetes_monitoring.choose_namespace()
61+
mock_load_config.assert_called_once()
62+
63+
64+
@patch("kubernetes_monitoring.client")
65+
@patch("kubernetes_monitoring.load_kube_config")
66+
def test_choose_namespace_failure(mock_load_config, mock_client):
67+
"""Test namespace selection failure"""
68+
mock_v1 = MagicMock()
69+
mock_v1.list_namespace.side_effect = Exception("API error")
70+
mock_client.CoreV1Api.return_value = mock_v1
71+
72+
kubernetes_monitoring.choose_namespace()
73+
assert mock_load_config.called

0 commit comments

Comments
 (0)