Commit 8f02ca5e authored by Rafael Monnerat's avatar Rafael Monnerat

Include fixes, more tests, better svg support ...

This merge of "rafael" branch includes several commits for:

  - Fixes for Functional Tests
  - Use Remote URL for Tutorial Related tests (see testFunctionalConfigurator)
  - Fixes for Consulting Configurator Workflow tests
  - Several tests for SVG Conversion and better SVG support
parents 09cb059a 86e8bba5
......@@ -58,6 +58,14 @@ context.setGlobalConfigurationAttr(\n
configuration_save.setIntIndex(1000)\n
configuration_save.addConfigurationItem("Portal Type Roles Spreadsheet Configurator Item",\n
configuration_spreadsheet_file=portal_type_roles_spreadsheet)\n
\n
# Define standard module security. also.\n
configuration_save.addConfigurationItem("Permission Configurator Item",\n
filename="standard_module_permission_access.ods")\n
\n
# Create ERP5Site_getSecurityCategoryMapping\n
configuration_save.addConfigurationItem("Security Category Mapping Configurator Item")\n
</string> </value>
</item>
<item>
......
636
\ No newline at end of file
637
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Zuite" module="Products.Zelenium.zuite"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>configurator_consulting_standard_zuite</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Zuite" module="Products.Zelenium.zuite"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>configurator_standard_zuite</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
portal_tests/configurator_consulting_standard_zuite
portal_tests/configurator_consulting_standard_zuite/**
portal_tests/configurator_standard_zuite
portal_tests/configurator_standard_zuite/**
\ No newline at end of file
......@@ -152,7 +152,7 @@
</tr>\n
<tr>\n
<td>type</td>\n
<td>listbox_start_date</td>\n
<td>listbox_movement.start_date</td>\n
<td>2009/01/01</td>\n
</tr>\n
<tr>\n
......
......@@ -73,6 +73,7 @@
<value>
<list>
<string>listbox</string>
<string>listbox_delivery_start_date</string>
</list>
</value>
</item>
......
682
\ No newline at end of file
683
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Zuite" module="Products.Zelenium.zuite"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>user_tutorial_zuite</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Tests configured instance </string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Create Campaigns</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Create Campaigns</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpCampaignTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Campaigns</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Add Campaign</td>\n
</tr>\n
<tr>\n
<td>waitForCondition</td>\n
<td>selenium.isTextPresent("Title")</td>\n
<td>60000</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_reference"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_campaign_reference\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_source_section_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_source_decision_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_person_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_source_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_person2_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_destination_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//textarea[@name="field_my_source_trade_title_list"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_person2_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_start_date_year"]</td>\n
<td>2000</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_start_date_month"]</td>\n
<td>10</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_start_date_day"]</td>\n
<td>10</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_stop_date_year"]</td>\n
<td>3000</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_stop_date_month"]</td>\n
<td>11</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_stop_date_day"]</td>\n
<td>11</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_quantity"]</td>\n
<td>0.9</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_quantity_unit"]</td>\n
<td>Time/Day</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_price"]</td>\n
<td>20.00</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_price_currency"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'campaign_howto_currency_tag\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Data updated.</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Open Ticket</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//label[normalize-space(text())=\'State\']/../div</td>\n
<td>Open</td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownCampaignTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToCampaign</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Create Events in Campaigns</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Create Events in Campaigns</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpCreateEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Campaigns</td>\n
</tr>\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'create_event_howto_campaign_title\']],), enter_object=True)"/>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Campaigns</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Create New Event</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_your_portal_type"]</td>\n
<td>Mail Message</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_your_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//textarea[@name="field_your_text_content"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_description\']"></td>\n
</tr>\n
<tr>\n
<td>click</td>\n
<td>//input[@name="field_your_direction" and @value="outgoing"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Created and associated a new Mail Message to the ticket.</td>\n
</tr>\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@name="field_my_default_follow_up_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@name="field_my_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_source_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_person_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//textarea[@name="field_my_destination_title_list"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_person2_title\']"></td>\n
</tr>\n
<tr>\n
<td>click</td>\n
<td>//input[@name="field_my_content_type" and @value="text/plain"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//textarea[@name="field_my_text_content"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_content\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>storeAttribute</td>\n
<td>//div[@id="breadcrumb"]/a[3]@href</td>\n
<td>event_url</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
<tr>\n
<td>openAndWait</td>\n
<td>${event_url}</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Preview</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_content\']"></td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//span[contains(text(),\'View\')]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="field_my_default_follow_up_title"]/../a</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Campaigns</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//span[@class="listbox-current-page-total-number"]</td>\n
<td>1 records</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//tr[@class=\'listbox-data-line-0 DataA\']/td[1]/</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'create_event_howto_event_title\']" ></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownCreateEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToCreateEvent</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Full Text Search</title>\n
</head>\n
<body tal:define="configuration python: here.Zuite_getHowToInfo();\n
search_name_string python: configuration[\'full_text_person_title\'];\n
search_organisation_string python: configuration[\'full_text_organisation_title\'];">\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Full Text Search</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpFullTextSearchTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<!-- Search with empty string -->\n
<tr>\n
<td>type</td>\n
<td>field_your_search_text</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>ERP5Site_viewQuickSearchResultList:method</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextNotPresent</td>\n
<td>Search Results</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>id=transition_message</td>\n
<td></td>\n
</tr>\n
<!-- Search persons by full name -->\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>field_your_search_text</td>\n
<td tal:content="search_name_string"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>ERP5Site_viewQuickSearchResultList:method</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Search Results</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td tal:content="search_name_string"></td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td tal:content="python: configuration[\'full_text_person_reference\']">reference</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Person</td>\n
<td></td>\n
</tr>\n
\n
<!-- Search Organisation -->\n
<tr>\n
<td>type</td>\n
<td>field_your_search_text</td>\n
<td tal:content="search_organisation_string"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>ERP5Site_viewQuickSearchResultList:method</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Search Results</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td tal:content="search_organisation_string"></td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Organisation</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_tearDownFullTextSearchTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToFullTextSearch</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Instance I18n</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Instance I18n</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<!-- test switching to French -->\n
<!--\n
XXX: This is the way user would have done but it fails for FF in some conditions\n
which we can not reproduce. Therefore we use set cookie approach.\n
<tr>\n
<td>selectAndWait</td>\n
<td>select_language</td>\n
<td>label=Français</td>\n
</tr>\n
<tr>\n
<td>pause</td>\n
<td>5000</td>\n
<td></td>\n
</tr>\n
-->\n
<tr>\n
<td>deleteCookie</td>\n
<td>LOCALIZER_LANGUAGE</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>createCookie</td>\n
<td>LOCALIZER_LANGUAGE=fr</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Mes favoris</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Personnes</td>\n
</tr>\n
\n
<tr>\n
<td>clickAndWait</td>\n
<td>Folder_show:method</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>listbox_translated_validation_state_title</td>\n
<td>Valid%</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@class=\'listbox-select-action\']</td>\n
<td></td>\n
</tr>\n
<!--\n
<tr>\n
<td>verifyTextNotPresent</td>\n
<td>Brouillon</td>\n
<td></td>\n
</tr>\n
-->\n
<tr>\n
<td>type</td>\n
<td>listbox_translated_validation_state_title</td>\n
<td>Brouillon</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@class=\'listbox-select-action\']</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextNotPresent</td>\n
<td>Valid</td>\n
<td></td>\n
</tr>\n
<!--\n
XXX: This is the way user would have done but it fails for FF in some conditions\n
which we can not reproduce. Therefore we use set cookie approach.\n
<tr>\n
<td>selectAndWait</td>\n
<td>select_language</td>\n
<td>label=English</td>\n
</tr>\n
<tr>\n
<td>pause</td>\n
<td>5000</td>\n
<td></td>\n
</tr>\n
-->\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>deleteCookie</td>\n
<td>LOCALIZER_LANGUAGE</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>createCookie</td>\n
<td>LOCALIZER_LANGUAGE=en</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToInstanceI18N</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Organisation</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Organisation</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpOrganisationTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Organisations</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Organisations</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Add Organisation</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Object created.</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>View</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'organisation_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_corporate_name"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'organisation_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="subfield_field_my_role_list_default:list"]</td>\n
<td>Client</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_function"]</td>\n
<td>Sales</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//textarea[@name="field_my_default_address_street_address"]</td>\n
<td>12 Zorro Street</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_default_address_city"]</td>\n
<td>Beverly Hills</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_default_address_zip_code"]</td>\n
<td>90210</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_default_address_region"]</td>\n
<td>Brazil</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_default_email_coordinate_text"]</td>\n
<td>info@zcompany.com</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_default_telephone_my_default_telephone_coordinate_text"]</td>\n
<td>+55(0)22 2222 2222</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextNotPresent</td>\n
<td>Input data has errors. Please look at the error messages below.</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Details</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Validate</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>Details</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Status changed.</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=View</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@title="The current state of the document."]/div[1]</td>\n
<td>Validated</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/organisation_module/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[1]</td>\n
<td>ERP5</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Organisations</td>\n
</tr>\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'organisation_howto_organisation_title\']],), enter_object=True)"/>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'organisation_howto_organisation_title\']"></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownOrganisationTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToOrganisation</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Request to post an outgoing event</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Request to post an outgoing event</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpOutgoingEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Campaigns</td>\n
</tr>\n
\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'outgoing_event_howto_campaign_title\']],), enter_object=True)"/>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'outgoing_event_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td tal:content="python: \'link=%s\' % here.Zuite_getHowToInfo()[\'outgoing_event_howto_event_title\']"></td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//label[normalize-space(text())=\'State\']/../div</td>\n
<td>Planned</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Confirm</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="field_my_default_follow_up_title"]/../a</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//tr[@class=\'listbox-data-line-0 DataA\']/td[7]/</td>\n
<td>Confirmed</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Base_clearCache</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Cleared.</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Events</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Events</td>\n
</tr>\n
<!--\n
<tr>\n
<td>verifyText</td>\n
<td>//span[@class="listbox-current-page-total-number"]</td>\n
<td>1 records</td>\n
</tr>\n
-->\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'outgoing_event_howto_event_title\']],), enter_object=True)"/>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Send</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//label[normalize-space(text())=\'State\']/../div</td>\n
<td>Sent</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities</span>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Base_clearCache</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Cleared.</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/event_module?simulation_state=ordered</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//span[@class="listbox-current-page-total-number"]</td>\n
<td>0 records</td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownOutgoingEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToOutgoingEvent</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Person - Tutorial Reference -user-Howto.Create.Persons</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr>\n
<td rowspan="1" colspan="3">How-To Person - Tutorial Reference -user-Howto.Create.Persons</td>\n
</tr>\n
</thead>\n
\n
<tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpPersonTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
\n
<!-- Screenshot on slide 3 of user-Howto.Create.Persons -->\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Persons</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 4 of user-Howto.Create.Persons -->\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Add Person</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 5 of user-Howto.Create.Persons -->\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Object created.</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>View</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 6 of user-Howto.Create.Persons -->\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_first_name"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_first_name\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_last_name"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_last_name\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_career_subordination_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_gender"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_gender\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="subfield_field_my_career_role_list_default:list"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_role\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_career_function"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_career_function\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_career_activity"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_career_activity\']"></td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_nationality"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_nationality\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_default_email_coordinate_text"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_email\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_default_telephone_my_default_telephone_coordinate_text"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'person_howto_telephone\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 7 of user-Howto.Create.Persons -->\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="information_area"]</td>\n
<td>Input data has errors. Please look at the error messages below.</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//span[@class="error"]</td>\n
<td>No such document was found.</td>\n
</tr>\n
<tr>\n
<td>select</td>\n
<td>//select[@name="subfield_field_my_career_subordination_title_relation"]</td>\n
<td>Add Organisation</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextNotPresent</td>\n
<td>Input data has errors. Please look at the error messages below.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 8 and 9 of user-Howto.Create.Persons -->\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Details</td>\n
<td></td>\n
</tr>\n
\n
<!-- Screenshot on slide 10-11 of user-Howto.Create.Persons -->\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Validate</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>Details</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 12 of user-Howto.Create.Persons -->\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Status changed.</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=View</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@title="The current state of the document."]/div[1]</td>\n
<td>Validated</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
<tr>\n
<td>open</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 13 of user-Howto.Create.Persons -->\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Persons</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 14 of user-Howto.Create.Persons -->\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[1]</td>\n
<td>ERP5</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Persons</td>\n
</tr>\n
\n
\n
<!-- Screenshot on slide 15 of user-Howto.Create.Persons -->\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'person_howto_title\']],), enter_object=True)"/>\n
<tr>\n
<td>pause</td>\n
<td>5000</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownPersonTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToPerson</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-to Person and Organisation linking</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-to Person and Organisation linking</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpPersonAndOrganisationLinkingTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Persons</td>\n
</tr>\n
\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'link_howto_person_title\']],), enter_object=True)"/>\n
<tr>\n
<td>assertValue</td>\n
<td>//input[@name="field_my_first_name"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_person_first_name\']"></td>\n
</tr>\n
<tr>\n
<td>assertValue</td>\n
<td>//input[@name="field_my_last_name"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_person_last_name\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="portal_selections/viewSearchRelatedDocumentDialog0:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>listbox_title</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>dialog_update_button</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>assertValue</td>\n
<td>//input[@name="field_my_career_subordination_title"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="portal_selections/viewSearchRelatedDocumentDialog0:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>listbox_title</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>dialog_update_button</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>click</td>\n
<td tal:content="python: \'//a[text()=\\\'%s\\\']/../../td[1]/input\' % (here.Zuite_getHowToInfo()[\'link_howto_organisation_title\'])"></td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Data updated.</td>\n
</tr>\n
<tr>\n
<td>assertValue</td>\n
<td>//input[@name="field_my_career_subordination_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="field_my_career_subordination_title"]/following-sibling::*[2]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertValue</td>\n
<td>//input[@name="field_my_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'link_howto_organisation_title\']"></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownPersonAndOrganisationLinkingTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToPersonAndOrganisationLinking</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Post Events in Campaigns</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Post Events in Campaigns</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpPostEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Events</td>\n
</tr>\n
\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'post_event_howto_event_title\']],), enter_object=True)"/>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Send</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Status changed.</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//label[normalize-space(text())=\'State\']/../div</td>\n
<td>Sent</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//input[@name="field_my_default_follow_up_title"]/../a</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Campaigns</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'post_event_howto_campaign_title\']"></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//span[@class="listbox-current-page-total-number"]</td>\n
<td>1 records</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//tr[@class=\'listbox-data-line-0 DataA\']/td[7]/</td>\n
<td>Sent</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Persons</td>\n
</tr>\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'post_event_howto_person_title\']],), enter_object=True)"/>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'post_event_howto_person_title\']"></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Events</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'post_event_howto_event_title\']"></td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownPostEventTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToPostEvent</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>How-To Product</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">How-To Product</td></tr>\n
</thead><tbody>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/init_test_environment">init</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_setUpProductTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Init Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_functional_test_user">Login As Functional Test User</span>\n
\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Products</td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Add Product</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Object created.</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>View</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'product_howto_product_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_reference"]</td>\n
<td>RL 01</td>\n
</tr>\n
<!--\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_product_line"]</td>\n
<td>Equipment/Construction</td>\n
</tr>\n
-->\n
<tr>\n
<td>select</td>\n
<td>//select[@name="field_my_base_contribution_list"]</td>\n
<td>Taxable</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Purchase</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_purchase_supply_line_source_title"]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'product_howto_organisation_title\']"></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_year"]</td>\n
<td>2010</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_month"]</td>\n
<td>10</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="subfield_field_my_purchase_supply_line_start_date_range_max_day"]</td>\n
<td>01</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_purchase_supply_line_base_price"]</td>\n
<td>0.50</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_purchase_supply_line_priced_quantity"]</td>\n
<td>1</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=Sale</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_sale_supply_line_base_price"]</td>\n
<td>1</td>\n
</tr>\n
<tr>\n
<td>type</td>\n
<td>//input[@name="field_my_sale_supply_line_priced_quantity"]</td>\n
<td>1</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@name="Base_edit:method"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_action"]</td>\n
<td>Validate</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>//button[@id="dialog_submit_button"]</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//li[@class="selected"]/a/span</td>\n
<td>Sale</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="transition_message"]</td>\n
<td>Status changed.</td>\n
</tr>\n
<tr>\n
<td>clickAndWait</td>\n
<td>link=View</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@title="The current state of the document."]/div[1]</td>\n
<td>Validated</td>\n
</tr>\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities">Wait for activities</span>\n
<tr>\n
<td>open</td>\n
<td>${base_url}/view</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>selectAndWait</td>\n
<td>//select[@name="select_module"]</td>\n
<td>Products</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[1]</td>\n
<td>ERP5</td>\n
</tr>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[2]</td>\n
<td>Products</td>\n
</tr>\n
<tal:block tal:content="structure python: here.Zuite_generateListboxBrowsing(listbox_selection=([\'title\', here.Zuite_getHowToInfo()[\'product_howto_product_title\']],), enter_object=True)"/>\n
<tr>\n
<td>verifyText</td>\n
<td>//div[@id="breadcrumb"]/a[3]</td>\n
<td tal:content="python: here.Zuite_getHowToInfo()[\'product_howto_product_title\']"></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/login_as_manager">Login As Manager</span>\n
\n
<tr>\n
<td>openAndWait</td>\n
<td>${base_url}/Zuite_tearDownProductTest</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>verifyTextPresent</td>\n
<td>Clean Ok</td>\n
<td></td>\n
</tr>\n
\n
<span metal:use-macro="container/Zuite_viewTestMacroLibrary/macros/wait_for_activities"> Wait for activities </span>\n
\n
</tbody>\n
</table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testHowToProduct</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -19,5 +19,5 @@ portal_categories/quantity_unit/unit/**
portal_categories/region/brazil
portal_categories/role/**
portal_categories/use/test_functional_incoming_service
portal_tests/user_tutorial_zuite
portal_tests/user_tutorial_zuite/**
sale_trade_condition_module/1
sale_trade_condition_module/1/**
......@@ -69,8 +69,8 @@ FIXED_PROPERTY_IDS = ('id', 'uid', 'rid', 'sid')
VALID_TEXT_FORMAT_LIST = ('text', 'txt', 'html', 'base_html',
'stripped-html')
VALID_IMAGE_FORMAT_LIST = ('jpg', 'jpeg', 'png', 'gif', 'pnm', 'ppm', 'tiff')
VALID_TRANSPARENT_IMAGE_FORMAT_LIST = ('png', 'gif', 'tiff')
VALID_IMAGE_FORMAT_LIST = ('jpg', 'jpeg', 'png', 'gif', 'pnm', 'ppm', 'tiff', 'svg')
VALID_TRANSPARENT_IMAGE_FORMAT_LIST = ('png', 'gif', 'tiff', 'svg')
DEFAULT_DISPLAY_ID_LIST = ('nano', 'micro', 'thumbnail',
'xsmall', 'small', 'medium',
......
......@@ -31,6 +31,7 @@ from AccessControl import ClassSecurityInfo
from Products.ERP5Type.Base import WorkflowMethod
from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5.Document.Document import Document, VALID_TEXT_FORMAT_LIST
from Products.ERP5.Document.Document import VALID_IMAGE_FORMAT_LIST
from Products.ERP5.Document.Document import ConversionError
from Products.ERP5Type.Base import Base, removeIContentishInterface
from Products.CMFDefault.File import File as CMFFile
......@@ -241,16 +242,27 @@ class File(Document, CMFFile):
return (mime_type, content)
def _convert(self, format, **kw):
"""File is not convertable.
Only original format and text formats are allowed.
"""File is only convertable if it is an image.
Only Image conversion, original format and text formats are allowed.
However this document can migrate to another portal_type which support
conversions.
others conversions.
"""
content_type = self.getContentType() or ''
if format is None:
if (format in VALID_IMAGE_FORMAT_LIST + (None, "")) and \
content_type.startswith("image/"):
# The file should behave like it is an Image for convert
# the content to target format.
from Products.ERP5Type.Document import newTempImage
return newTempImage(self, self.getId(),
data=self.getData(),
content_type=content_type,
filename=self.getFilename())._convert(format, **kw)
elif format in (None, ""):
# No conversion is asked,
# we can return safely the file content itself
return content_type, self.getData()
elif format in VALID_TEXT_FORMAT_LIST:
# This is acceptable to return empty string
# for a File we can not convert
......
......@@ -51,6 +51,8 @@ from OFS.Image import Image as OFSImage
from OFS.Image import getImageInfo
from zLOG import LOG, WARNING
from Products.ERP5Type.ImageUtil import transformUrlToDataURI
# import mixin
from Products.ERP5.mixin.text_convertable import TextConvertableMixin
......@@ -330,6 +332,10 @@ class Image(TextConvertableMixin, File, OFSImage):
else:
parameter_list.append('-')
data = str(self.getData())
if self.getContentType() == "image/svg+xml":
data = transformUrlToDataURI(data)
process = subprocess.Popen(parameter_list,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
......@@ -338,7 +344,7 @@ class Image(TextConvertableMixin, File, OFSImage):
try:
# XXX: The only portable way is to pass what stdin.write can accept,
# which is a string for PIPE.
image, err = process.communicate(str(self.getData()))
image, err = process.communicate(data)
finally:
del process
if image:
......
......@@ -48,6 +48,8 @@ from Products.ERP5Type.Utils import guessEncodingFromText
from lxml import html as etree_html
from lxml import etree
from Products.ERP5Type.ImageUtil import transformUrlToDataURI
class TextDocument(CachedConvertableMixin, BaseConvertableFileMixin,
TextContent, File):
"""A TextDocument impletents IDocument, IFile, IBaseConvertable, ICachedconvertable
......@@ -156,6 +158,7 @@ class TextDocument(CachedConvertableMixin, BaseConvertableFileMixin,
filename = self.getFilename()
if mime_type == 'text/html':
mime_type = 'text/x-html-safe'
if src_mimetype != "image/svg+xml":
result = portal_transforms.convertToData(mime_type, text_content,
object=self, context=self,
filename=filename,
......@@ -166,9 +169,10 @@ class TextDocument(CachedConvertableMixin, BaseConvertableFileMixin,
'portal_transforms failed to convert '
'from %r to %s: %r' %
(src_mimetype, mime_type, self))
else:
result = text_content
if format in VALID_IMAGE_FORMAT_LIST:
# do resize by temporary image
# Include extra parameter for image conversions
temp_image = self.portal_contributions.newContent(
portal_type='Image',
file=cStringIO.StringIO(),
......@@ -176,6 +180,7 @@ class TextDocument(CachedConvertableMixin, BaseConvertableFileMixin,
temp_object=1)
temp_image._setData(result)
mime, result = temp_image.convert(**kw)
self.setConversion(result, original_mime_type, **kw)
else:
mime_type, result = self.getConversion(**kw)
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Transform" module="Products.PortalTransforms.Transform"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_config</string> </key>
<value>
<object>
<klass>
<global id="1.1" name="UserDict" module="UserDict"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>__allow_access_to_unprotected_subobjects__</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_config_metadata</string> </key>
<value>
<object>
<klass> <reference id="1.1"/> </klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>image_to_svg</string> </value>
</item>
<item>
<key> <string>inputs</string> </key>
<value>
<tuple>
<string>image/*</string>
</tuple>
</value>
</item>
<item>
<key> <string>module</string> </key>
<value> <string>Products.PortalTransforms.transforms.image_to_svg</string> </value>
</item>
<item>
<key> <string>output</string> </key>
<value> <string>image/svg</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -79,8 +79,8 @@
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_delivery_start_date</string>
<string>listbox_delivery_stop_date</string>
<string>listbox_movement_start_date</string>
<string>listbox_movement_stop_date</string>
</list>
</value>
</item>
......
......@@ -11,6 +11,7 @@
<value>
<list>
<string>anchor</string>
<string>columns</string>
<string>lines</string>
<string>list_action</string>
<string>list_method</string>
......@@ -114,6 +115,33 @@
<key> <string>anchor</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>columns</string> </key>
<value>
<list>
<tuple>
<string>id</string>
<string>ID</string>
</tuple>
<tuple>
<string>title</string>
<string>Title</string>
</tuple>
<tuple>
<string>translated_portal_type</string>
<string>Type</string>
</tuple>
<tuple>
<string>movement.start_date</string>
<string>Start Date</string>
</tuple>
<tuple>
<string>constant_string_field</string>
<string>Constant</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>listbox</string> </value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>title</string>
<string>editable</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_movement_start_date</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_date</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Date</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -17,7 +17,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_delivery_stop_date</string> </value>
<value> <string>listbox_movement_stop_date</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......
41034
\ No newline at end of file
41035
This diff is collapsed.
product/ERP5/tests/test_data/user-TESTSVG-BACKGROUND-IMAGE.png

77.5 KB

product/ERP5/tests/test_data/user-TESTSVG-CASE-EMBEDDEDDATA.png

40.4 KB

product/ERP5/tests/test_data/user-TESTSVG-CASE-FULLURL.png

47.9 KB

This diff is collapsed.
......@@ -30,24 +30,19 @@ import unittest
from Products.ERP5Type.tests.ERP5TypeFunctionalTestCase import \
ERP5TypeFunctionalTestCase
from Products.ERP5Type.tests.testFunctionalStandaloneUserTutorial import \
BASE_REMOTE_SELENIUM_TEST_URL_LIST
class TestZeleniumConfiguratorStandard(ERP5TypeFunctionalTestCase):
foreground = 0
run_only = "configurator_standard_zuite"
def setupVirtualTestZuite(self):
"""
After execute the configuration, it is also required to
run all user tutorial tests in order to validate the
configuration. This copy user tutorial zuite to same
place as Configurator test.
"""
portal_tests = self.portal.portal_tests
configurator_zuite = getattr(portal_tests, self.run_only)
if getattr(configurator_zuite, "user_tutorial_zuite", None) is not None:
clipboard = portal_tests.manage_copyObjects(ids=['user_tutorial_zuite'])
configurator_zuite.manage_pasteObjects(cb_copy_data=clipboard)
self.stepTic()
remote_code_url_list = [
"http://www.erp5.com/user-Howto.Configure.ERP5.for.SMB.With.Configurator/TestPage_viewSeleniumTest"
] + BASE_REMOTE_SELENIUM_TEST_URL_LIST
def afterSetUp(self):
# information to know if a business template is a standard business
# template or a custom one
public_bt5_repository_list = ['http://www.erp5.org/dists/snapshot/bt5/']
template_list = self._getBTPathAndIdList(["erp5_base"])
if len(template_list) > 0:
......@@ -62,9 +57,7 @@ class TestZeleniumConfiguratorStandard(ERP5TypeFunctionalTestCase):
else:
self.portal.portal_templates.updateRepositoryBusinessTemplateList(
public_bt5_repository_list)
def afterSetUp(self):
self.setupVirtualTestZuite()
print self.portal.portal_templates.getRepositoryList()
ERP5TypeFunctionalTestCase.afterSetUp(self)
def getBusinessTemplateList(self):
......@@ -76,7 +69,8 @@ class TestZeleniumConfiguratorStandard(ERP5TypeFunctionalTestCase):
'erp5_configurator', 'erp5_configurator_standard',
# Test suite
'erp5_ui_test_core', 'erp5_configurator_standard_ui_test',
'erp5_user_tutorial_ui_test')
'erp5_user_tutorial_ui_test'
)
def test_suite():
suite = unittest.TestSuite()
......
......@@ -30,11 +30,16 @@ import unittest
from Products.ERP5Configurator.tests.testFunctionalConfigurator import \
TestZeleniumConfiguratorStandard
from Products.ERP5Type.tests.testFunctionalStandaloneUserTutorial import \
BASE_REMOTE_SELENIUM_TEST_URL_LIST
class TestZeleniumConfiguratorConsulting(TestZeleniumConfiguratorStandard):
run_only = "configurator_consulting_standard_zuite"
remote_code_url_list = [
"http://www.erp5.com/user-Howto.Configure.ERP5.for.SMB.With.Consultant.Configurator/TestPage_viewSeleniumTest"
] + BASE_REMOTE_SELENIUM_TEST_URL_LIST
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestZeleniumConfiguratorConsulting))
return suite
This diff is collapsed.
......@@ -71,6 +71,8 @@ from Products.ERP5Type.patches import OFSHistory
from Products.ERP5Type.patches import OFSItem
from Products.ERP5Type.patches import ExternalMethod
from Products.ERP5Type.patches import User
from Products.ERP5Type.patches import zopecontenttype
from Products.ERP5Type.patches import OFSImage
# These symbols are required for backward compatibility
from Products.ERP5Type.patches.PropertyManager import ERP5PropertyManager
......
This diff is collapsed.
# Monkey Patch the zope.contenttype to be able to detect svg image format.
try:
import zope.contenttype
original_text_type = zope.contenttype.text_type
def svg_fix_text_type(s):
s = s.strip()
if '<html>' not in s and "<svg" in s:
return 'image/svg+xml'
# If it is not an svg, just try original behaviour.
# This preserve the further improvements on zope.contenttype
# and preserve the fix.
return original_text_type(s)
# Overwrite original method with the SVG detection fix.
zope.contenttype.text_type = svg_fix_text_type
except ImportError:
print "Skip to patch zope.contenttype, because it is not present."
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment