GayathriSrividya commented on code in PR #67973:
URL: https://github.com/apache/airflow/pull/67973#discussion_r3386165795


##########
airflow-core/tests/unit/api_fastapi/common/test_parameters.py:
##########
@@ -135,17 +135,16 @@ def 
test_aliased_sort_resolves_row_value_via_to_replace(self):
         assert param.row_value(row, "dag_run_id") == "manual__2026-04-22"
         assert param.row_value(row, "id") == 42
 
-    def test_row_value_raises_on_column_form_to_replace(self):
+    def test_row_value_falls_back_on_column_form_to_replace(self):
         """
-        Column-form ``to_replace`` is not supported by cursor encoding. The 
helper must
-        fail loudly so a future endpoint doesn't silently ship ``None`` cursor 
tokens.
+        Column-form ``to_replace`` should fall back to ``getattr(row, name)`` 
so
+        association proxies on the primary model remain usable for cursor 
encoding.
         """
         param = SortParam(["dag_id"], DagModel, {"last_run_state": 
DagRun.state}).set_value(
             ["last_run_state"]
         )
-        row = SimpleNamespace(id="test_dag")
-        with pytest.raises(NotImplementedError, match="column-form 
``to_replace``"):
-            param.row_value(row, "last_run_state")
+        row = SimpleNamespace(id="test_dag", last_run_state="success")
+        assert param.row_value(row, "last_run_state") == "success"

Review Comment:
   Done in the latest push. Split 
test_row_value_falls_back_on_column_form_to_replace into two tests:
   
   
[test_row_value_column_form_to_replace_resolves_via_row_attribute](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 — success path, 
[run_after](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 resolves via association proxy
   
[test_row_value_column_form_to_replace_raises_when_attribute_absent](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 — absent path, 
[data_interval_start](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 raises 
[NotImplementedError](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
   Added the same split to 
[test_cursors.py](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 
([test_encode_cursor_column_form_to_replace_raises_when_attribute_absent](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)).
   
   Added 
[test_cursor_pagination_order_by_run_after_roundtrips](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 in 
[test_task_instances.py](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 — creates 5 TIs, requests page 1 with 
[limit=3&order_by=-run_after](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html),
 follows 
[next_cursor](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html)
 to page 2, asserts no overlap and all TIs covered.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to