diff --git a/crowdin_api/api_resources/workflows/resource.py b/crowdin_api/api_resources/workflows/resource.py index 5edf853..8191532 100644 --- a/crowdin_api/api_resources/workflows/resource.py +++ b/crowdin_api/api_resources/workflows/resource.py @@ -37,7 +37,6 @@ def list_workflow_steps(self, projectId: Optional[int] = None): Link to documentation: https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.getMany """ - projectId = projectId or self.get_project_id() return self._get_entire_data( @@ -52,7 +51,6 @@ def get_workflow_step(self, stepId: int, projectId: Optional[int] = None): Link to documentation: https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.get """ - projectId = projectId or self.get_project_id() return self.requester.request( @@ -72,7 +70,6 @@ def list_workflow_templates( Link to documentation: https://developer.crowdin.com/enterprise/api/v2/#operation/api.workflow-templates.getMany """ - params = {"groupId": groupId} params.update(self.get_page_params(offset=offset, limit=limit)) @@ -89,8 +86,41 @@ def get_workflow_template(self, templateId: int): Link to documentation: https://developer.crowdin.com/enterprise/api/v2/#operation/api.workflow-templates.get """ - return self.requester.request( method="get", path=self.get_workflow_templates_path(templateId=templateId), ) + + def get_workflow_step_strings_path(self, projectId: int, stepId: int): + return f"projects/{projectId}/workflow-steps/{stepId}/strings" + + def list_workflow_step_strings( + self, + projectId: Optional[int], + stepId: int, + languageIds: Optional[str] = None, + orderBy: Optional[str] = None, + status: Optional[str] = None, + limit: Optional[int] = None, + offset: Optional[int] = None + ): + """ + List Strings on the Workflow Step. + + Link to documentation: + https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.workflow-steps.strings.getMany + """ + projectId = projectId or self.get_project_id() + + params = { + "languageIds": languageIds, + "orderBy": orderBy, + "status": status + } + params.update(self.get_page_params(offset=offset, limit=limit)) + + return self._get_entire_data( + method="get", + path=self.get_workflow_step_strings_path(projectId=projectId, stepId=stepId), + params=params + ) diff --git a/crowdin_api/api_resources/workflows/tests/test_workflows_resources.py b/crowdin_api/api_resources/workflows/tests/test_workflows_resources.py index e8eb1f2..f4cea33 100644 --- a/crowdin_api/api_resources/workflows/tests/test_workflows_resources.py +++ b/crowdin_api/api_resources/workflows/tests/test_workflows_resources.py @@ -27,7 +27,6 @@ def test_resource_with_id(self, base_absolut_url): ), ) def test_get_workflow_steps_path(self, incoming_data, path, base_absolut_url): - resource = self.get_resource(base_absolut_url) assert resource.get_workflow_steps_path(**incoming_data) == path @@ -39,7 +38,6 @@ def test_get_workflow_steps_path(self, incoming_data, path, base_absolut_url): ), ) def test_get_workflow_templates_path(self, incoming_data, path, base_absolut_url): - resource = self.get_resource(base_absolut_url) assert resource.get_workflow_templates_path(**incoming_data) == path @@ -50,7 +48,9 @@ def test_list_workflow_steps(self, m_request, base_absolut_url): resource = self.get_resource(base_absolut_url) assert resource.list_workflow_steps(projectId=1) == "response" m_request.assert_called_once_with( - method="get", path=resource.get_workflow_steps_path(projectId=1), params=None + method="get", + path=resource.get_workflow_steps_path(projectId=1), + params=None ) @mock.patch("crowdin_api.requester.APIRequester.request") @@ -60,7 +60,8 @@ def test_get_workflow_step(self, m_request, base_absolut_url): resource = self.get_resource(base_absolut_url) assert resource.get_workflow_step(projectId=1, stepId=2) == "response" m_request.assert_called_once_with( - method="get", path=resource.get_workflow_steps_path(projectId=1, stepId=2) + method="get", + path=resource.get_workflow_steps_path(projectId=1, stepId=2) ) @pytest.mark.parametrize( @@ -107,5 +108,54 @@ def test_get_workflow_template(self, m_request, base_absolut_url): resource = self.get_resource(base_absolut_url) assert resource.get_workflow_template(templateId=1) == "response" m_request.assert_called_once_with( - method="get", path=resource.get_workflow_templates_path(templateId=1) + method="get", + path=resource.get_workflow_templates_path(templateId=1) + ) + + @pytest.mark.parametrize( + "in_params, request_params", + ( + ( + {"projectId": 1, "stepId": 2}, + { + "languageIds": None, + "orderBy": None, + "status": None, + "offset": 0, + "limit": 25, + } + ), + ( + { + "projectId": 1, + "stepId": 2, + "languageIds": "es,fr", + "orderBy": "createdAt", + "status": "done", + "offset": 10, + "limit": 50 + }, + { + "languageIds": "es,fr", + "orderBy": "createdAt", + "status": "done", + "offset": 10, + "limit": 50 + } + ), + ) + ) + @mock.patch("crowdin_api.requester.APIRequester.request") + def test_list_workflow_step_strings(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_workflow_step_strings(**in_params) == "response" + m_request.assert_called_once_with( + method="get", + path=resource.get_workflow_step_strings_path( + projectId=in_params["projectId"], + stepId=in_params["stepId"] + ), + params=request_params )