[Erp5-report] r35419 nicolas - /erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue May 18 11:06:57 CEST 2010
Author: nicolas
Date: Tue May 18 11:06:50 2010
New Revision: 35419
URL: http://svn.erp5.org?rev=35419&view=rev
Log:
* Make this test a regular ERP5 test (inherit from ERP5TypeTestCase)
* read zip files with OOoBuilder
* install erp5_base
Modified:
erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py
Modified: erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py?rev=35419&r1=35418&r2=35419&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/tests/testOOoDynamicStyle.py [utf8] Tue May 18 11:06:50 2010
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2009 Nexedi KK and Contributors. All Rights Reserved.
@@ -29,20 +30,15 @@
import os
import sys
import unittest
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from AccessControl.SecurityManagement import newSecurityManager
from Products.ERP5Type.tests.utils import DummyLocalizer
from zLOG import LOG
from Products.ERP5OOo.tests.utils import Validator
-from Testing import ZopeTestCase
-from zipfile import ZipFile, ZIP_DEFLATED
-from StringIO import StringIO
-
-ZopeTestCase.installProduct('Localizer')
-ZopeTestCase.installProduct('PythonScripts')
-ZopeTestCase.installProduct('ERP5OOo')
-ZopeTestCase.installProduct('Five')
-
-class TestOooDynamicStyle(ZopeTestCase.FunctionalTestCase):
+from Products.ERP5OOo.OOoUtils import OOoBuilder
+
+
+class TestOooDynamicStyle(ERP5TypeTestCase):
manager_username = 'tatuya'
manager_password = 'tatuya'
content_type_writer = 'application/vnd.oasis.opendocument.text'
@@ -51,15 +47,12 @@
def getTitle(self):
return "TestOOoDynamicStyle"
- def login(self):
- uf = self.folder.acl_users
- uf._doAddUser(self.manager_username, self.manager_password, ['Manager'], [])
- user = uf.getUserById(self.manager_username).__of__(uf)
- newSecurityManager(None, user)
+ def getBusinessTemplateList(self):
+ return ('erp5_base',)
def afterSetUp(self):
self.login()
- self.folder.Localizer = DummyLocalizer()
+ self.getPortal().Localizer = DummyLocalizer()
v12schema_url = os.path.join(os.path.dirname(__file__),
'OpenDocument-schema-v1.2-draft9.rng')
self.validator = Validator(schema_url=v12schema_url)
@@ -72,66 +65,60 @@
'DYNAMIC_STYLE_ja.odt')
ja_file = open(ja_file_path, 'rb')
- addStyleSheet = self.folder.manage_addProduct['OFSP'].manage_addFile
- addStyleSheet(id='Test_getODTStyleSheet_en', file=en_file, title='',
- precondition='', content_type=self.content_type_writer)
- addStyleSheet(id='Test_getODTStyleSheet_ja', file=ja_file, title='',
- precondition='', content_type=self.content_type_writer)
- script_body = """
+ addStyleSheet = self.getPortal().manage_addProduct['OFSP'].manage_addFile
+ if getattr(self.getPortal(), 'Test_getODTStyleSheet_en', None) is None:
+ addStyleSheet(id='Test_getODTStyleSheet_en', file=en_file, title='',
+ precondition='', content_type=self.content_type_writer)
+ if getattr(self.getPortal(), 'Test_getODTStyleSheet_ja', None) is None:
+ addStyleSheet(id='Test_getODTStyleSheet_ja', file=ja_file, title='',
+ precondition='', content_type=self.content_type_writer)
+ if getattr(self.getPortal(), 'Base_getODTStyleSheetByLanguage', None) is None:
+ script_body = """
current_language = context.Localizer.get_selected_language()
return getattr(context, "%s_%s" % (parameter, current_language))
"""
- dispatcher = self.folder.manage_addProduct['PythonScripts']
- dispatcher.manage_addPythonScript('Base_getODTStyleSheetByLanguage')
- script = self.folder.Base_getODTStyleSheetByLanguage
- script.ZPythonScript_edit('parameter', script_body)
+ dispatcher = self.getPortal().manage_addProduct['PythonScripts']
+ dispatcher.manage_addPythonScript('Base_getODTStyleSheetByLanguage')
+ script = self.getPortal().Base_getODTStyleSheetByLanguage
+ script.ZPythonScript_edit('parameter', script_body)
def _validate(self, odf_file_data):
error_list = self.validator.validate(odf_file_data)
if error_list:
self.fail(''.join(error_list))
- def _create_odt_zip_file(self, zip_string):
- zipped_io = StringIO()
- zipped_io.write(zip_string)
- try:
- odt_zip_file = ZipFile(zipped_io, mode='r', compression=ZIP_DEFLATED)
- except RuntimeError:
- odt_zip_file = ZipFile(zipped_io, mode='r')
- return odt_zip_file
-
def test_01_dynamic(self):
"""
Test applying stylesheet dynamically, using a Python Script with
a stylesheet file name parameter.
"""
request = self.app.REQUEST
- addOOoTemplate = self.folder.manage_addProduct['ERP5OOo'].addOOoTemplate
+ addOOoTemplate = self.getPortal().manage_addProduct['ERP5OOo'].addOOoTemplate
addOOoTemplate(id='Dynamic_viewAsOdt', title='')
- Dynamic_viewAsOdt = self.folder.Dynamic_viewAsOdt
+ Dynamic_viewAsOdt = self.getPortal().Dynamic_viewAsOdt
# The stylesheet file 'Test_getODTStyleSheet' is not exist in this site.
# So, the 'Base_getODTStyleSheet', a python script creates dynamically
# exsited stylesheet file name.
- self.assertFalse(self.folder.hasObject('Test_getODTStyleSheet'))
- self.assertTrue(self.folder.hasObject('Test_getODTStyleSheet_ja'))
- self.assertTrue(self.folder.hasObject('Test_getODTStyleSheet_en'))
+ self.assertFalse(self.getPortal().hasObject('Test_getODTStyleSheet'))
+ self.assertTrue(self.getPortal().hasObject('Test_getODTStyleSheet_ja'))
+ self.assertTrue(self.getPortal().hasObject('Test_getODTStyleSheet_en'))
Dynamic_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml',
ooo_stylesheet='Test_getODTStyleSheet',
script_name='Base_getODTStyleSheetByLanguage')
Dynamic_viewAsOdt.pt_edit(self.content, content_type='application/vnd.oasis.opendocument.text')
# 1. test a normal case, language: ja
- self.folder.Localizer.changeLanguage('ja')
- response = self.publish('/' + self.folder.Dynamic_viewAsOdt.absolute_url(1))
+ self.getPortal().Localizer.changeLanguage('ja')
+ response = self.publish('/' + self.getPortal().Dynamic_viewAsOdt.absolute_url(1))
self.assertEqual('application/vnd.oasis.opendocument.text',
response.getHeader('content-type').split(';')[0])
- self.assertEqual('inline;filename="Dynamic_viewAsOdt.odt"',
+ self.assertEqual('attachment; filename="Dynamic_viewAsOdt.odt"',
response.getHeader('content-disposition'))
self._validate(response.getBody())
self.assertTrue(200, response.getStatus())
- odt_zip_file = self._create_odt_zip_file(response.getBody())
- styles_xml_body = odt_zip_file.read('styles.xml')
+ ooo_builder = OOoBuilder(response.getBody())
+ styles_xml_body = ooo_builder.extract('styles.xml')
self.assertTrue(len(styles_xml_body) > 0)
# 'Style sheet ja' text is in the odt document header,
# and the header is in the 'styles.xml'.
@@ -139,22 +126,22 @@
# 2. test a normal case, change the language to 'en',
# so that the stylesheet changes dynamically.
- self.folder.Localizer.changeLanguage('en')
- response = self.publish('/' + self.folder.Dynamic_viewAsOdt.absolute_url(1))
- self._validate(response.getBody())
- odt_zip_file = self._create_odt_zip_file(response.getBody())
- styles_xml_body = odt_zip_file.read('styles.xml')
+ self.getPortal().Localizer.changeLanguage('en')
+ response = self.publish('/' + self.getPortal().Dynamic_viewAsOdt.absolute_url(1))
+ self._validate(response.getBody())
+ ooo_builder = OOoBuilder(response.getBody())
+ styles_xml_body = ooo_builder.extract('styles.xml')
self.assertTrue(styles_xml_body.find('Style sheet en') > 0)
# 3. test a fail case, reset a not existed stylesheet
Dynamic_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml',
ooo_stylesheet='NotFound_getODTStyleSheet',
script_name='Base_getODTStyleSheet')
- self.assertFalse(self.folder.hasObject('NotFound_getODTStyleSheet'))
- self.assertFalse(self.folder.hasObject('NotFound_getODTStyleSheet_ja'))
- self.assertFalse(self.folder.hasObject('NotFound_getODTStyleSheet_en'))
- self.folder.Localizer.changeLanguage('en')
- response = self.publish('/' + self.folder.Dynamic_viewAsOdt.absolute_url(1))
+ self.assertFalse(self.getPortal().hasObject('NotFound_getODTStyleSheet'))
+ self.assertFalse(self.getPortal().hasObject('NotFound_getODTStyleSheet_ja'))
+ self.assertFalse(self.getPortal().hasObject('NotFound_getODTStyleSheet_en'))
+ self.getPortal().Localizer.changeLanguage('en')
+ response = self.publish('/' + self.getPortal().Dynamic_viewAsOdt.absolute_url(1))
# then, it is not a zip stream
self.assertFalse(response.getBody().startswith('PK'))
self.assertTrue(500, response.getStatus())
@@ -165,45 +152,45 @@
Test applying stylesheet statically, using a stylesheet File object.
"""
request = self.app.REQUEST
- addOOoTemplate = self.folder.manage_addProduct['ERP5OOo'].addOOoTemplate
+ addOOoTemplate = self.getPortal().manage_addProduct['ERP5OOo'].addOOoTemplate
addOOoTemplate(id='Static_viewAsOdt', title='')
- Static_viewAsOdt = self.folder.Static_viewAsOdt
+ Static_viewAsOdt = self.getPortal().Static_viewAsOdt
# Test_getODTStyleSheet_ja is statically exist.
- self.assertTrue(self.folder.hasObject('Test_getODTStyleSheet_ja'))
+ self.assertTrue(self.getPortal().hasObject('Test_getODTStyleSheet_ja'))
Static_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml',
ooo_stylesheet='Test_getODTStyleSheet_ja', script_name='')
Static_viewAsOdt.pt_edit(self.content, content_type='application/vnd.oasis.opendocument.text')
# 1. test a normal case
- response = self.publish('/' + self.folder.Static_viewAsOdt.absolute_url(1))
+ response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1))
self.assertTrue(200, response.getStatus())
self.assertEqual('application/vnd.oasis.opendocument.text',
response.getHeader('content-type').split(';')[0])
- self.assertEqual('inline;filename="Static_viewAsOdt.odt"',
+ self.assertEqual('attachment; filename="Static_viewAsOdt.odt"',
response.getHeader('content-disposition'))
self._validate(response.getBody())
- odt_zip_file = self._create_odt_zip_file(response.getBody())
- styles_xml_body = odt_zip_file.read('styles.xml')
+ ooo_builder = OOoBuilder(response.getBody())
+ styles_xml_body = ooo_builder.extract('styles.xml')
self.assertTrue(len(styles_xml_body) > 0)
self.assertTrue(styles_xml_body.find('Style sheet ja') > 0)
# 2. test a normal case, change the style sheet
- self.assertTrue(self.folder.hasObject('Test_getODTStyleSheet_en'))
+ self.assertTrue(self.getPortal().hasObject('Test_getODTStyleSheet_en'))
Static_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml',
ooo_stylesheet='Test_getODTStyleSheet_en', script_name='')
- response = self.publish('/' + self.folder.Static_viewAsOdt.absolute_url(1))
+ response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1))
self.assertTrue(200, response.getStatus())
self._validate(response.getBody())
- odt_zip_file = self._create_odt_zip_file(response.getBody())
- styles_xml_body = odt_zip_file.read('styles.xml')
+ ooo_builder = OOoBuilder(response.getBody())
+ styles_xml_body = ooo_builder.extract('styles.xml')
self.assertTrue(len(styles_xml_body) > 0)
self.assertTrue(styles_xml_body.find('Style sheet en') > 0)
# 3. test a fail case
- self.assertFalse(self.folder.hasObject('NotFound_getODTStyleSheet'))
+ self.assertFalse(self.getPortal().hasObject('NotFound_getODTStyleSheet'))
Static_viewAsOdt.doSettings(request, title='', xml_file_id='content.xml',
ooo_stylesheet='NotFound_getODTStyleSheet', script_name='')
- response = self.publish('/' + self.folder.Static_viewAsOdt.absolute_url(1))
+ response = self.publish('/' + self.getPortal().Static_viewAsOdt.absolute_url(1))
self.assertFalse(response.getBody().startswith('PK'))
self.assertTrue(500, response.getStatus())
More information about the Erp5-report
mailing list