diff --git a/product/ERP5OOo/tests/testDms.py b/product/ERP5OOo/tests/testDms.py index 1ef5dc025b801b17633be14a646bf027b51e1a19..f878062f1dda8faf3d25217036241fe13736f3c4 100644 --- a/product/ERP5OOo/tests/testDms.py +++ b/product/ERP5OOo/tests/testDms.py @@ -44,6 +44,9 @@ These are subject to another suite "testIngestion". """ +# XXX test_02 works only with oood on +# XXX test_03 and test_04 work only WITHOUT oood (because of a known bug in erp5_dms) + # # Skeleton ZopeTestCase @@ -77,6 +80,10 @@ RUN_ALL_TEST = 1 # Define the conversion server host conversion_server_host = ('127.0.0.1', 8008) +TEST_FILES_HOME = os.path.join(os.getenv('INSTANCE_HOME'), 'Products', 'ERP5OOo', 'tests', 'test_document') +FILE_NAME_REGULAR_EXPRESSION = "(?P<reference>[A-Z]{3,6})-(?P<language>[a-z]{2})-(?P<version>[0-9]{3})" +REFERENCE_REGULAR_EXPRESSION = "(?P<reference>[A-Z]{3,6})(-(?P<language>[a-z]{2}))?(-(?P<version>[0-9]{3}))?" + def printAndLog(msg): """ @@ -137,9 +144,18 @@ class TestDocument(ERP5TypeTestCase): def afterSetUp(self, quiet=QUIET, run=0): self.portal = self.getPortal() + self.setSystemPreference() # set a dummy localizer (because normally it is cookie based) self.portal.Localizer = DummyLocalizer() + def setSystemPreference(self): + default_pref = self.portal.portal_preferences.default_site_preference + default_pref.setPreferredOoodocServerAddress(conversion_server_host[0]) + default_pref.setPreferredOoodocServerPortNumber(conversion_server_host[1]) + default_pref.setPreferredDocumentFileNameRegularExpression(FILE_NAME_REGULAR_EXPRESSION) + default_pref.setPreferredDocumentReferenceRegularExpression(REFERENCE_REGULAR_EXPRESSION) + default_pref.enable() + def getDocumentModule(self): return getattr(self.getPortal(),'document_module') @@ -149,8 +165,6 @@ class TestDocument(ERP5TypeTestCase): def getNeededCategoryList(self): return () - pass - def tearDown(self): """ Do some stuff after each test: @@ -163,6 +177,7 @@ class TestDocument(ERP5TypeTestCase): """ Remove everything after each run """ + printAndLog("clearing document module...") doc_module = self.getDocumentModule() ids = [i for i in doc_module.objectIds()] doc_module.manage_delObjects(ids) @@ -217,21 +232,44 @@ class TestDocument(ERP5TypeTestCase): self.failUnless(self.getCatalogTool()!=None) self.failUnless(self.getWorkflowTool()!=None) - def no_test_02_RevisionSystem(self,quiet=QUIET,run=RUN_ALL_TEST): + def test_02_RevisionSystem(self,quiet=QUIET,run=RUN_ALL_TEST): """ Test revision mechanism """ if not run: return printAndLog('\nTest Revision System') # create a test document - # revision should be 1 + # revision should be 0 # upload file (can be the same) into it - # revision should now be 2 + # revision should now be 1 # edit the document with any value or no values - # revision should now be 3 + # revision should now be 2 # contribute the same file through portal_contributions - # there should still be only one document, with revision 4 (because it should have done mergeRevision) - # getRevisionList should return (1, 2, 3, 4) + # the same document should now have revision 3 (because it should have done mergeRevision) + # getRevisionList should return (0, 1, 2, 3) + filename = 'TEST-en-002.doc' + file = makeFileUpload(filename) + document = self.portal.portal_contributions.newContent(file=file) + document.immediateReindexObject() + get_transaction().commit() + self.tic() + document_url = document.getRelativeUrl() + def getTestDocument(): + return self.portal.restrictedTraverse(document_url) + self.failUnless(getTestDocument().getRevision() == '0') + getTestDocument().edit(file=file) + get_transaction().commit() + self.tic() + self.failUnless(getTestDocument().getRevision() == '1') + getTestDocument().edit(title='Hey Joe') + get_transaction().commit() + self.tic() + self.failUnless(getTestDocument().getRevision() == '2') + another_document = self.portal.portal_contributions.newContent(file=file) + get_transaction().commit() + self.tic() + self.failUnless(getTestDocument().getRevision() == '3') + self.failUnless(getTestDocument().getRevisionList() == ['0', '1', '2'] ) def test_03_Versioning(self,quiet=QUIET,run=RUN_ALL_TEST): """ @@ -269,7 +307,6 @@ class TestDocument(ERP5TypeTestCase): self.failUnless(docs[3].getLatestVersionValue() == docs[3]) version_list = [br.getRelativeUrl() for br in docs[2].getVersionValueList()] self.failUnless(version_list == [docs[3].getRelativeUrl(), docs[2].getRelativeUrl(), docs[1].getRelativeUrl()]) - self.clearDocumentModule() def test_04_VersioningWithLanguage(self,quiet=QUIET,run=RUN_ALL_TEST): """ @@ -327,7 +364,6 @@ class TestDocument(ERP5TypeTestCase): get_transaction().commit() self.tic() self.failUnless(doc.getLatestVersionValue() == docs[7]) # there are two latest, neither in user language - it chooses the one in original language - self.clearDocumentModule() def no_test_05_UniqueReference(self,quiet=QUIET,run=RUN_ALL_TEST): """