def test_container_methods(self, config, mock_client_session): manager = ServiceManager.from_config(config, mock_client_session) assert 'ServiceOne' in manager assert 'ServiceTwo' in manager assert '__all__' not in manager assert len(manager) == 2
async def test_search(self, config, bible1, mock_client_session): manager = ServiceManager.from_config(config, mock_client_session) manager.service_map['ServiceOne'].search.return_value = 'blah' result = await manager.search(bible1, ['one', 'two', 'three'], limit=10, offset=20) assert result == 'blah' manager.service_map['ServiceOne'].search.assert_called_once_with( bible1, ['one', 'two', 'three'], limit=10, offset=20)
def test_init(self, services, config, mock_client_session): manager = ServiceManager.from_config(config, mock_client_session) assert manager.service_map['ServiceOne'].config is None assert (type(manager.service_map['ServiceOne']) == services['ServiceOne'].side_effect) assert (manager.service_map['ServiceTwo'].config is config['services']['ServiceTwo']) assert (type(manager.service_map['ServiceTwo']) == services['ServiceTwo'].side_effect)
async def test_get_passage(self, config, bible2, mock_client_session): manager = ServiceManager.from_config(config, mock_client_session) manager.service_map['ServiceTwo'].get_passage.return_value = Passage( 'blah', VerseRange.from_string('Genesis 1:2')) result = await manager.get_passage( bible2, VerseRange.from_string('Genesis 1:2')) assert result == Passage('blah', VerseRange.from_string('Genesis 1:2'), 'BIB2') manager.service_map['ServiceTwo'].get_passage.assert_called_once_with( bible2, VerseRange.from_string('Genesis 1:2'))
def test_from_config( self, mocker: pytest_mock.MockerFixture, services: dict[str, Any], config: Any, mock_client_session: aiohttp.ClientSession, ) -> None: manager = ServiceManager.from_config(config, mock_client_session) services['ServiceOne'].assert_called_once_with( config=None, session=mock_client_session) services['ServiceTwo'].assert_called_once_with( config=config['services']['ServiceTwo'], session=mock_client_session) assert manager.service_map['ServiceOne'] == mocker.sentinel.SERVICE_ONE assert manager.service_map['ServiceTwo'] == mocker.sentinel.SERVICE_TWO
async def test_search_timeout( self, bible1: Bible, service_one: MockService, service_two: MockService, ) -> None: async def search(*args: Any, **kwargs: Any) -> None: await asyncio.sleep(0.5) manager = ServiceManager( { 'ServiceOne': service_one, 'ServiceTwo': service_two }, timeout=0.1) service_one.search.side_effect = search with pytest.raises(ServiceSearchTimeout) as exc_info: await manager.search(bible1, ['one', 'two', 'three']) assert exc_info.value.bible == bible1 assert exc_info.value.terms == ['one', 'two', 'three']
async def test_search( self, config: Any, bible1: Bible, service_one: MockService, service_two: MockService, ) -> None: manager = ServiceManager({ 'ServiceOne': service_one, 'ServiceTwo': service_two }) service_one.search.return_value = SearchResults(verses=[], total=10) service_two.search.return_value = SearchResults(verses=[], total=20) result = await manager.search(bible1, ['one', 'two', 'three'], limit=10, offset=20) assert result == SearchResults(verses=[], total=10) service_one.search.assert_called_once_with(bible1, ['one', 'two', 'three'], limit=10, offset=20)
async def test_get_passage_timeout( self, bible1: Bible, service_one: MockService, service_two: MockService, ) -> None: async def get_passage(*args: Any, **kwargs: Any) -> None: await asyncio.sleep(0.5) manager = ServiceManager( { 'ServiceOne': service_one, 'ServiceTwo': service_two }, timeout=0.1) service_one.get_passage.side_effect = get_passage with pytest.raises(ServiceLookupTimeout) as exc_info: await manager.get_passage(bible1, VerseRange.from_string('Genesis 1:2')) assert exc_info.value.bible == bible1 assert exc_info.value.verses == VerseRange.from_string('Genesis 1:2')
async def test_get_passage( self, config: Any, bible2: Bible, service_one: MockService, service_two: MockService, ) -> None: manager = ServiceManager({ 'ServiceOne': service_one, 'ServiceTwo': service_two }) service_one.get_passage.return_value = Passage( 'blah', VerseRange.from_string('Genesis 2:2')) service_two.get_passage.return_value = Passage( 'blah', VerseRange.from_string('Genesis 1:2')) result = await manager.get_passage( bible2, VerseRange.from_string('Genesis 1:2')) assert result == Passage('blah', VerseRange.from_string('Genesis 1:2'), 'BIB2') service_two.get_passage.assert_called_once_with( bible2, VerseRange.from_string('Genesis 1:2'))