46
46
"duration" : 70 ,
47
47
}
48
48
49
+ merge_train_update = mr_content .copy ()
50
+ merge_train_update ["id" ] = 123
51
+ merge_train_update ["pipeline" ]["sha" ] = "ef33a3zxc3"
52
+
49
53
50
54
@pytest .fixture
51
55
def resp_list_merge_trains ():
@@ -65,26 +69,51 @@ def resp_merge_trains_merge_request_get():
65
69
with responses .RequestsMock () as rsps :
66
70
rsps .add (
67
71
method = responses .GET ,
68
- url = "http://localhost/api/v4/projects/1/merge_trains/merge_requests/123 " ,
72
+ url = "http://localhost/api/v4/projects/1/merge_trains/merge_requests/110 " ,
69
73
json = mr_content ,
70
74
content_type = "application/json" ,
71
75
status = 200 ,
72
76
)
73
77
yield rsps
74
78
75
79
80
+ @pytest .fixture
81
+ def resp_merge_trains_merge_request_post ():
82
+ with responses .RequestsMock () as rsps :
83
+ rsps .add (
84
+ method = responses .POST ,
85
+ url = "http://localhost/api/v4/projects/1/merge_trains/merge_requests/123" ,
86
+ json = [merge_train_update ],
87
+ content_type = "application/json" ,
88
+ status = 200 ,
89
+ )
90
+ yield rsps
91
+
92
+
76
93
def test_list_project_merge_requests (project , resp_list_merge_trains ):
77
94
merge_trains = project .merge_trains .list ()
78
95
assert isinstance (merge_trains [0 ], ProjectMergeTrain )
79
96
assert merge_trains [0 ].id == mr_content ["id" ]
80
97
81
98
82
- def test_merge_trains_status_merge_request (
99
+ def test_merge_trains_status_merge_request_get_status (
83
100
project , resp_merge_trains_merge_request_get
84
101
):
85
- # flow will be : project -> merge_trains : -> get merge_requests -> merge_request_iod
86
102
merge_train_mr : ProjectMergeTrainMergeRequest = project .merge_trains .get (
87
103
1 , lazy = True
88
- ).merge_requests .get (123 )
104
+ ).merge_requests .get (110 )
89
105
assert isinstance (merge_train_mr , ProjectMergeTrainMergeRequest )
90
106
assert merge_train_mr .get_id () == 110
107
+ assert merge_train_mr .pipeline .get ("status" ) == mr_content ["pipeline" ]["status" ]
108
+
109
+
110
+ def test_merge_train_add_merge_request (project , resp_merge_trains_merge_request_post ):
111
+ merge_train : ProjectMergeTrain = project .merge_trains .get (1 , lazy = True )
112
+ merge_requests_update = merge_train .merge_requests .update (
113
+ 123 , new_data = {"sha" : "ef33a3zxc3" }
114
+ )
115
+ assert isinstance (merge_train , ProjectMergeTrain )
116
+ assert (
117
+ merge_requests_update [0 ]["pipeline" ]["sha" ]
118
+ == merge_train_update ["pipeline" ]["sha" ]
119
+ )
0 commit comments