mirror of
https://github.com/craigerl/aprsd.git
synced 2024-11-21 23:55:17 -05:00
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
import unittest
|
|
from unittest import mock
|
|
|
|
from aprsd.client.factory import Client, ClientFactory
|
|
|
|
|
|
class MockClient:
|
|
"""Mock client for testing."""
|
|
|
|
@classmethod
|
|
def is_enabled(cls):
|
|
return True
|
|
|
|
@classmethod
|
|
def is_configured(cls):
|
|
return True
|
|
|
|
|
|
class TestClientFactory(unittest.TestCase):
|
|
"""Test cases for ClientFactory."""
|
|
|
|
def setUp(self):
|
|
"""Set up test fixtures."""
|
|
self.factory = ClientFactory()
|
|
# Clear any registered clients from previous tests
|
|
self.factory.clients = []
|
|
|
|
def test_singleton(self):
|
|
"""Test that ClientFactory is a singleton."""
|
|
factory2 = ClientFactory()
|
|
self.assertEqual(self.factory, factory2)
|
|
|
|
def test_register_client(self):
|
|
"""Test registering a client."""
|
|
self.factory.register(MockClient)
|
|
self.assertIn(MockClient, self.factory.clients)
|
|
|
|
def test_register_invalid_client(self):
|
|
"""Test registering an invalid client raises error."""
|
|
invalid_client = mock.MagicMock(spec=Client)
|
|
with self.assertRaises(ValueError):
|
|
self.factory.register(invalid_client)
|
|
|
|
def test_create_client(self):
|
|
"""Test creating a client."""
|
|
self.factory.register(MockClient)
|
|
client = self.factory.create()
|
|
self.assertIsInstance(client, MockClient)
|
|
|
|
def test_create_no_clients(self):
|
|
"""Test creating a client with no registered clients."""
|
|
with self.assertRaises(Exception):
|
|
self.factory.create()
|
|
|
|
def test_is_client_enabled(self):
|
|
"""Test checking if any client is enabled."""
|
|
self.factory.register(MockClient)
|
|
self.assertTrue(self.factory.is_client_enabled())
|
|
|
|
def test_is_client_enabled_none(self):
|
|
"""Test checking if any client is enabled when none are."""
|
|
MockClient.is_enabled = classmethod(lambda cls: False)
|
|
self.factory.register(MockClient)
|
|
self.assertFalse(self.factory.is_client_enabled())
|
|
|
|
def test_is_client_configured(self):
|
|
"""Test checking if any client is configured."""
|
|
self.factory.register(MockClient)
|
|
self.assertTrue(self.factory.is_client_configured())
|
|
|
|
def test_is_client_configured_none(self):
|
|
"""Test checking if any client is configured when none are."""
|
|
MockClient.is_configured = classmethod(lambda cls: False)
|
|
self.factory.register(MockClient)
|
|
self.assertFalse(self.factory.is_client_configured())
|