This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 27047f9a91e refactor: Improved assertions (#60106)
27047f9a91e is described below

commit 27047f9a91e212908ffd25f613f391eb5b17161b
Author: David Blain <[email protected]>
AuthorDate: Sun Jan 4 23:04:06 2026 +0100

    refactor: Improved assertions (#60106)
---
 .../core_api/routes/public/test_task_instances.py  | 405 ++++++++++++++++-----
 1 file changed, 322 insertions(+), 83 deletions(-)

diff --git 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
index 8499a637069..5fef690549b 100644
--- 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
+++ 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
@@ -189,11 +189,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
         )
-
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "dag_id": "example_python_operator",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
             "end_date": "2020-01-03T00:00:00Z",
@@ -201,7 +210,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
             "executor": None,
             "executor_config": "{}",
             "hostname": "",
-            "id": mock.ANY,
+            "id": response_data["id"],
             "map_index": -1,
             "max_tries": 0,
             "note": "placeholder-note",
@@ -266,10 +275,10 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
     ):
         mock_hasattr.return_value = False
         response = 
test_client.get(f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1")
-
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
-            "id": mock.ANY,
+        assert response_data == {
+            "id": response_data["id"],
             "task_id": "task1",
             "dag_id": "dag_with_multiple_versions",
             "dag_run_id": run_id,
@@ -303,14 +312,14 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
             "trigger": None,
             "triggerer_job": None,
             "dag_version": {
-                "id": mock.ANY,
+                "id": response_data["dag_version"]["id"],
                 "version_number": expected_version_number,
                 "dag_id": "dag_with_multiple_versions",
                 "dag_display_name": "dag_with_multiple_versions",
                 "bundle_name": "dag_maker",
                 "bundle_version": f"some_commit_hash{expected_version_number}",
                 "bundle_url": 
f"http://test_host.github.com/tree/some_commit_hash{expected_version_number}/dags";,
-                "created_at": mock.ANY,
+                "created_at": response_data["dag_version"]["created_at"],
             },
         }
 
@@ -328,7 +337,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
         )
-        data = response.json()
+        response_data = response.json()
 
         # this logic in effect replicates mock.ANY for these values
         values_to_ignore = {
@@ -337,12 +346,21 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
         }
         for k, v in values_to_ignore.items():
             for elem in v:
-                del data[k][elem]
+                del response_data[k][elem]
 
         assert response.status_code == 200
-        assert data == {
+        assert response_data == {
             "dag_id": "example_python_operator",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
             "end_date": "2020-01-03T00:00:00Z",
@@ -350,7 +368,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
             "executor": None,
             "executor_config": "{}",
             "hostname": "",
-            "id": mock.ANY,
+            "id": response_data["id"],
             "map_index": -1,
             "max_tries": 0,
             "note": "placeholder-note",
@@ -393,10 +411,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
         )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "dag_id": "example_python_operator",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
             "end_date": "2020-01-03T00:00:00Z",
@@ -404,7 +432,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
             "executor": None,
             "executor_config": "{}",
             "hostname": "",
-            "id": mock.ANY,
+            "id": response_data["id"],
             "map_index": -1,
             "max_tries": 0,
             "note": "placeholder-note",
@@ -440,11 +468,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
         )
+        response_data = response.json()
         assert response.status_code == 200
-
         assert response.json() == {
             "dag_id": "example_python_operator",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
             "end_date": "2020-01-03T00:00:00Z",
@@ -452,7 +489,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
             "executor": None,
             "executor_config": "{}",
             "hostname": "",
-            "id": mock.ANY,
+            "id": response_data["id"],
             "map_index": -1,
             "max_tries": 0,
             "note": "placeholder-note",
@@ -551,11 +588,20 @@ class TestGetMappedTaskInstance(TestTaskInstanceEndpoint):
                 
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
                 f"/print_the_context/{map_index}",
             )
+            response_data = response.json()
             assert response.status_code == 200
-
-            assert response.json() == {
+            assert response_data == {
                 "dag_id": "example_python_operator",
-                "dag_version": mock.ANY,
+                "dag_version": {
+                    "bundle_name": "dags-folder",
+                    "bundle_url": None,
+                    "bundle_version": None,
+                    "created_at": response_data["dag_version"]["created_at"],
+                    "dag_display_name": "example_python_operator",
+                    "dag_id": "example_python_operator",
+                    "id": response_data["dag_version"]["id"],
+                    "version_number": 1,
+                },
                 "dag_display_name": "example_python_operator",
                 "duration": 10000.0,
                 "end_date": "2020-01-03T00:00:00Z",
@@ -563,7 +609,7 @@ class TestGetMappedTaskInstance(TestTaskInstanceEndpoint):
                 "executor": None,
                 "executor_config": "{}",
                 "hostname": "",
-                "id": mock.ANY,
+                "id": response_data["id"],
                 "map_index": map_index,
                 "max_tries": 0,
                 "note": "placeholder-note",
@@ -2009,8 +2055,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1"
         )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "dag_id": "example_python_operator",
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
@@ -2036,7 +2083,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
             "try_number": 1,
             "unixname": getuser(),
             "dag_run_id": "TEST_DAG_RUN_ID",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "hitl_detail": None,
         }
 
@@ -2046,9 +2102,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
         response = test_client.get(
             
f"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/{try_number}",
         )
-
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "dag_id": "example_python_operator",
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
@@ -2074,7 +2130,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
             "try_number": try_number,
             "unixname": getuser(),
             "dag_run_id": "TEST_DAG_RUN_ID",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "hitl_detail": None,
         }
 
@@ -2115,9 +2180,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
                 
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
                 f"/print_the_context/{map_index}/tries/{try_number}",
             )
+            response_data = response.json()
             assert response.status_code == 200
-
-            assert response.json() == {
+            assert response_data == {
                 "dag_id": "example_python_operator",
                 "dag_display_name": "example_python_operator",
                 "duration": 10000.0,
@@ -2143,7 +2208,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
                 "try_number": try_number,
                 "unixname": getuser(),
                 "dag_run_id": "TEST_DAG_RUN_ID",
-                "dag_version": mock.ANY,
+                "dag_version": {
+                    "bundle_name": "dags-folder",
+                    "bundle_url": None,
+                    "bundle_version": None,
+                    "created_at": response_data["dag_version"]["created_at"],
+                    "dag_display_name": "example_python_operator",
+                    "dag_id": "example_python_operator",
+                    "id": response_data["dag_version"]["id"],
+                    "version_number": 1,
+                },
                 "hitl_detail": None,
             }
 
@@ -2179,10 +2253,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1",
         )
+        response_data = response.json()
         assert response.status_code == 200
-        data = response.json()
-
-        assert data == {
+        assert response_data == {
             "dag_id": "example_python_operator",
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
@@ -2208,7 +2281,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
             "try_number": 1,
             "unixname": getuser(),
             "dag_run_id": "TEST_DAG_RUN_ID",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "hitl_detail": None,
         }
 
@@ -2219,9 +2301,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1",
         )
+        response_data = response.json()
         assert response.status_code == 200
-
-        assert response.json() == {
+        assert response_data == {
             "dag_id": "example_python_operator",
             "dag_display_name": "example_python_operator",
             "duration": 10000.0,
@@ -2247,7 +2329,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
             "try_number": 1,
             "unixname": getuser(),
             "dag_run_id": "TEST_DAG_RUN_ID",
-            "dag_version": mock.ANY,
+            "dag_version": {
+                "bundle_name": "dags-folder",
+                "bundle_url": None,
+                "bundle_version": None,
+                "created_at": response_data["dag_version"]["created_at"],
+                "dag_display_name": "example_python_operator",
+                "dag_id": "example_python_operator",
+                "id": response_data["dag_version"]["id"],
+                "version_number": 1,
+            },
             "hitl_detail": None,
         }
 
@@ -3110,20 +3201,29 @@ class 
TestPostClearTaskInstances(TestTaskInstanceEndpoint):
             f"/dags/{dag_id}/clearTaskInstances",
             json=payload,
         )
-        assert response.status_code == 200
+        response_data = response.json()
         expected_response = [
             {
                 "dag_id": "example_python_operator",
                 "dag_display_name": "example_python_operator",
-                "dag_version": mock.ANY,
+                "dag_version": {
+                    "bundle_name": "dags-folder",
+                    "bundle_url": None,
+                    "bundle_version": None,
+                    "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                    "dag_display_name": "example_python_operator",
+                    "dag_id": "example_python_operator",
+                    "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                    "version_number": 1,
+                },
                 "dag_run_id": "TEST_DAG_RUN_ID_0",
                 "task_id": "print_the_context",
-                "duration": mock.ANY,
-                "end_date": mock.ANY,
+                "duration": response_data["task_instances"][0]["duration"],
+                "end_date": response_data["task_instances"][0]["end_date"],
                 "executor": None,
                 "executor_config": "{}",
                 "hostname": "",
-                "id": mock.ANY,
+                "id": response_data["task_instances"][0]["id"],
                 "logical_date": response_logical_date,
                 "map_index": -1,
                 "max_tries": 0,
@@ -3146,11 +3246,12 @@ class 
TestPostClearTaskInstances(TestTaskInstanceEndpoint):
                 "trigger": None,
                 "triggerer_job": None,
                 "try_number": 0,
-                "unixname": mock.ANY,
+                "unixname": getuser(),
             },
         ]
-        assert response.json()["task_instances"] == expected_response
-        assert response.json()["total_entries"] == 1
+        assert response.status_code == 200
+        assert response_data["task_instances"] == expected_response
+        assert response_data["total_entries"] == 1
 
     def test_should_respond_200_with_include_past(self, test_client, session):
         dag_id = "example_python_operator"
@@ -3483,10 +3584,11 @@ class 
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
             response = test_client.get(
                 
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries"
             )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json()["total_entries"] == 2  # The task instance and 
its history
-        assert len(response.json()["task_instances"]) == 2
-        assert response.json() == {
+        assert response_data["total_entries"] == 2  # The task instance and 
its history
+        assert len(response_data["task_instances"]) == 2
+        assert response_data == {
             "task_instances": [
                 {
                     "dag_id": "example_python_operator",
@@ -3514,7 +3616,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                     "try_number": 1,
                     "unixname": getuser(),
                     "dag_run_id": "TEST_DAG_RUN_ID",
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "hitl_detail": None,
                 },
                 {
@@ -3543,7 +3654,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                     "try_number": 2,
                     "unixname": getuser(),
                     "dag_run_id": "TEST_DAG_RUN_ID",
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][1]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][1]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "hitl_detail": None,
                 },
             ],
@@ -3650,10 +3770,11 @@ class 
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
         response = test_client.get(
             
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries"
         )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json()["total_entries"] == 1
-        assert len(response.json()["task_instances"]) == 1
-        assert response.json() == {
+        assert response_data["total_entries"] == 1
+        assert len(response_data["task_instances"]) == 1
+        assert response_data == {
             "task_instances": [
                 {
                     "dag_id": "example_python_operator",
@@ -3681,7 +3802,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                     "try_number": 1,
                     "unixname": getuser(),
                     "dag_run_id": "TEST_DAG_RUN_ID",
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "hitl_detail": None,
                 },
             ],
@@ -3722,12 +3852,13 @@ class 
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                     
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
                     f"/print_the_context/{map_index}/tries",
                 )
+            response_data = response.json()
             assert response.status_code == 200
             assert (
-                response.json()["total_entries"] == 2
+                response_data["total_entries"] == 2
             )  # the mapped task was cleared. So both the task instance and 
its history
-            assert len(response.json()["task_instances"]) == 2
-            assert response.json() == {
+            assert len(response_data["task_instances"]) == 2
+            assert response_data == {
                 "task_instances": [
                     {
                         "dag_id": "example_python_operator",
@@ -3755,7 +3886,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                         "try_number": 1,
                         "unixname": getuser(),
                         "dag_run_id": "TEST_DAG_RUN_ID",
-                        "dag_version": mock.ANY,
+                        "dag_version": {
+                            "bundle_name": "dags-folder",
+                            "bundle_url": None,
+                            "bundle_version": None,
+                            "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                            "dag_display_name": "example_python_operator",
+                            "dag_id": "example_python_operator",
+                            "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                            "version_number": 1,
+                        },
                         "hitl_detail": None,
                     },
                     {
@@ -3784,7 +3924,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
                         "try_number": 2,
                         "unixname": getuser(),
                         "dag_run_id": "TEST_DAG_RUN_ID",
-                        "dag_version": mock.ANY,
+                        "dag_version": {
+                            "bundle_name": "dags-folder",
+                            "bundle_url": None,
+                            "bundle_version": None,
+                            "created_at": 
response_data["task_instances"][1]["dag_version"]["created_at"],
+                            "dag_display_name": "example_python_operator",
+                            "dag_id": "example_python_operator",
+                            "id": 
response_data["task_instances"][1]["dag_version"]["id"],
+                            "version_number": 1,
+                        },
                         "hitl_detail": None,
                     },
                 ],
@@ -3819,9 +3968,9 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
         response = test_client.get(
             
f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1/tries"
         )
+        response_data = response.json()
         assert response.status_code == 200
-
-        assert response.json()["task_instances"][0] == {
+        assert response_data["task_instances"][0] == {
             "task_id": "task1",
             "dag_id": "dag_with_multiple_versions",
             "dag_display_name": "dag_with_multiple_versions",
@@ -3876,7 +4025,6 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
             
f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1/tries"
         )
         assert response.status_code == 200
-
         assert response.json()["task_instances"][0] == {
             "task_id": "task1",
             "dag_id": "dag_with_multiple_versions",
@@ -3977,13 +4125,23 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                 "new_state": self.NEW_STATE,
             },
         )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "task_instances": [
                 {
                     "dag_id": self.DAG_ID,
                     "dag_display_name": self.DAG_DISPLAY_NAME,
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "dag_run_id": self.RUN_ID,
                     "logical_date": "2020-01-01T00:00:00Z",
                     "task_id": self.TASK_ID,
@@ -3992,7 +4150,7 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                     "executor": None,
                     "executor_config": "{}",
                     "hostname": "",
-                    "id": mock.ANY,
+                    "id": response_data["task_instances"][0]["id"],
                     "map_index": -1,
                     "max_tries": 0,
                     "note": "placeholder-note",
@@ -4248,7 +4406,16 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                         {
                             "dag_id": "example_python_operator",
                             "dag_display_name": "example_python_operator",
-                            "dag_version": mock.ANY,
+                            "dag_version": {
+                                "bundle_name": "dags-folder",
+                                "bundle_url": None,
+                                "bundle_version": None,
+                                "created_at": mock.ANY,
+                                "dag_display_name": "example_python_operator",
+                                "dag_id": "example_python_operator",
+                                "id": mock.ANY,
+                                "version_number": 1,
+                            },
                             "dag_run_id": "TEST_DAG_RUN_ID",
                             "logical_date": "2020-01-01T00:00:00Z",
                             "task_id": "print_the_context",
@@ -4333,8 +4500,17 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                 "new_state": new_state,
             },
         )
+        response_data = response.json()
+        if expected_status_code == 200:
+            expected_json["task_instances"][0]["dag_version"]["created_at"] = 
response_data["task_instances"][
+                0
+            ]["dag_version"]["created_at"]
+            expected_json["task_instances"][0]["dag_version"]["id"] = 
response_data["task_instances"][0][
+                "dag_version"
+            ]["id"]
+            expected_json["task_instances"][0]["id"] = 
response_data["task_instances"][0]["id"]
         assert response.status_code == expected_status_code
-        assert response.json() == expected_json
+        assert response_data == expected_json
         assert mock_set_ti_state.call_count == set_ti_state_call_count
 
     @pytest.mark.parametrize(
@@ -4366,11 +4542,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                 {
                     "dag_id": self.DAG_ID,
                     "dag_display_name": self.DAG_DISPLAY_NAME,
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "duration": 10000.0,
                     "end_date": "2020-01-03T00:00:00Z",
                     "logical_date": "2020-01-01T00:00:00Z",
-                    "id": mock.ANY,
+                    "id": response_data["task_instances"][0]["id"],
                     "executor": None,
                     "executor_config": "{}",
                     "hostname": "",
@@ -4418,11 +4603,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
                 {
                     "dag_id": self.DAG_ID,
                     "dag_display_name": self.DAG_DISPLAY_NAME,
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "duration": 10000.0,
                     "end_date": "2020-01-03T00:00:00Z",
                     "logical_date": "2020-01-01T00:00:00Z",
-                    "id": mock.ANY,
+                    "id": response_data["task_instances"][0]["id"],
                     "executor": None,
                     "executor_config": "{}",
                     "hostname": "",
@@ -4483,17 +4677,25 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
             )
             assert response.status_code == 200, response.text
             response_data = response.json()
-
             assert response_data == {
                 "task_instances": [
                     {
                         "dag_id": self.DAG_ID,
                         "dag_display_name": self.DAG_DISPLAY_NAME,
-                        "dag_version": mock.ANY,
+                        "dag_version": {
+                            "bundle_name": "dags-folder",
+                            "bundle_url": None,
+                            "bundle_version": None,
+                            "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                            "dag_display_name": "example_python_operator",
+                            "dag_id": "example_python_operator",
+                            "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                            "version_number": 1,
+                        },
                         "duration": 10000.0,
                         "end_date": "2020-01-03T00:00:00Z",
                         "logical_date": "2020-01-01T00:00:00Z",
-                        "id": mock.ANY,
+                        "id": response_data["task_instances"][0]["id"],
                         "executor": None,
                         "executor_config": "{}",
                         "hostname": "",
@@ -4561,11 +4763,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
             assert response_ti == {
                 "dag_id": self.DAG_ID,
                 "dag_display_name": self.DAG_DISPLAY_NAME,
-                "dag_version": mock.ANY,
+                "dag_version": {
+                    "bundle_name": "dags-folder",
+                    "bundle_url": None,
+                    "bundle_version": None,
+                    "created_at": response_ti["dag_version"]["created_at"],
+                    "dag_display_name": "example_python_operator",
+                    "dag_id": "example_python_operator",
+                    "id": response_ti["dag_version"]["id"],
+                    "version_number": 1,
+                },
                 "duration": 10000.0,
                 "end_date": "2020-01-03T00:00:00Z",
                 "logical_date": "2020-01-01T00:00:00Z",
-                "id": mock.ANY,
+                "id": response_ti["id"],
                 "executor": None,
                 "executor_config": "{}",
                 "hostname": "",
@@ -4661,13 +4872,23 @@ class 
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
                 "new_state": self.NEW_STATE,
             },
         )
+        response_data = response.json()
         assert response.status_code == 200
-        assert response.json() == {
+        assert response_data == {
             "task_instances": [
                 {
                     "dag_id": self.DAG_ID,
                     "dag_display_name": self.DAG_DISPLAY_NAME,
-                    "dag_version": mock.ANY,
+                    "dag_version": {
+                        "bundle_name": "dags-folder",
+                        "bundle_url": None,
+                        "bundle_version": None,
+                        "created_at": 
response_data["task_instances"][0]["dag_version"]["created_at"],
+                        "dag_display_name": "example_python_operator",
+                        "dag_id": "example_python_operator",
+                        "id": 
response_data["task_instances"][0]["dag_version"]["id"],
+                        "version_number": 1,
+                    },
                     "dag_run_id": self.RUN_ID,
                     "logical_date": "2020-01-01T00:00:00Z",
                     "task_id": self.TASK_ID,
@@ -4676,7 +4897,7 @@ class 
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
                     "executor": None,
                     "executor_config": "{}",
                     "hostname": "",
-                    "id": mock.ANY,
+                    "id": response_data["task_instances"][0]["id"],
                     "map_index": -1,
                     "max_tries": 0,
                     "note": "placeholder-note",
@@ -4944,7 +5165,16 @@ class 
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
                         {
                             "dag_id": "example_python_operator",
                             "dag_display_name": "example_python_operator",
-                            "dag_version": mock.ANY,
+                            "dag_version": {
+                                "bundle_name": "dags-folder",
+                                "bundle_url": None,
+                                "bundle_version": None,
+                                "created_at": mock.ANY,
+                                "dag_display_name": "example_python_operator",
+                                "dag_id": "example_python_operator",
+                                "id": mock.ANY,
+                                "version_number": 1,
+                            },
                             "dag_run_id": "TEST_DAG_RUN_ID",
                             "logical_date": "2020-01-01T00:00:00Z",
                             "task_id": "print_the_context",
@@ -5029,8 +5259,17 @@ class 
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
                 "new_state": new_state,
             },
         )
+        response_data = response.json()
+        if expected_status_code == 200:
+            expected_json["task_instances"][0]["dag_version"]["created_at"] = 
response_data["task_instances"][
+                0
+            ]["dag_version"]["created_at"]
+            expected_json["task_instances"][0]["dag_version"]["id"] = 
response_data["task_instances"][0][
+                "dag_version"
+            ]["id"]
+            expected_json["task_instances"][0]["id"] = 
response_data["task_instances"][0]["id"]
         assert response.status_code == expected_status_code
-        assert response.json() == expected_json
+        assert response_data == expected_json
         assert mock_set_ti_state.call_count == set_ti_state_call_count
 
     
@mock.patch("airflow.serialization.definitions.dag.SerializedDAG.set_task_instance_state")


Reply via email to