From d0ec9d86500d065089ffcf3e906b5222719f1e55 Mon Sep 17 00:00:00 2001 From: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:05:19 +0200 Subject: [PATCH] Test journal_service --- .../app/service/journal_service.py | 5 + .../tests/test_service_journal_service.py | 103 ++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 openbb_sdk/sdk/core/tests/test_service_journal_service.py diff --git a/openbb_sdk/sdk/core/openbb_core/app/service/journal_service.py b/openbb_sdk/sdk/core/openbb_core/app/service/journal_service.py index ff348767de4..085f80bd533 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/service/journal_service.py +++ b/openbb_sdk/sdk/core/openbb_core/app/service/journal_service.py @@ -22,8 +22,11 @@ from pymongo.mongo_client import MongoClient class JournalService: + """Journal service.""" + @staticmethod def valid_client(mongodb_client: Optional[MongoClient] = None) -> bool: + """Check if the client is valid.""" if mongodb_client is None: return False @@ -41,6 +44,7 @@ class JournalService: mongodb_client: Optional[MongoClient] = None, journal_entry_repository: Optional[AbstractJournalEntryRepository] = None, ) -> AbstractJournalEntryRepository: + """Build journal entry repository.""" if journal_entry_repository: pass elif mongodb_client and valid_client: @@ -57,6 +61,7 @@ class JournalService: mongodb_client: Optional[MongoClient] = None, journal_repository: Optional[AbstractJournalRepository] = None, ) -> AbstractJournalRepository: + """Build journal repository.""" if journal_repository: pass elif mongodb_client and valid_client: diff --git a/openbb_sdk/sdk/core/tests/test_service_journal_service.py b/openbb_sdk/sdk/core/tests/test_service_journal_service.py new file mode 100644 index 00000000000..b22edab68f6 --- /dev/null +++ b/openbb_sdk/sdk/core/tests/test_service_journal_service.py @@ -0,0 +1,103 @@ +"""Test the ../openbb_core/app/service/journal_service.py module.""" +# pylint: disable=redefined-outer-name + +from unittest.mock import MagicMock + +import pytest +from openbb_core.app.service.journal_service import ( + AbstractJournalEntryRepository, + InMemoryJournalEntryRepository, + JournalService, + MongoClient, + MongoDBJournalEntryRepository, +) + + +@pytest.fixture +def journal_service(): + """Fixture for journal service.""" + return JournalService() + + +def test_journal_service_init(journal_service): + """Test journal service init.""" + assert journal_service + + +def test_invalid_client(journal_service): + """Test valid client.""" + assert not journal_service.valid_client() + + +def test_build_journal_entry_repository_with_given_repository(): + """Test build with repository.""" + mock_repository = MagicMock(spec=AbstractJournalEntryRepository) + result = JournalService.build_journal_entry_repository( + valid_client=True, journal_entry_repository=mock_repository + ) + + assert result == mock_repository + + +def test_build_journal_entry_repository_with_mongodb_client(): + """Test build with mongodb client.""" + mock_client = MagicMock(spec=MongoClient) + result = JournalService.build_journal_entry_repository( + valid_client=True, mongodb_client=mock_client + ) + + assert isinstance(result, MongoDBJournalEntryRepository) + + +def test_build_journal_entry_repository_memory(): + """Test build with in-memory access.""" + result = JournalService.build_journal_entry_repository(valid_client=True) + + assert isinstance(result, InMemoryJournalEntryRepository) + + +def test_build_journal_repository_with_given_repository(): + """Test build with repository.""" + mock_repository = MagicMock(spec=AbstractJournalEntryRepository) + result = JournalService.build_journal_entry_repository( + valid_client=True, journal_entry_repository=mock_repository + ) + + assert result == mock_repository + + +def test_build_journal_repository_with_mongodb_client(): + """Test build with mongodb client.""" + mock_client = MagicMock(spec=MongoClient) + result = JournalService.build_journal_entry_repository( + valid_client=True, mongodb_client=mock_client + ) + + assert isinstance(result, MongoDBJournalEntryRepository) + + +def test_build_journal_repository_memory(): + """Test build with in-memory access.""" + result = JournalService.build_journal_entry_repository(valid_client=True) + + assert isinstance(result, InMemoryJournalEntryRepository) + + +def test_journal_service_mongodb_client(journal_service): + """Test mongodb client.""" + assert journal_service.mongodb_client is None + + +def test_journal_service_journal_entry_repository(journal_service): + """Test journal entry repository.""" + assert isinstance( + journal_service.journal_entry_repository, InMemoryJournalEntryRepository + ) + + +def test_journal_service_journal_repository(journal_service): + """Test journal repository.""" + assert journal_service.journal_repository + assert isinstance( + type(journal_service.journal_repository), type(InMemoryJournalEntryRepository) + )