From a651b394dcdaf2ca84505f875c87bafb09ed2f47 Mon Sep 17 00:00:00 2001 From: Tristan Cavelier <tristan.cavelier@tiolive.com> Date: Tue, 21 Jul 2015 12:41:54 +0000 Subject: [PATCH] XXX erp5_run_my_doc: Remove extension and test template --- .../ExtensionTemplateItem/ERP5RunMyDocs.py | 164 --------- .../TestTemplateItem/testRunMyDoc.py | 316 ------------------ .../bt/template_extension_id_list | 1 - bt5/erp5_run_my_doc/bt/template_test_id_list | 1 - 4 files changed, 482 deletions(-) delete mode 100644 bt5/erp5_run_my_doc/ExtensionTemplateItem/ERP5RunMyDocs.py delete mode 100644 bt5/erp5_run_my_doc/TestTemplateItem/testRunMyDoc.py delete mode 100644 bt5/erp5_run_my_doc/bt/template_extension_id_list delete mode 100644 bt5/erp5_run_my_doc/bt/template_test_id_list diff --git a/bt5/erp5_run_my_doc/ExtensionTemplateItem/ERP5RunMyDocs.py b/bt5/erp5_run_my_doc/ExtensionTemplateItem/ERP5RunMyDocs.py deleted file mode 100644 index b0a65611cd..0000000000 --- a/bt5/erp5_run_my_doc/ExtensionTemplateItem/ERP5RunMyDocs.py +++ /dev/null @@ -1,164 +0,0 @@ -""" - Parse the test report -""" -def parseTestReport(text): - from lxml import etree - parser = etree.HTMLParser(remove_comments=True) - parser.feed(text) - root = parser.close() - table = root.xpath('//table[@id="SELENIUM-TEST"]')[0] - report = {} - header = table[0][0] - report['status'] = header.attrib['class'].find('passed') > -1 - report['name'] = header[0].text - report["row_list"] = [] - report["column_list"] = [0,0,0] - i=0 - for row in table[1]: - report["row_list"].append(dict(cell_list=[], passed=False, failed=False, done=False, not_done=False)) - row_report = report["row_list"][i] - if row.attrib['class'].find('failed') > -1: - row_report['failed'] = True - elif row.attrib['class'].find('done') > -1: - row_report['done'] = True - elif row.attrib['class'].find('passed') > -1: - row_report['passed'] = True - else: - row_report['not_done'] = True - for column in row: - row_report["cell_list"].append(column.text) - i += 1 - return report - """ - title = table.xpath('//td')[0].text - html[0][1].text = title - - # Insert completly the first table - html[1].append(table) - - # Insert only the content of tbody - for table in table_list[1:]: - for row in table[-1]: - html[1][-1].append(row) - - stack = [html[1]] - # Let's display everything in the test by removing the style attributes (they're not supposed to have any style attributes at all during the tests) - while stack: - element = stack.pop() - if element.attrib.has_key('style'): - del element.attrib['style'] - for child in element: - stack.append(child) - - return dict(title = title, text = lxml.html.tostring(html)) - """ - -""" - Parse a HTML page and return a list of dictionnaries with the chapters and the tests they contain -""" -def parseTutorial(text): - from Products.ERP5Type.Document import newTempBase - from lxml import etree - parser = etree.HTMLParser(remove_comments=True) - parser.feed(text) - root = parser.close() - table_list = root.xpath('//table[@id="SELENIUM-TEST"]') - table = table_list[0] - - listbox = [] - - i = 0 - # Insert only the content of tbody - for table in table_list: - listbox.append(newTempBase(context.getPortalObject(), - '', - title = "Tested Chapter " + str(i), - tag = 'h1')) - if len(table) > 0: - for row in table[-1]: - if(row.tag.lower() == 'tr'): - listbox.append(newTempBase(context.getPortalObject(), - '', - title = row[0][0].text, - tag = 'tr', - arg0 = row[0][1].text, - arg1 = row[0][2].text)) - else: - listbox.append(newTempBase(context.getPortalObject(), - '', - title = row[0][0].text, - tag = 'tr', - arg0 = row[0][1].text, - arg1 = row[0][2].text)) - - - stack = [html[1]] - # Let's display everything in the test by removing the style attributes (they're not supposed to have any style attributes at all during the tests) - while stack: - element = stack.pop() - if element.attrib.has_key('style'): - del element.attrib['style'] - for child in element: - stack.append(child) - - return dict(title = title, text = lxml.html.tostring(html)) - -""" - Return the content of a web page -""" -def urlread(url): - import urllib - return urllib.urlopen(url).read() - -""" - Remove everything but the test in a webpage -""" -def extractTest(text): - import lxml.html - from lxml import etree - root = lxml.html.fromstring(text) - table_list = root.xpath('//test') - testcode = "" - for table in table_list: - table = table[0] - if len(table) > 0: - for row in table[-1]: - if len(row) == 1: - # Include Macros as it is defined by the user. - testcode += row[0].text - else: - testcode += lxml.html.tostring(row) - return testcode - -""" - HTML5 Presentation validador -""" -def validateHTML5Document(text): - import lxml.html - from lxml import etree - root = lxml.html.fromstring(text) - section_list = root.xpath('//section') - count = 0 - error_list = [] - # XXX Lack of translation support here. - for section in section_list: - count += 1 - if section.xpath("h1") == []: - error_list.append("Section %s had no h1." % count) - - if section.get("class") in ["screenshot", "illustration"]: - if section.xpath("img") == []: - error_list.append("Section %s has class %s but it doesn't have any image." % (count, section.get("class"))) - else: - if section.xpath("img")[0].get("title") == None: - error_list.append("At section %s, img has no title attribute." % count) - - if section.xpath("img")[0].get("alt") == None: - error_list.append("At section %s, img has no alt attribute." % count) - - if section.xpath("details") == []: - error_list.append("Section %s has no details tag." % (count)) - - return error_list - - diff --git a/bt5/erp5_run_my_doc/TestTemplateItem/testRunMyDoc.py b/bt5/erp5_run_my_doc/TestTemplateItem/testRunMyDoc.py deleted file mode 100644 index 60f17577d8..0000000000 --- a/bt5/erp5_run_my_doc/TestTemplateItem/testRunMyDoc.py +++ /dev/null @@ -1,316 +0,0 @@ -############################################################################## -# -# Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved. -# Rafael Monnerat <rafael@nexedi.com> -# -# WARNING: This program as such is intended to be used by professional -# programmers who take the whole responsibility of assessing all potential -# consequences resulting from its eventual inadequacies and bugs -# End users who are looking for a ready-to-use solution with commercial -# guarantees and support are strongly adviced to contract a Free Software -# Service Company -# -# This program is Free Software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -############################################################################## - -from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase -from Products.ERP5OOo.tests.testDms import makeFileUpload -from time import time - -class TestRunMyDoc(ERP5TypeTestCase): - """ - Basic Test for internal implementation of RunMyDocs - """ - - def getTitle(self): - return "Run My Doc" - - def getBusinessTemplateList(self): - """ - Tuple of Business Templates we need to install - """ - return ('erp5_base', - 'erp5_jquery', - 'erp5_jquery_ui', - 'erp5_knowledge_pad', - 'erp5_ingestion_mysql_innodb_catalog', - 'erp5_ingestion', - 'erp5_web', - 'erp5_dms', - 'erp5_slideshow_style', - 'erp5_ui_test_core', - 'erp5_run_my_doc') - - def afterSetUp(self): - """ - This is ran before anything, used to set the environment - """ - # here, you can create the categories and objects your test will depend on - - website_id = "test_page_web_site" - - def test_getDocumentListWithTestPage(self): - """ - Assert if Test Page works with getDocumentList - """ - test_page_reference = "developer-my.test.page" - website = getattr(self.portal.web_site_module, self.website_id, None) - if website is None: - website = self.portal.web_site_module.newContent( - portal_type='Web Site', - id=self.website_id) - website.publish() - self.tic() - - test_page = self.portal.test_page_module.newContent( - portal_type="Test Page", - reference=test_page_reference, - language="en", - version="001") - - test_page.publish() - self.tic() - - document = website.WebSection_getDocumentValue(test_page_reference) - - self.assertNotEquals(None, document) - self.assertEqual(document.getRelativeUrl(), - test_page.getRelativeUrl()) - - def test_Zuite_uploadScreenShot(self): - """ - Test Screeshot upload script used by Zelenium to - update screenshots of the documents. - """ - image_upload = makeFileUpload('TEST-en-002.png') - self.assertNotEquals(None, image_upload) - - # Create a web page, and check if the content is not overwriten - web_page_reference = "WEB-PAGE-REFERENCE" - web_page = self.portal.web_page_module.newContent( - reference=web_page_reference, - language="en", version="001") - web_page.publishAlive() - self.tic() - - image_reference = "IMAGE-REFERENCE-%s" % str(time()) - image_page = self.portal.image_module.newContent( - reference=image_reference, - language="en", version="001") - image_page.publishAlive() - self.tic() - image_page_2 = self.portal.image_module.newContent( - reference=image_reference, - language="en", version="002") - image_page_2.publishAlive() - self.tic() - - self.portal.REQUEST.form['data_uri'] = image_upload - fake_image_reference = "DO-NOT-EXISTANT-IMAGE" - self.assertNotEquals(None, - self.portal.Zuite_uploadScreenshot(image_upload, fake_image_reference)) - - self.assertNotEquals(None, - self.portal.Zuite_uploadScreenshot(image_upload, web_page_reference)) - - self.assertEqual(None, - self.portal.Zuite_uploadScreenshot(image_upload, image_reference)) - - self.tic() - # The right image were updated. - image_upload.seek(0) - self.assertEqual(image_page_2.getData(), image_upload.read().decode("base64")) - self.assertEqual(image_page_2.getFilename(), image_reference + '.png') - self.assertEqual(image_page.getData(), '') - - def test_viewSeleniumTest(self): - """ - Test the script that extracts Selenium Test from HTML body. - """ - test_page_html = """<section><h1>TITLE</h1><details>DETAILS<details> - <test><table class="test" style="display: none;"> <tbody> </tbody></table> </test> - </section> - <section><h1>TITLE</h1><details>DETAILS<details><test> - <table class="test" style="display: none;"> - <tbody> - <tr> - <td colspan="3"><span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment" style="display: none;">init</span></td> - </tr> - <tr> - <td>selectAndWait</td> - <td>name=select_module</td> - <td>label=Test Pages</td> - </tr> - <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br /> </td> - </tr> - <tr style="opacity: 1;"> - <td>clickAndWait</td> - <td>css=a.fast_input > span.image</td> - <td> <br /> </td> - </tr> </tbody></table> </test> - </section> - <section><h1>TITLE</h1><details>DETAILS<details><test> - <table class="test" style="display: none;"> <tbody> - <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br /> </td> - </tr> </tbody></table> </test> - </section>""" - - expected_test_html = u"""<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <title>TEST</title> - </head> - <body> - <table name="SELENIUM-TEST" cellpadding="1" cellspacing="1" border="1"> - <thead> - <tr class="title"> - <td colspan="3">TEST</td> - </tr> - </thead> - <tbody> - <span metal:use-macro="container/Zuite_CommonTemplate/macros/init" style="display: none;">init</span> <tr> - <td>store</td> - <!-- ERP5TypeTestCase is the default for any UnitTest --> - <td>%s</td> - <td>base_user</td> - </tr> - <tr> - <td>store</td> - <td>%s</td> - <td>base_password</td> - </tr> - <span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment" style="display: none;">init</span><tr> - <td>selectAndWait</td> - <td>name=select_module</td> - <td>label=Test Pages</td> - </tr> - <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br> </td> - </tr> - <tr style="opacity: 1;"> - <td>clickAndWait</td> - <td>css=a.fast_input > span.image</td> - <td> <br> </td> - </tr> <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br> </td> - </tr> - </tbody> - </table> - </body> -</html>""" - - test_page = self.portal.test_page_module.newContent(title="TEST", - reference='TESTPAGEREFERENCE', - text_content=test_page_html) - self.assertEqual(test_page.TestPage_viewSeleniumTest(), expected_test_html % - ("ERP5TypeTestCase", "")) - - self.tic() - test_page.TestPage_runSeleniumTest() - - zuite = getattr(self.portal.portal_tests, 'TESTPAGEREFERENCE', None) - self.assertNotEquals(zuite, None) - - zptest = getattr(zuite, "TEST", None) - self.assertNotEquals(zptest, None) - - expected_html = expected_test_html % ("ERP5TypeTestCase", "") - - self.assertEqual(zptest._text, expected_html.strip()) - - expected_test_html = u"""<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <title>TEST</title> - </head> - <body> - <table name="SELENIUM-TEST" cellpadding="1" cellspacing="1" border="1"> - <thead> - <tr class="title"> - <td colspan="3">TEST</td> - </tr> - </thead> - <tbody> - <tr> - <td>store</td> - <td>%s</td> - <td>base_url</td> - </tr> - <tr> - <td>store</td> - <!-- ERP5TypeTestCase is the default for any UnitTest --> - <td>%s</td> - <td>base_user</td> - </tr> - <tr> - <td>store</td> - <td>%s</td> - <td>base_password</td> - </tr> - <span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment" style="display: none;">init</span><tr> - <td>selectAndWait</td> - <td>name=select_module</td> - <td>label=Test Pages</td> - </tr> - <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br> </td> - </tr> - <tr style="opacity: 1;"> - <td>clickAndWait</td> - <td>css=a.fast_input > span.image</td> - <td> <br> </td> - </tr> <tr> - <td>verifyTextPresent</td> - <td>Test Pages</td> - <td> <br> </td> - </tr> - </tbody> - </table> - </body> -</html>""" - - - # Mimic usage of TestPage_viewSeleniumTest?url=... - self.portal.REQUEST['url'] = "http://toto.com" - self.portal.REQUEST['user'] = "toto" - self.portal.REQUEST['password'] = "toto" - - self.assertEqual(test_page.TestPage_viewSeleniumTest(REQUEST=self.portal.REQUEST), - expected_test_html % ("http://toto.com", "toto", "toto")) - self.tic() - test_page.TestPage_runSeleniumTest() - - zuite = getattr(self.portal.portal_tests, 'TESTPAGEREFERENCE', None) - self.assertNotEquals(zuite, None) - - zptest = getattr(zuite, "TEST", None) - self.assertNotEquals(zptest, None) - - expected_html = expected_test_html % ("http://toto.com", "toto", "toto") - - self.assertEqual(zptest._text, expected_html.strip()) diff --git a/bt5/erp5_run_my_doc/bt/template_extension_id_list b/bt5/erp5_run_my_doc/bt/template_extension_id_list deleted file mode 100644 index 4900ce5755..0000000000 --- a/bt5/erp5_run_my_doc/bt/template_extension_id_list +++ /dev/null @@ -1 +0,0 @@ -ERP5RunMyDocs \ No newline at end of file diff --git a/bt5/erp5_run_my_doc/bt/template_test_id_list b/bt5/erp5_run_my_doc/bt/template_test_id_list deleted file mode 100644 index f88a60b417..0000000000 --- a/bt5/erp5_run_my_doc/bt/template_test_id_list +++ /dev/null @@ -1 +0,0 @@ -testRunMyDoc \ No newline at end of file -- 2.30.9