kls/test.py

62 lines
2.0 KiB
Python
Raw Normal View History

2024-05-04 10:15:37 +00:00
import unittest
from unittest.mock import patch
import os
os.system("ln -s kls kls.py")
from kls import * # Import the functions and classes from kls script
class TestCircularList(unittest.TestCase):
def setUp(self):
self.circular_list = CircularList(['a', 'b', 'c'])
def test_forward(self):
2024-05-06 08:18:44 +00:00
self.circular_list.shift(1)
2024-05-04 10:15:37 +00:00
self.assertEqual(self.circular_list.index, 1)
def test_backward(self):
2024-05-06 08:18:44 +00:00
self.circular_list.shift(-1)
2024-05-04 10:15:37 +00:00
self.assertEqual(self.circular_list.index, 2) # Since it's circular, it goes to the end
class TestScriptFunctions(unittest.TestCase):
@patch('kls.subprocess.check_output')
def test_kubectl(self, mock_check_output):
mock_check_output.return_value = b'pod1\npod2\npod3'
result = kubectl('get pods')
self.assertEqual(result, ['pod1', 'pod2', 'pod3'])
class TestMenu(unittest.TestCase):
def setUp(self):
2024-05-04 12:50:46 +00:00
self.rows = ['a', 'b', 'c']
self.menu = Menu('Test', self.rows, 0, 10, 2)
2024-05-04 10:15:37 +00:00
os.system("ln -s kls kls.py")
2024-05-04 12:50:46 +00:00
def test_menu(self):
self.assertEqual(self.menu.title, 'Test')
2024-05-04 10:15:37 +00:00
self.assertEqual(self.menu.filtered_rows.elements, self.rows)
2024-05-04 12:50:46 +00:00
self.assertEqual(self.menu.visible_rows(), ['a', 'b'])
self.assertEqual(self.menu.selected_row(), 'a')
2024-05-04 10:15:37 +00:00
def test_filter_rows_with_filter(self):
# Apply a filter and test
2024-05-04 12:50:46 +00:00
self.menu.filter = 'a'
2024-05-04 10:15:37 +00:00
self.menu.filtered_rows = CircularList([x for x in self.menu.rows if self.menu.filter in x])
2024-05-04 12:50:46 +00:00
self.assertEqual(self.menu.filtered_rows.elements, ['a'])
2024-05-04 10:15:37 +00:00
def test_filter_rows_with_nonexistent_filter(self):
# Apply a filter that matches no rows
self.menu.filter = 'nonexistent'
self.menu.filtered_rows = CircularList([x for x in self.menu.rows if self.menu.filter in x])
self.assertEqual(self.menu.filtered_rows.elements, [])
def tearDown(self):
# Remove the symlink after each test
os.unlink('kls.py')
os.system("reset")
if __name__ == '__main__':
unittest.main()