77 lines
3.1 KiB
Python
77 lines
3.1 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
# Add api directory to path
|
|
api_dir = Path(__file__).parent.parent / 'api'
|
|
sys.path.insert(0, str(api_dir))
|
|
import unittest
|
|
import tempfile
|
|
import shutil
|
|
import os
|
|
from unittest.mock import patch
|
|
from calendar_manager import CalendarManager
|
|
|
|
class TestCalendarManager(unittest.TestCase):
|
|
def setUp(self):
|
|
self.test_dir = tempfile.mkdtemp()
|
|
self.data_dir = os.path.join(self.test_dir, 'data')
|
|
self.config_dir = os.path.join(self.test_dir, 'config')
|
|
os.makedirs(self.data_dir, exist_ok=True)
|
|
os.makedirs(self.config_dir, exist_ok=True)
|
|
self.manager = CalendarManager(data_dir=self.data_dir, config_dir=self.config_dir)
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.test_dir)
|
|
|
|
def test_initialization(self):
|
|
self.assertTrue(os.path.exists(self.manager.calendar_dir))
|
|
self.assertTrue(os.path.exists(self.manager.radicale_dir))
|
|
|
|
def test_ensure_config_exists(self):
|
|
config_file = os.path.join(self.manager.radicale_dir, 'config')
|
|
if os.path.exists(config_file):
|
|
os.remove(config_file)
|
|
self.manager._ensure_config_exists()
|
|
self.assertTrue(os.path.exists(config_file))
|
|
|
|
def test_generate_radicale_config(self):
|
|
config_file = os.path.join(self.manager.radicale_dir, 'config')
|
|
if os.path.exists(config_file):
|
|
os.remove(config_file)
|
|
self.manager._generate_radicale_config()
|
|
self.assertTrue(os.path.exists(config_file))
|
|
with open(config_file) as f:
|
|
content = f.read()
|
|
self.assertIn('[server]', content)
|
|
self.assertIn('hosts = 0.0.0.0:5232', content)
|
|
|
|
def test_get_status(self):
|
|
status = self.manager.get_status()
|
|
self.assertIsInstance(status, dict)
|
|
self.assertIn('status', status)
|
|
|
|
@patch.object(CalendarManager, 'create_calendar', return_value=True)
|
|
@patch.object(CalendarManager, 'remove_calendar', return_value=True)
|
|
def test_create_and_remove_calendar(self, mock_remove, mock_create):
|
|
result = self.manager.create_calendar('testuser', 'testcal')
|
|
self.assertTrue(result)
|
|
result = self.manager.remove_calendar('testuser', 'testcal')
|
|
self.assertTrue(result)
|
|
|
|
@patch.object(CalendarManager, 'add_event', return_value=True)
|
|
@patch.object(CalendarManager, 'remove_event', return_value=True)
|
|
def test_add_and_remove_event(self, mock_remove, mock_add):
|
|
result = self.manager.add_event('testuser', 'testcal', {'summary': 'Test'})
|
|
self.assertTrue(result)
|
|
result = self.manager.remove_event('testuser', 'testcal', 'dummyuid')
|
|
self.assertTrue(result)
|
|
|
|
def test_error_handling(self):
|
|
# Force errors by passing invalid arguments, should return False
|
|
self.assertFalse(self.manager.create_calendar(None, None))
|
|
self.assertFalse(self.manager.add_event(None, None, None))
|
|
self.assertFalse(self.manager.remove_calendar(None, None))
|
|
self.assertFalse(self.manager.remove_event(None, None, None))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |