Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit916a7fe

Browse files
authored
Merge pull request#1364 from python-gitlab/feat/resource-state-events
feat: add support for resource state events API
2 parentsaf781c1 +c5e6fb3 commit916a7fe

File tree

6 files changed

+185
-0
lines changed

6 files changed

+185
-0
lines changed

‎docs/gl_objects/events.rst

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Events
33
######
44

5+
Events
6+
======
7+
58
Reference
69
---------
710

@@ -39,3 +42,42 @@ List the issue events on a project::
3942
List the user events::
4043

4144
events = project.events.list()
45+
46+
Resource state events
47+
=====================
48+
49+
Reference
50+
---------
51+
52+
* v4 API:
53+
54+
+:class:`gitlab.v4.objects.ProjectIssueResourceStateEvent`
55+
+:class:`gitlab.v4.objects.ProjectIssueResourceStateEventManager`
56+
+:attr:`gitlab.v4.objects.ProjectIssue.resourcestateevents`
57+
+:class:`gitlab.v4.objects.ProjectMergeRequestResourceStateEvent`
58+
+:class:`gitlab.v4.objects.ProjectMergeRequestResourceStateEventManager`
59+
+:attr:`gitlab.v4.objects.ProjectMergeRequest.resourcestateevents`
60+
61+
* GitLab API: https://docs.gitlab.com/ee/api/resource_state_events.html
62+
63+
Examples
64+
--------
65+
66+
You can list and get specific resource state events (via their id) for project issues
67+
and project merge requests.
68+
69+
List the state events of a project issue (paginated)::
70+
71+
state_events = issue.resourcestateevents.list()
72+
73+
Get a specific state event of a project issue by its id::
74+
75+
state_event = issue.resourcestateevents.get(1)
76+
77+
List the state events of a project merge request (paginated)::
78+
79+
state_events = mr.resourcestateevents.list()
80+
81+
Get a specific state event of a project merge request by its id::
82+
83+
state_event = mr.resourcestateevents.get(1)

‎gitlab/tests/conftest.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ def project(gl):
5252
returngl.projects.get(1,lazy=True)
5353

5454

55+
@pytest.fixture
56+
defproject_issue(project):
57+
returnproject.issues.get(1,lazy=True)
58+
59+
60+
@pytest.fixture
61+
defproject_merge_request(project):
62+
returnproject.mergerequests.get(1,lazy=True)
63+
64+
5565
@pytest.fixture
5666
defrelease(project,tag_name):
5767
returnproject.releases.get(tag_name,lazy=True)
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
"""
2+
GitLab API: https://docs.gitlab.com/ee/api/resource_state_events.html
3+
"""
4+
5+
importpytest
6+
importresponses
7+
8+
fromgitlab.v4.objectsimport (
9+
ProjectIssueResourceStateEvent,
10+
ProjectMergeRequestResourceStateEvent,
11+
)
12+
13+
14+
issue_event_content= {"id":1,"resource_type":"Issue"}
15+
mr_event_content= {"id":1,"resource_type":"MergeRequest"}
16+
17+
18+
@pytest.fixture()
19+
defresp_list_project_issue_state_events():
20+
withresponses.RequestsMock()asrsps:
21+
rsps.add(
22+
method=responses.GET,
23+
url="http://localhost/api/v4/projects/1/issues/1/resource_state_events",
24+
json=[issue_event_content],
25+
content_type="application/json",
26+
status=200,
27+
)
28+
yieldrsps
29+
30+
31+
@pytest.fixture()
32+
defresp_get_project_issue_state_event():
33+
withresponses.RequestsMock()asrsps:
34+
rsps.add(
35+
method=responses.GET,
36+
url="http://localhost/api/v4/projects/1/issues/1/resource_state_events/1",
37+
json=issue_event_content,
38+
content_type="application/json",
39+
status=200,
40+
)
41+
yieldrsps
42+
43+
44+
@pytest.fixture()
45+
defresp_list_merge_request_state_events():
46+
withresponses.RequestsMock()asrsps:
47+
rsps.add(
48+
method=responses.GET,
49+
url="http://localhost/api/v4/projects/1/merge_requests/1/resource_state_events",
50+
json=[mr_event_content],
51+
content_type="application/json",
52+
status=200,
53+
)
54+
yieldrsps
55+
56+
57+
@pytest.fixture()
58+
defresp_get_merge_request_state_event():
59+
withresponses.RequestsMock()asrsps:
60+
rsps.add(
61+
method=responses.GET,
62+
url="http://localhost/api/v4/projects/1/merge_requests/1/resource_state_events/1",
63+
json=mr_event_content,
64+
content_type="application/json",
65+
status=200,
66+
)
67+
yieldrsps
68+
69+
70+
deftest_list_project_issue_state_events(
71+
project_issue,resp_list_project_issue_state_events
72+
):
73+
state_events=project_issue.resourcestateevents.list()
74+
assertisinstance(state_events,list)
75+
76+
state_event=state_events[0]
77+
assertisinstance(state_event,ProjectIssueResourceStateEvent)
78+
assertstate_event.resource_type=="Issue"
79+
80+
81+
deftest_get_project_issue_state_event(
82+
project_issue,resp_get_project_issue_state_event
83+
):
84+
state_event=project_issue.resourcestateevents.get(1)
85+
assertisinstance(state_event,ProjectIssueResourceStateEvent)
86+
assertstate_event.resource_type=="Issue"
87+
88+
89+
deftest_list_merge_request_state_events(
90+
project_merge_request,resp_list_merge_request_state_events
91+
):
92+
state_events=project_merge_request.resourcestateevents.list()
93+
assertisinstance(state_events,list)
94+
95+
state_event=state_events[0]
96+
assertisinstance(state_event,ProjectMergeRequestResourceStateEvent)
97+
assertstate_event.resource_type=="MergeRequest"
98+
99+
100+
deftest_get_merge_request_state_event(
101+
project_merge_request,resp_get_merge_request_state_event
102+
):
103+
state_event=project_merge_request.resourcestateevents.get(1)
104+
assertisinstance(state_event,ProjectMergeRequestResourceStateEvent)
105+
assertstate_event.resource_type=="MergeRequest"

‎gitlab/v4/objects/events.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@
1414
"ProjectIssueResourceLabelEventManager",
1515
"ProjectIssueResourceMilestoneEvent",
1616
"ProjectIssueResourceMilestoneEventManager",
17+
"ProjectIssueResourceStateEvent",
18+
"ProjectIssueResourceStateEventManager",
1719
"ProjectMergeRequestResourceLabelEvent",
1820
"ProjectMergeRequestResourceLabelEventManager",
1921
"ProjectMergeRequestResourceMilestoneEvent",
2022
"ProjectMergeRequestResourceMilestoneEventManager",
23+
"ProjectMergeRequestResourceStateEvent",
24+
"ProjectMergeRequestResourceStateEventManager",
2125
"UserEvent",
2226
"UserEventManager",
2327
]
@@ -74,6 +78,16 @@ class ProjectIssueResourceMilestoneEventManager(RetrieveMixin, RESTManager):
7478
_from_parent_attrs= {"project_id":"project_id","issue_iid":"iid"}
7579

7680

81+
classProjectIssueResourceStateEvent(RESTObject):
82+
pass
83+
84+
85+
classProjectIssueResourceStateEventManager(RetrieveMixin,RESTManager):
86+
_path="/projects/%(project_id)s/issues/%(issue_iid)s/resource_state_events"
87+
_obj_cls=ProjectIssueResourceStateEvent
88+
_from_parent_attrs= {"project_id":"project_id","issue_iid":"iid"}
89+
90+
7791
classProjectMergeRequestResourceLabelEvent(RESTObject):
7892
pass
7993

@@ -98,6 +112,16 @@ class ProjectMergeRequestResourceMilestoneEventManager(RetrieveMixin, RESTManage
98112
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}
99113

100114

115+
classProjectMergeRequestResourceStateEvent(RESTObject):
116+
pass
117+
118+
119+
classProjectMergeRequestResourceStateEventManager(RetrieveMixin,RESTManager):
120+
_path="/projects/%(project_id)s/merge_requests/%(mr_iid)s/resource_state_events"
121+
_obj_cls=ProjectMergeRequestResourceStateEvent
122+
_from_parent_attrs= {"project_id":"project_id","mr_iid":"iid"}
123+
124+
101125
classUserEvent(Event):
102126
pass
103127

‎gitlab/v4/objects/issues.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .eventsimport (
2121
ProjectIssueResourceLabelEventManager,
2222
ProjectIssueResourceMilestoneEventManager,
23+
ProjectIssueResourceStateEventManager,
2324
)
2425
from .notesimportProjectIssueNoteManager
2526

@@ -110,6 +111,7 @@ class ProjectIssue(
110111
("notes","ProjectIssueNoteManager"),
111112
("resourcelabelevents","ProjectIssueResourceLabelEventManager"),
112113
("resourcemilestoneevents","ProjectIssueResourceMilestoneEventManager"),
114+
("resourcestateevents","ProjectIssueResourceStateEventManager"),
113115
)
114116

115117
@cli.register_custom_action("ProjectIssue", ("to_project_id",))

‎gitlab/v4/objects/merge_requests.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from .eventsimport (
2525
ProjectMergeRequestResourceLabelEventManager,
2626
ProjectMergeRequestResourceMilestoneEventManager,
27+
ProjectMergeRequestResourceStateEventManager,
2728
)
2829

2930

@@ -121,6 +122,7 @@ class ProjectMergeRequest(
121122
("notes","ProjectMergeRequestNoteManager"),
122123
("resourcelabelevents","ProjectMergeRequestResourceLabelEventManager"),
123124
("resourcemilestoneevents","ProjectMergeRequestResourceMilestoneEventManager"),
125+
("resourcestateevents","ProjectMergeRequestResourceStateEventManager"),
124126
)
125127

126128
@cli.register_custom_action("ProjectMergeRequest")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp