@@ -120,6 +120,33 @@ def test_xcom_set(self, client, create_task_instance, session, value, expected_v
120120 task_map = session .query (TaskMap ).filter_by (task_id = ti .task_id , dag_id = ti .dag_id ).one_or_none ()
121121 assert task_map is None , "Should not be mapped"
122122
123+ def test_xcom_set_mapped (self , client , create_task_instance , session ):
124+ ti = create_task_instance ()
125+ session .commit ()
126+
127+ response = client .post (
128+ f"/execution/xcoms/{ ti .dag_id } /{ ti .run_id } /{ ti .task_id } /xcom_1" ,
129+ params = {"map_index" : - 1 , "mapped_length" : 3 },
130+ json = "value1" ,
131+ )
132+
133+ assert response .status_code == 201
134+ assert response .json () == {"message" : "XCom successfully set" }
135+
136+ xcom = (
137+ session .query (XCom )
138+ .filter_by (task_id = ti .task_id , dag_id = ti .dag_id , key = "xcom_1" , map_index = - 1 )
139+ .first ()
140+ )
141+ assert xcom .value == "value1"
142+ task_map = session .query (TaskMap ).filter_by (task_id = ti .task_id , dag_id = ti .dag_id ).one_or_none ()
143+ assert task_map is not None , "Should be mapped"
144+ assert task_map .dag_id == "dag"
145+ assert task_map .run_id == "test"
146+ assert task_map .task_id == "op1"
147+ assert task_map .map_index == - 1
148+ assert task_map .length == 3
149+
123150 @pytest .mark .parametrize (
124151 ("length" , "err_context" ),
125152 [
0 commit comments