mac-messages-mcp

  • tests
""" Tests for the messages module """ import unittest from unittest.mock import patch, MagicMock from mac_messages_mcp.messages import run_applescript, get_messages_db_path, query_messages_db class TestMessages(unittest.TestCase): """Tests for the messages module""" @patch('subprocess.Popen') def test_run_applescript_success(self, mock_popen): """Test running AppleScript successfully""" # Setup mock process_mock = MagicMock() process_mock.returncode = 0 process_mock.communicate.return_value = (b'Success', b'') mock_popen.return_value = process_mock # Run function result = run_applescript('tell application "Messages" to get name') # Check results self.assertEqual(result, 'Success') mock_popen.assert_called_with( ['osascript', '-e', 'tell application "Messages" to get name'], stdout=-1, stderr=-1 ) @patch('subprocess.Popen') def test_run_applescript_error(self, mock_popen): """Test running AppleScript with error""" # Setup mock process_mock = MagicMock() process_mock.returncode = 1 process_mock.communicate.return_value = (b'', b'Error message') mock_popen.return_value = process_mock # Run function result = run_applescript('invalid script') # Check results self.assertEqual(result, 'Error: Error message') @patch('os.path.expanduser') def test_get_messages_db_path(self, mock_expanduser): """Test getting the Messages database path""" # Setup mock mock_expanduser.return_value = '/Users/testuser' # Run function result = get_messages_db_path() # Check results self.assertEqual(result, '/Users/testuser/Library/Messages/chat.db') mock_expanduser.assert_called_with('~') if __name__ == '__main__': unittest.main()