[Erp5-report] r15373 - /erp5/trunk/products/ERP5OOo/tests/testDms.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Jul 28 20:22:06 CEST 2007


Author: bartek
Date: Sat Jul 28 20:22:06 2007
New Revision: 15373

URL: http://svn.erp5.org?rev=15373&view=rev
Log:
test versioning in DMS (seems to prove that r14774 is ok)

Modified:
    erp5/trunk/products/ERP5OOo/tests/testDms.py

Modified: erp5/trunk/products/ERP5OOo/tests/testDms.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testDms.py?rev=15373&r1=15372&r2=15373&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testDms.py (original)
+++ erp5/trunk/products/ERP5OOo/tests/testDms.py Sat Jul 28 20:22:06 2007
@@ -50,6 +50,7 @@
 #
 
 from random import randint
+import time
 
 from Testing import ZopeTestCase
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
@@ -71,7 +72,7 @@
 os.environ['EVENT_LOG_SEVERITY'] = '-300'
 
 QUIET = 0
-RUN_ALL_TEST = 0
+RUN_ALL_TEST = 1
 
 # Define the conversion server host
 conversion_server_host = ('127.0.0.1', 8008)
@@ -107,12 +108,27 @@
   path = makeFilePath(name)
   return FileUploadTest(path, name)
 
+class DummyLocalizer:
+
+  """
+    A replacement for stock cookie - based localizer
+  """
+
+  lang = 'en'
+
+  def get_selected_language(self):
+    return self.lang
+
+  def changeLanguage(self, lang):
+    self.lang = lang
+
+  def translate(self, dictionnary, word):
+    return word
 
 class TestDocument(ERP5TypeTestCase):
   """
-  """
-
-  # Different variables used for this test
+    Test basic document - related operations
+  """
 
   def getTitle(self):
     return "DMS"
@@ -120,70 +136,47 @@
   ## setup
 
   def afterSetUp(self, quiet=QUIET, run=0):
-    pass
-    #self.createCategoryList()
-    #self.createObjectList()
-    #self.setSystemPreference()
-    #self.login()
-    #portal = self.getPortal()
+    self.portal = self.getPortal()
+    # set a dummy localizer (because normally it is cookie based)
+    self.portal.Localizer = DummyLocalizer()
 
   def getDocumentModule(self):
     return getattr(self.getPortal(),'document_module')
 
   def getBusinessTemplateList(self):
+    return ('erp5_base', 'erp5_web', 'erp5_dms_mysql_innodb_catalog', 'erp5_dms')
+
+  def getNeededCategoryList(self):
     return ()
-    #return ('erp5_base','erp5_trade','erp5_project','erp5_dms')
-
-  def getNeededCategoryList(self):
-    return ('function/publication/reviewer','function/project/director','function/hq')
-
-  def createCategoryList(self):
-    """Create the categories for our test. """
-    # create categories
-    for cat_string in self.getNeededCategoryList():
-      base_cat = cat_string.split("/")[0]
-      path = self.getPortal().portal_categories[base_cat]
-      for cat in cat_string.split("/")[1:]:
-        if not cat in path.objectIds():
-          path = path.newContent(
-            portal_type='Category',
-            id=cat,
-            title=cat,
-            immediate_reindex=1)
-        else:
-          path = path[cat]
-
-  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(
-           "(?P<reference>[A-Z]{3,6})-(?P<language>[a-z]{2})-(?P<version>[0-9]{3})")
-    default_pref.setPreferredDocumentReferenceRegularExpression(
-           "(?P<reference>[A-Z]{3,6})(-(?P<language>[a-z]{2}))?(-(?P<version>[0-9]{3}))?")
-    default_pref.enable()
+
+    pass
+
+  def tearDown(self):
+    """
+      Do some stuff after each test:
+      - clear document module
+    """
+    # XXX Is it safe to overwrite tearDown?
+    self.clearDocumentModule()
+
+  def clearDocumentModule(self):
+    """
+      Remove everything after each run
+    """
+    doc_module = self.getDocumentModule()
+    ids = [i for i in doc_module.objectIds()]
+    doc_module.manage_delObjects(ids)
+    get_transaction().commit()
+    self.tic()
 
   ## helper methods
 
-  def getUserFolder(self):
-    return self.getPortal().acl_users
-
-  def login(self, quiet=QUIET, run=RUN_ALL_TEST):
-    """
-      Create a new manager user and login.
-    """
-    user_name = 'dms_user'
-    user_folder = self.portal.acl_users
-    user_folder._doAddUser(user_name, '', ['Manager', 'Owner', 'Assignor'], [])
-    user = user_folder.getUserById(user_name).__of__(user_folder)
-    newSecurityManager(None, user)
-
-  def createTestDocument(self, file_name=None, reference='TEST', version='002', language='en'):
+  def createTestDocument(self, file_name=None, portal_type='Text', reference='TEST', version='002', language='en'):
     """
       Creates a text document
     """
     dm=self.getPortal().document_module
-    doctext=dm.newContent(portal_type='Text Document')
+    doctext=dm.newContent(portal_type=portal_type)
     if file_name is not None:
       f = open(makeFilePath(file_name))
       doctext.setTextContent(f.read())
@@ -201,6 +194,9 @@
     document_module = self.portal.document_module
     return getattr(document_module, id)
 
+  def clearCache(self):
+    self.portal.portal_caches.clearAllCache()
+
   ## steps
   
   def stepTic(self, sequence=None, sequence_list=None, **kw):
@@ -221,7 +217,7 @@
     self.failUnless(self.getCatalogTool()!=None)
     self.failUnless(self.getWorkflowTool()!=None)
 
-  def test_02_RevisionSystem(self,quiet=QUIET,run=RUN_ALL_TEST):
+  def no_test_02_RevisionSystem(self,quiet=QUIET,run=RUN_ALL_TEST):
     """
       Test revision mechanism
     """
@@ -243,15 +239,37 @@
     """
     if not run: return
     printAndLog('\nTest Versioning System')
-    # create a test document, set coordinates (reference=TEST, version=002, language=en)
-    # create a second test document, set coordinates (reference=TEST, version=002, language=en)
-    # create a third test document, set its reference to ANOTHER
-    # run isVersionUnique on all three (should return False, False, True)
-    # change version of the second doc to 003
-    # run isVersionUnique on all three (should return True)
-    # run getLatestVersionValue on first and second (should return the second)
-    # run getVersionValueList on first and second (should return the two)
-    # run getVersionValueList on third (should return the third)
+    # create a document 1, set coordinates (reference=TEST, version=002, language=en)
+    # create a document 2, set coordinates (reference=TEST, version=002, language=en)
+    # create a document 3, set coordinates (reference=TEST, version=004, language=en)
+    # run isVersionUnique on 1, 2, 3 (should return False, False, True)
+    # change version of 2 to 003
+    # run isVersionUnique on 1, 2, 3  (should return True)
+    # run getLatestVersionValue on all (should return 3)
+    # run getVersionValueList on 2 (should return [3, 2, 1])
+    document_module = self.getDocumentModule()
+    docs = {}
+    docs[1] = self.createTestDocument(reference='TEST', version='002', language='en')
+    docs[2] = self.createTestDocument(reference='TEST', version='002', language='en')
+    docs[3] = self.createTestDocument(reference='TEST', version='004', language='en')
+    docs[4] = self.createTestDocument(reference='ANOTHER', version='002', language='en')
+    get_transaction().commit()
+    self.tic()
+    self.failIf(docs[1].isVersionUnique())
+    self.failIf(docs[2].isVersionUnique())
+    self.failUnless(docs[3].isVersionUnique())
+    docs[2].setVersion('003')
+    get_transaction().commit()
+    self.tic()
+    self.failUnless(docs[1].isVersionUnique())
+    self.failUnless(docs[2].isVersionUnique())
+    self.failUnless(docs[3].isVersionUnique())
+    self.failUnless(docs[1].getLatestVersionValue() == docs[3])
+    self.failUnless(docs[2].getLatestVersionValue() == docs[3])
+    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):
     """
@@ -265,7 +283,7 @@
     # (3) TEST, 002, pl
     # (4) TEST, 003, en
     # (5) TEST, 003, sp
-    # the following calls should produce the following output:
+    # the following calls (on any doc) should produce the following output:
     # getOriginalLanguage() = 'en'
     # getLanguageList = ('en', 'fr', 'pl', 'sp')
     # getLatestVersionValue() = 4
@@ -273,10 +291,45 @@
     # getLatestVersionValue('fr') = 2
     # getLatestVersionValue('pl') = 3
     # getLatestVersionValue('ru') = None
-    # Set user language with Localizer to 'sp'
+    # change user language into 'sp'
     # getLatestVersionValue() = 5
-
-  def test_05_UniqueReference(self,quiet=QUIET,run=RUN_ALL_TEST):
+    # add documents:
+    # (6) TEST, 004, pl
+    # (7) TEST, 004, en
+    # getLatestVersionValue() = 7
+    localizer = self.portal.Localizer
+    document_module = self.getDocumentModule()
+    docs = {}
+    docs[1] = self.createTestDocument(reference='TEST', version='002', language='en')
+    time.sleep(1) # time span here because catalog records only full seconds
+    docs[2] = self.createTestDocument(reference='TEST', version='002', language='fr')
+    time.sleep(1)
+    docs[3] = self.createTestDocument(reference='TEST', version='002', language='pl')
+    time.sleep(1)
+    docs[4] = self.createTestDocument(reference='TEST', version='003', language='en')
+    time.sleep(1)
+    docs[5] = self.createTestDocument(reference='TEST', version='003', language='sp')
+    time.sleep(1)
+    get_transaction().commit()
+    self.tic()
+    doc = docs[2] # can be any
+    self.failUnless(doc.getOriginalLanguage() == 'en')
+    self.failUnless(doc.getLanguageList() == ['en', 'fr', 'pl', 'sp'])
+    self.failUnless(doc.getLatestVersionValue() == docs[4]) # there are two latest - it chooses the one in user language
+    self.failUnless(doc.getLatestVersionValue('en') == docs[4])
+    self.failUnless(doc.getLatestVersionValue('fr') == docs[2])
+    self.failUnless(doc.getLatestVersionValue('pl') == docs[3])
+    self.failUnless(doc.getLatestVersionValue('ru') == None)
+    localizer.changeLanguage('sp') # change user language
+    self.failUnless(doc.getLatestVersionValue() == docs[5]) # there are two latest - it chooses the one in user language
+    docs[6] = document_module.newContent(reference='TEST', version='004', language='pl')
+    docs[7] = document_module.newContent(reference='TEST', version='004', language='en')
+    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):
     """
       Test automatic setting of unique reference
     """
@@ -288,7 +341,7 @@
     # run setUniqueReference('uniq') on the third
     # reference of the third doc should now be TEST-uniq-1
 
-  def test_06_testExplicitRelations(self,quiet=QUIET,run=RUN_ALL_TEST):
+  def no_test_06_testExplicitRelations(self,quiet=QUIET,run=RUN_ALL_TEST):
     """
       Test explicit relations.
       Explicit relations are just like any other relation, so no need to test them here
@@ -306,7 +359,7 @@
     # getSimilarCloudValueList on 4 should return 2, 3 and 5
     # getSimilarCloudValueList(depth=1) on 4 should return 3 and 5
 
-  def test_07_testImplicitRelations(self,quiet=QUIET,run=RUN_ALL_TEST):
+  def no_test_07_testImplicitRelations(self,quiet=QUIET,run=RUN_ALL_TEST):
     """
       Test implicit (wiki-like) relations.
     """




More information about the Erp5-report mailing list