diff --git a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/assets.py b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/assets.py index 839403352483e..a00739564f881 100644 --- a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/assets.py +++ b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/assets.py @@ -182,6 +182,7 @@ def get_assets( subqueryload(AssetModel.scheduled_dags), subqueryload(AssetModel.producing_tasks), subqueryload(AssetModel.consuming_tasks), + subqueryload(AssetModel.aliases), ) ) @@ -304,7 +305,9 @@ def get_asset_events( session=session, ) - assets_event_select = assets_event_select.options(subqueryload(AssetEvent.created_dagruns)) + assets_event_select = assets_event_select.options( + subqueryload(AssetEvent.created_dagruns), joinedload(AssetEvent.asset) + ) assets_events = session.scalars(assets_event_select) return AssetEventCollectionResponse( diff --git a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_assets.py b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_assets.py index bb4f086787fee..ddb7d8e7a944f 100644 --- a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_assets.py +++ b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_assets.py @@ -252,7 +252,9 @@ def test_should_respond_200(self, test_client, session): assert len(session.query(AssetModel).all()) == 3 assert len(session.query(AssetActive).all()) == 2 - response = test_client.get("/assets") + with assert_queries_count(7): + response = test_client.get("/assets") + assert response.status_code == 200 response_data = response.json() tz_datetime_format = from_datetime_to_zulu_without_ms(DEFAULT_DATE) @@ -585,7 +587,9 @@ def test_should_respond_200(self, test_client, session): asset_aliases = session.query(AssetAliasModel).all() assert len(asset_aliases) == 2 - response = test_client.get("/assets/aliases") + with assert_queries_count(2): + response = test_client.get("/assets/aliases") + assert response.status_code == 200 response_data = response.json() assert response_data == { @@ -668,7 +672,10 @@ def test_should_respond_200(self, test_client, session): assets = session.query(AssetEvent).all() session.commit() assert len(assets) == 2 - response = test_client.get("/assets/events") + + with assert_queries_count(3): + response = test_client.get("/assets/events") + assert response.status_code == 200 response_data = response.json() assert response_data == { @@ -1002,9 +1009,10 @@ def test_should_respond_200(self, test_client, session, create_dummy_dag): (asset,) = self.create_assets(session=session, num=1) self._create_asset_dag_run_queues(dag_id, asset.id, session) - response = test_client.get( - f"/dags/{dag_id}/assets/queuedEvents", - ) + with assert_queries_count(4): + response = test_client.get( + f"/dags/{dag_id}/assets/queuedEvents", + ) assert response.status_code == 200 assert response.json() == { @@ -1262,7 +1270,9 @@ def test_should_respond_200(self, test_client, session, create_dummy_dag): (asset,) = self.create_assets(session=session, num=1) self._create_asset_dag_run_queues(dag_id, asset.id, session) - response = test_client.get(f"/assets/{asset.id}/queuedEvents") + with assert_queries_count(3): + response = test_client.get(f"/assets/{asset.id}/queuedEvents") + assert response.status_code == 200 assert response.json() == { "queued_events": [