"""Tests for lifespan.""" import pytest from pytest_mock import MockerFixture from delivery_metadata import config from delivery_metadata.api import lifespan from delivery_metadata.connectors.sql import SqlConnector @pytest.mark.asyncio async def test_lifespan(mocker: MockerFixture) -> None: """Test lifespan.""" mock_app = mocker.Mock() art_relations_connector = mocker.create_autospec(SqlConnector) direct_delivery_connector = mocker.create_autospec(SqlConnector) mock_sql_connector = mocker.patch( "delivery_metadata.connectors.sql.SqlConnector", side_effect=[art_relations_connector, direct_delivery_connector], ) mock_ows_connector = mocker.patch( "delivery_metadata.connectors.ows.OwsConnector", autospec=True, ) mock_graphql_connector = mocker.patch( "delivery_metadata.connectors.graphql.GraphQlConnector", autospec=True, ) async with lifespan.lifespan(mock_app): assert mock_sql_connector.mock_calls == [ mocker.call(config.AR_DB_URL), mocker.call(config.DD_DB_URL), ] assert mock_app.state.art_relations_connector == art_relations_connector assert mock_app.state.direct_delivery_connector == direct_delivery_connector assert mock_ows_connector.mock_calls == [mocker.call()] assert mock_app.state.ows_connector == mock_ows_connector.return_value assert mock_app.state.graphql_connector == mock_graphql_connector.return_value assert mock_app.state.art_relations_connector.close.called assert mock_app.state.direct_delivery_connector.close.called assert mock_app.state.ows_connector.close.called