Skip to content

Commit

Permalink
fix(users): Fix list project members API endpoint for enterprise.
Browse files Browse the repository at this point in the history
For the enterprise endpoint the API accepts workflowStepId instead of role.
  • Loading branch information
dpaskov committed May 13, 2024
1 parent 00cbc5f commit 6937b6f
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 3 deletions.
30 changes: 27 additions & 3 deletions crowdin_api/api_resources/users/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ def list_project_members(
Link to documentation:
https://developer.crowdin.com/api/v2/#operation/api.projects.members.getMany
Link to documentation for enterprise:
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.getMany
"""

projectId = projectId or self.get_project_id()
Expand Down Expand Up @@ -90,6 +87,33 @@ def get_users_path(self, userId: Optional[int] = None):

return "users"

def list_project_members(
self,
projectId: Optional[int] = None,
search: Optional[str] = None,
workflowStepId: Optional[int] = None,
languageId: Optional[str] = None,
page: Optional[int] = None,
offset: Optional[int] = None,
limit: Optional[int] = None,
):
"""
List Project Members.
Link to documentation for enterprise:
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.getMany
"""

projectId = projectId or self.get_project_id()
params = {"search": search, "workflowStepId": workflowStepId, "languageId": languageId}
params.update(self.get_page_params(page=page, offset=offset, limit=limit))

return self._get_entire_data(
method="get",
path=self.get_members_path(projectId=projectId),
params=params,
)

def add_project_member(
self,
userIds: Iterable[int],
Expand Down
41 changes: 41 additions & 0 deletions crowdin_api/api_resources/users/tests/test_users_resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,47 @@ def test_get_users_path(self, userId, path, base_absolut_url):
resource = self.get_resource(base_absolut_url)
assert resource.get_users_path(userId=userId) == path

@pytest.mark.parametrize(
"in_params, request_params",
(
(
{},
{
"search": None,
"workflowStepId": None,
"languageId": None,
"offset": 0,
"limit": 25,
},
),
(
{
"search": "search",
"workflowStepId": 72,
"languageId": "ua",
"offset": 0,
"limit": 25,
},
{
"search": "search",
"workflowStepId": 72,
"languageId": "ua",
"offset": 0,
"limit": 25,
},
),
),
)
@mock.patch("crowdin_api.requester.APIRequester.request")
def test_list_project_members(self, m_request, in_params, request_params, base_absolut_url):
m_request.return_value = "response"

resource = self.get_resource(base_absolut_url)
assert resource.list_project_members(projectId=1, **in_params) == "response"
m_request.assert_called_once_with(
method="get", params=request_params, path="projects/1/members"
)

@pytest.mark.parametrize(
"in_params, request_params",
(
Expand Down

0 comments on commit 6937b6f

Please sign in to comment.