Skip to content

Commit 21f1fa3

Browse files
authored
feat(api): add List Strings on Workflow Step method (#186)
1 parent 1fa4b5b commit 21f1fa3

File tree

2 files changed

+89
-9
lines changed

2 files changed

+89
-9
lines changed

crowdin_api/api_resources/workflows/resource.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ def list_workflow_steps(self, projectId: Optional[int] = None):
3737
Link to documentation:
3838
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.getMany
3939
"""
40-
4140
projectId = projectId or self.get_project_id()
4241

4342
return self._get_entire_data(
@@ -52,7 +51,6 @@ def get_workflow_step(self, stepId: int, projectId: Optional[int] = None):
5251
Link to documentation:
5352
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.get
5453
"""
55-
5654
projectId = projectId or self.get_project_id()
5755

5856
return self.requester.request(
@@ -72,7 +70,6 @@ def list_workflow_templates(
7270
Link to documentation:
7371
https://developer.crowdin.com/enterprise/api/v2/#operation/api.workflow-templates.getMany
7472
"""
75-
7673
params = {"groupId": groupId}
7774
params.update(self.get_page_params(offset=offset, limit=limit))
7875

@@ -89,8 +86,41 @@ def get_workflow_template(self, templateId: int):
8986
Link to documentation:
9087
https://developer.crowdin.com/enterprise/api/v2/#operation/api.workflow-templates.get
9188
"""
92-
9389
return self.requester.request(
9490
method="get",
9591
path=self.get_workflow_templates_path(templateId=templateId),
9692
)
93+
94+
def get_workflow_step_strings_path(self, projectId: int, stepId: int):
95+
return f"projects/{projectId}/workflow-steps/{stepId}/strings"
96+
97+
def list_workflow_step_strings(
98+
self,
99+
projectId: Optional[int],
100+
stepId: int,
101+
languageIds: Optional[str] = None,
102+
orderBy: Optional[str] = None,
103+
status: Optional[str] = None,
104+
limit: Optional[int] = None,
105+
offset: Optional[int] = None
106+
):
107+
"""
108+
List Strings on the Workflow Step.
109+
110+
Link to documentation:
111+
https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.strings.getMany
112+
"""
113+
projectId = projectId or self.get_project_id()
114+
115+
params = {
116+
"languageIds": languageIds,
117+
"orderBy": orderBy,
118+
"status": status
119+
}
120+
params.update(self.get_page_params(offset=offset, limit=limit))
121+
122+
return self._get_entire_data(
123+
method="get",
124+
path=self.get_workflow_step_strings_path(projectId=projectId, stepId=stepId),
125+
params=params
126+
)

crowdin_api/api_resources/workflows/tests/test_workflows_resources.py

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ def test_resource_with_id(self, base_absolut_url):
2727
),
2828
)
2929
def test_get_workflow_steps_path(self, incoming_data, path, base_absolut_url):
30-
3130
resource = self.get_resource(base_absolut_url)
3231
assert resource.get_workflow_steps_path(**incoming_data) == path
3332

@@ -39,7 +38,6 @@ def test_get_workflow_steps_path(self, incoming_data, path, base_absolut_url):
3938
),
4039
)
4140
def test_get_workflow_templates_path(self, incoming_data, path, base_absolut_url):
42-
4341
resource = self.get_resource(base_absolut_url)
4442
assert resource.get_workflow_templates_path(**incoming_data) == path
4543

@@ -50,7 +48,9 @@ def test_list_workflow_steps(self, m_request, base_absolut_url):
5048
resource = self.get_resource(base_absolut_url)
5149
assert resource.list_workflow_steps(projectId=1) == "response"
5250
m_request.assert_called_once_with(
53-
method="get", path=resource.get_workflow_steps_path(projectId=1), params=None
51+
method="get",
52+
path=resource.get_workflow_steps_path(projectId=1),
53+
params=None
5454
)
5555

5656
@mock.patch("crowdin_api.requester.APIRequester.request")
@@ -60,7 +60,8 @@ def test_get_workflow_step(self, m_request, base_absolut_url):
6060
resource = self.get_resource(base_absolut_url)
6161
assert resource.get_workflow_step(projectId=1, stepId=2) == "response"
6262
m_request.assert_called_once_with(
63-
method="get", path=resource.get_workflow_steps_path(projectId=1, stepId=2)
63+
method="get",
64+
path=resource.get_workflow_steps_path(projectId=1, stepId=2)
6465
)
6566

6667
@pytest.mark.parametrize(
@@ -107,5 +108,54 @@ def test_get_workflow_template(self, m_request, base_absolut_url):
107108
resource = self.get_resource(base_absolut_url)
108109
assert resource.get_workflow_template(templateId=1) == "response"
109110
m_request.assert_called_once_with(
110-
method="get", path=resource.get_workflow_templates_path(templateId=1)
111+
method="get",
112+
path=resource.get_workflow_templates_path(templateId=1)
113+
)
114+
115+
@pytest.mark.parametrize(
116+
"in_params, request_params",
117+
(
118+
(
119+
{"projectId": 1, "stepId": 2},
120+
{
121+
"languageIds": None,
122+
"orderBy": None,
123+
"status": None,
124+
"offset": 0,
125+
"limit": 25,
126+
}
127+
),
128+
(
129+
{
130+
"projectId": 1,
131+
"stepId": 2,
132+
"languageIds": "es,fr",
133+
"orderBy": "createdAt",
134+
"status": "done",
135+
"offset": 10,
136+
"limit": 50
137+
},
138+
{
139+
"languageIds": "es,fr",
140+
"orderBy": "createdAt",
141+
"status": "done",
142+
"offset": 10,
143+
"limit": 50
144+
}
145+
),
146+
)
147+
)
148+
@mock.patch("crowdin_api.requester.APIRequester.request")
149+
def test_list_workflow_step_strings(self, m_request, in_params, request_params, base_absolut_url):
150+
m_request.return_value = "response"
151+
152+
resource = self.get_resource(base_absolut_url)
153+
assert resource.list_workflow_step_strings(**in_params) == "response"
154+
m_request.assert_called_once_with(
155+
method="get",
156+
path=resource.get_workflow_step_strings_path(
157+
projectId=in_params["projectId"],
158+
stepId=in_params["stepId"]
159+
),
160+
params=request_params
111161
)

0 commit comments

Comments
 (0)