yomitalk / tests /unit /test_session_manager.py
KyosukeIchikawa's picture
refactor: Clean up code formatting and improve readability across multiple files
e3c68ad
"""Unit tests for UserSession class."""
from pathlib import Path
from unittest.mock import patch
from yomitalk.app import UserSession
class TestUserSession:
"""Test class for UserSession."""
def setup_method(self):
"""Set up test fixtures before each test method is run."""
# Create a patch for time.time() to return a fixed timestamp
self.time_patch = patch("time.time", return_value=1600000000)
self.time_patch.start()
def teardown_method(self):
"""Tear down test fixtures after each test method is run."""
self.time_patch.stop()
def test_initialization(self):
"""Test that UserSession initializes correctly."""
user_session = UserSession("test_session_123")
# Check that a session ID was set
assert hasattr(user_session, "session_id")
assert user_session.session_id is not None
assert isinstance(user_session.session_id, str)
assert user_session.session_id == "test_session_123"
def test_get_output_dir(self):
"""Test getting the output directory path."""
user_session = UserSession("test_session_123")
output_dir = user_session.get_output_dir()
# Check that the output directory path is correct
assert isinstance(output_dir, Path)
assert "data/output" in str(output_dir)
assert "test_session_123" in str(output_dir)
def test_get_temp_dir(self):
"""Test getting the temporary directory path."""
user_session = UserSession("test_session_123")
temp_dir = user_session.get_temp_dir()
# Check that the temporary directory path is correct
assert isinstance(temp_dir, Path)
assert "data/temp" in str(temp_dir)
assert "test_session_123" in str(temp_dir)
def test_get_talk_temp_dir(self):
"""Test getting the talk temporary directory path."""
user_session = UserSession("test_session_123")
temp_dir = user_session.get_talk_temp_dir()
# Check that the temporary directory path is correct
assert isinstance(temp_dir, Path)
assert "data/temp" in str(temp_dir)
assert "talks" in str(temp_dir)
assert "test_session_123" in str(temp_dir)
@patch("pathlib.Path.mkdir")
def test_directory_creation(self, mock_mkdir):
"""Test directory creation in the manager."""
user_session = UserSession("test_session_123")
# Reset the mock call count (since initialization already happened)
mock_mkdir.reset_mock()
# Get directories which should trigger mkdir
user_session.get_output_dir()
user_session.get_temp_dir()
user_session.get_talk_temp_dir()
# Check that mkdir was called
assert mock_mkdir.call_count >= 3
# Check mkdir parameters
for call in mock_mkdir.call_args_list:
kwargs = call[1]
assert kwargs.get("parents", False) is True
assert kwargs.get("exist_ok", False) is True