From f8ee8cf8a206ebcff0ee65c7b2803590df27b1bc Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 18 Sep 2020 12:32:05 -0400 Subject: [PATCH] Add api test case to test page creation from workflow invocation report --- lib/galaxy/managers/pages.py | 6 ++-- lib/galaxy_test/api/test_pages.py | 53 ++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/managers/pages.py b/lib/galaxy/managers/pages.py index 95c8aba5cef..dd8fb30aba0 100644 --- a/lib/galaxy/managers/pages.py +++ b/lib/galaxy/managers/pages.py @@ -14,11 +14,11 @@ from six.moves.html_parser import HTMLParser from galaxy import exceptions, model from galaxy.managers import base, sharable from galaxy.managers.hdas import HDAManager -from galaxy.managers.workflows import WorkflowsManager from galaxy.managers.markdown_util import ( ready_galaxy_markdown_for_export, ready_galaxy_markdown_for_import, ) +from galaxy.managers.workflows import WorkflowsManager from galaxy.model.item_attrs import UsesAnnotations from galaxy.util import unicodify from galaxy.util.sanitize_html import sanitize_html @@ -73,7 +73,7 @@ class PageManager(sharable.SharableModelManager, UsesAnnotations): """ """ super().__init__(app, *args, **kwargs) - workflow_manager = WorkflowsManager(app) + self.workflow_manager = WorkflowsManager(app) def copy(self, trans, page, user, **kwargs): """ @@ -98,7 +98,7 @@ class PageManager(sharable.SharableModelManager, UsesAnnotations): content_format = "markdown" else: content = payload.get("content", "") - content_format = payload.get("content_format", "markdown") + content_format = payload.get("content_format", "html") content = self.rewrite_content_for_import(trans, content, content_format) # Create the new stored page diff --git a/lib/galaxy_test/api/test_pages.py b/lib/galaxy_test/api/test_pages.py index 4de64b2750d..b918511db56 100644 --- a/lib/galaxy_test/api/test_pages.py +++ b/lib/galaxy_test/api/test_pages.py @@ -1,7 +1,7 @@ from requests import delete from galaxy.exceptions import error_codes -from galaxy_test.base.populators import DatasetPopulator +from galaxy_test.base.populators import DatasetPopulator, skip_without_tool, WorkflowPopulator from ._framework import ApiTestCase @@ -43,6 +43,57 @@ class PageApiTestCase(BasePageApiTestCase): response_json = self._create_valid_page_with_slug("mypage") self._assert_has_keys(response_json, "slug", "title", "id") + @skip_without_tool("cat") + def test_create_from_report(self): + dataset_populator = DatasetPopulator(self.galaxy_interactor) + workflow_populator = WorkflowPopulator(self.galaxy_interactor) + test_data = """ +input_1: + value: 1.bed + type: File +""" + with dataset_populator.test_history() as history_id: + summary = workflow_populator.run_workflow(""" +class: GalaxyWorkflow +inputs: + input_1: data +outputs: + output_1: + outputSource: first_cat/out_file1 +steps: + first_cat: + tool_id: cat + in: + input1: input_1 +""", test_data=test_data, history_id=history_id) + + workflow_id = summary.workflow_id + invocation_id = summary.invocation_id + report_json = workflow_populator.workflow_report_json(workflow_id, invocation_id) + assert "markdown" in report_json + self._assert_has_keys(report_json , "markdown", "render_format") + assert report_json["render_format"] == "markdown" + markdown_content = report_json["markdown"] + page_request = dict( + slug="invocation-report", + title="Invocation Report", + invocation_id=invocation_id, + ) + page_response = self._post("pages", page_request) + self._assert_status_code_is(page_response, 200) + page_response = page_response.json() + show_response = self._get("pages/%s" % page_response['id']) + self._assert_status_code_is(show_response, 200) + show_json = show_response.json() + self._assert_has_keys(show_json, "slug", "title", "id") + self.assertEqual(show_json["slug"], "invocation-report") + self.assertEqual(show_json["title"], "Invocation Report") + self.assertEqual(show_json["content_format"], "markdown") + markdown_content = show_json["content"] + assert "## Workflow Outputs" in markdown_content + assert "## Workflow Inputs" in markdown_content + assert "## About This Report" not in markdown_content + def test_index(self): create_response_json = self._create_valid_page_with_slug("indexpage") assert self._users_index_has_page_with_id(create_response_json["id"])