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

feat: add support for resource state events API#1364

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
max-wittig merged 4 commits intomasterfromfeat/resource-state-events
Apr 18, 2021
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletionsdocs/gl_objects/events.rst
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,9 @@
Events
######

Events
======

Reference
---------

Expand DownExpand Up@@ -39,3 +42,42 @@ List the issue events on a project::
List the user events::

events = project.events.list()

Resource state events
=====================

Reference
---------

* v4 API:

+ :class:`gitlab.v4.objects.ProjectIssueResourceStateEvent`
+ :class:`gitlab.v4.objects.ProjectIssueResourceStateEventManager`
+ :attr:`gitlab.v4.objects.ProjectIssue.resourcestateevents`
+ :class:`gitlab.v4.objects.ProjectMergeRequestResourceStateEvent`
+ :class:`gitlab.v4.objects.ProjectMergeRequestResourceStateEventManager`
+ :attr:`gitlab.v4.objects.ProjectMergeRequest.resourcestateevents`

* GitLab API: https://docs.gitlab.com/ee/api/resource_state_events.html

Examples
--------

You can list and get specific resource state events (via their id) for project issues
and project merge requests.

List the state events of a project issue (paginated)::

state_events = issue.resourcestateevents.list()

Get a specific state event of a project issue by its id::

state_event = issue.resourcestateevents.get(1)

List the state events of a project merge request (paginated)::

state_events = mr.resourcestateevents.list()

Get a specific state event of a project merge request by its id::

state_event = mr.resourcestateevents.get(1)
10 changes: 10 additions & 0 deletionsgitlab/tests/conftest.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,6 +52,16 @@ def project(gl):
return gl.projects.get(1, lazy=True)


@pytest.fixture
def project_issue(project):
return project.issues.get(1, lazy=True)


@pytest.fixture
def project_merge_request(project):
return project.mergerequests.get(1, lazy=True)


@pytest.fixture
def release(project, tag_name):
return project.releases.get(tag_name, lazy=True)
Expand Down
105 changes: 105 additions & 0 deletionsgitlab/tests/objects/test_resource_state_events.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
"""
GitLab API: https://docs.gitlab.com/ee/api/resource_state_events.html
"""

import pytest
import responses

from gitlab.v4.objects import (
ProjectIssueResourceStateEvent,
ProjectMergeRequestResourceStateEvent,
)


issue_event_content = {"id": 1, "resource_type": "Issue"}
mr_event_content = {"id": 1, "resource_type": "MergeRequest"}


@pytest.fixture()
def resp_list_project_issue_state_events():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/issues/1/resource_state_events",
json=[issue_event_content],
content_type="application/json",
status=200,
)
yield rsps


@pytest.fixture()
def resp_get_project_issue_state_event():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/issues/1/resource_state_events/1",
json=issue_event_content,
content_type="application/json",
status=200,
)
yield rsps


@pytest.fixture()
def resp_list_merge_request_state_events():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/merge_requests/1/resource_state_events",
json=[mr_event_content],
content_type="application/json",
status=200,
)
yield rsps


@pytest.fixture()
def resp_get_merge_request_state_event():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.GET,
url="http://localhost/api/v4/projects/1/merge_requests/1/resource_state_events/1",
json=mr_event_content,
content_type="application/json",
status=200,
)
yield rsps


def test_list_project_issue_state_events(
project_issue, resp_list_project_issue_state_events
):
state_events = project_issue.resourcestateevents.list()
assert isinstance(state_events, list)

state_event = state_events[0]
assert isinstance(state_event, ProjectIssueResourceStateEvent)
assert state_event.resource_type == "Issue"


def test_get_project_issue_state_event(
project_issue, resp_get_project_issue_state_event
):
state_event = project_issue.resourcestateevents.get(1)
assert isinstance(state_event, ProjectIssueResourceStateEvent)
assert state_event.resource_type == "Issue"


def test_list_merge_request_state_events(
project_merge_request, resp_list_merge_request_state_events
):
state_events = project_merge_request.resourcestateevents.list()
assert isinstance(state_events, list)

state_event = state_events[0]
assert isinstance(state_event, ProjectMergeRequestResourceStateEvent)
assert state_event.resource_type == "MergeRequest"


def test_get_merge_request_state_event(
project_merge_request, resp_get_merge_request_state_event
):
state_event = project_merge_request.resourcestateevents.get(1)
assert isinstance(state_event, ProjectMergeRequestResourceStateEvent)
assert state_event.resource_type == "MergeRequest"
24 changes: 24 additions & 0 deletionsgitlab/v4/objects/events.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -14,10 +14,14 @@
"ProjectIssueResourceLabelEventManager",
"ProjectIssueResourceMilestoneEvent",
"ProjectIssueResourceMilestoneEventManager",
"ProjectIssueResourceStateEvent",
"ProjectIssueResourceStateEventManager",
"ProjectMergeRequestResourceLabelEvent",
"ProjectMergeRequestResourceLabelEventManager",
"ProjectMergeRequestResourceMilestoneEvent",
"ProjectMergeRequestResourceMilestoneEventManager",
"ProjectMergeRequestResourceStateEvent",
"ProjectMergeRequestResourceStateEventManager",
"UserEvent",
"UserEventManager",
]
Expand DownExpand Up@@ -74,6 +78,16 @@ class ProjectIssueResourceMilestoneEventManager(RetrieveMixin, RESTManager):
_from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"}


class ProjectIssueResourceStateEvent(RESTObject):
pass


class ProjectIssueResourceStateEventManager(RetrieveMixin, RESTManager):
_path = "/projects/%(project_id)s/issues/%(issue_iid)s/resource_state_events"
_obj_cls = ProjectIssueResourceStateEvent
_from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"}


class ProjectMergeRequestResourceLabelEvent(RESTObject):
pass

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


class ProjectMergeRequestResourceStateEvent(RESTObject):
pass


class ProjectMergeRequestResourceStateEventManager(RetrieveMixin, RESTManager):
_path = "/projects/%(project_id)s/merge_requests/%(mr_iid)s/resource_state_events"
_obj_cls = ProjectMergeRequestResourceStateEvent
_from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"}


class UserEvent(Event):
pass

Expand Down
2 changes: 2 additions & 0 deletionsgitlab/v4/objects/issues.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@
from .events import (
ProjectIssueResourceLabelEventManager,
ProjectIssueResourceMilestoneEventManager,
ProjectIssueResourceStateEventManager,
)
from .notes import ProjectIssueNoteManager

Expand DownExpand Up@@ -110,6 +111,7 @@ class ProjectIssue(
("notes", "ProjectIssueNoteManager"),
("resourcelabelevents", "ProjectIssueResourceLabelEventManager"),
("resourcemilestoneevents", "ProjectIssueResourceMilestoneEventManager"),
("resourcestateevents", "ProjectIssueResourceStateEventManager"),
)

@cli.register_custom_action("ProjectIssue", ("to_project_id",))
Expand Down
2 changes: 2 additions & 0 deletionsgitlab/v4/objects/merge_requests.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,6 +24,7 @@
from .events import (
ProjectMergeRequestResourceLabelEventManager,
ProjectMergeRequestResourceMilestoneEventManager,
ProjectMergeRequestResourceStateEventManager,
)


Expand DownExpand Up@@ -121,6 +122,7 @@ class ProjectMergeRequest(
("notes", "ProjectMergeRequestNoteManager"),
("resourcelabelevents", "ProjectMergeRequestResourceLabelEventManager"),
("resourcemilestoneevents", "ProjectMergeRequestResourceMilestoneEventManager"),
("resourcestateevents", "ProjectMergeRequestResourceStateEventManager"),
)

@cli.register_custom_action("ProjectMergeRequest")
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp