[Checkins] SVN: zope.copypastemove/trunk/s merged icemac-lp620353 branch here

Michael Howitz mh at gocept.com
Tue Sep 14 06:11:25 EDT 2010


Log message for revision 116362:
  merged icemac-lp620353 branch here
  

Changed:
  U   zope.copypastemove/trunk/setup.py
  A   zope.copypastemove/trunk/src/zope/copypastemove/tests/test_metadata.py

-=-
Modified: zope.copypastemove/trunk/setup.py
===================================================================
--- zope.copypastemove/trunk/setup.py	2010-09-14 10:09:55 UTC (rev 116361)
+++ zope.copypastemove/trunk/setup.py	2010-09-14 10:11:24 UTC (rev 116362)
@@ -47,6 +47,7 @@
           test=['zope.principalannotation',
                 'zope.testing',
                 'zope.traversing',
+                'zope.dublincore >= 3.8',
                 ]),
       install_requires=['setuptools',
                         'zope.annotation',

Copied: zope.copypastemove/trunk/src/zope/copypastemove/tests/test_metadata.py (from rev 115799, zope.copypastemove/branches/icemac-lp620353/src/zope/copypastemove/tests/test_metadata.py)
===================================================================
--- zope.copypastemove/trunk/src/zope/copypastemove/tests/test_metadata.py	                        (rev 0)
+++ zope.copypastemove/trunk/src/zope/copypastemove/tests/test_metadata.py	2010-09-14 10:11:24 UTC (rev 116362)
@@ -0,0 +1,86 @@
+##############################################################################
+#
+# Copyright (c) 2010 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Object copier metadata tests"""
+
+import datetime
+import unittest
+import zope.annotation
+import zope.annotation.attribute
+import zope.component
+import zope.container.contained
+import zope.container.interfaces
+import zope.container.sample
+import zope.container.testing
+import zope.copypastemove
+import zope.dublincore.testing
+import zope.dublincore.timeannotators
+import zope.lifecycleevent.interfaces
+import zope.location.interfaces
+import zope.traversing.api
+
+
+class CopyCreationTimeTest(zope.container.testing.ContainerPlacefulSetup,
+                           unittest.TestCase):
+
+    def setUp(self):
+        super(CopyCreationTimeTest, self).setUp()
+        # We need a folder hierarchy for copying:
+        self.buildFolders()
+        # We need the default zope.dublincore adapters:
+        zope.dublincore.testing.setUpDublinCore()
+        # And the created annotator for the ObjectCopiedEvent
+        zope.component.provideHandler(
+            zope.dublincore.timeannotators.CreatedAnnotator,
+            [zope.lifecycleevent.interfaces.IObjectCopiedEvent])
+        zope.component.provideHandler(
+            zope.dublincore.timeannotators.CreatedAnnotator,
+            [None, zope.lifecycleevent.interfaces.IObjectCopiedEvent])
+        # The metadata are stored in annotations on the container:
+        zope.interface.classImplements(
+            zope.container.sample.SampleContainer,
+            zope.annotation.IAttributeAnnotatable)
+        zope.component.provideAdapter(
+            zope.annotation.attribute.AttributeAnnotations)
+        # We need the dispatch the copied event to the sub locations:
+        zope.component.provideHandler(
+            zope.copypastemove.dispatchToSublocations,
+            [None, zope.lifecycleevent.interfaces.IObjectCopiedEvent])
+        zope.component.provideAdapter(
+            zope.container.contained.ContainerSublocations,
+            [zope.container.interfaces.IReadContainer],
+            zope.location.interfaces.ISublocations)
+
+    def test_copy(self):
+        from zope.dublincore.interfaces import IZopeDublinCore
+        from zope.traversing.api import traverse
+
+        # Neither the original folder nor one of its subfolders have a
+        # creation date as there was no event on creation:
+        folder = traverse(self.rootFolder, 'folder1')
+        self.assertTrue(IZopeDublinCore(folder).created is None)
+        subfolder = traverse(self.rootFolder, 'folder1/folder1_1')
+        self.assertTrue(IZopeDublinCore(subfolder).created is None)
+
+        # After copying the folder, it has a creation date:
+        copier = zope.copypastemove.ObjectCopier(folder)
+        copier.copyTo(self.rootFolder, 'folder-copy')
+        folder_copy = traverse(self.rootFolder, 'folder-copy')
+        self.assertTrue(isinstance(IZopeDublinCore(folder_copy).created,
+                                   datetime.datetime))
+
+        # The subfolder has a creation date, too:
+        subfolder_copy = traverse(self.rootFolder, 'folder-copy/folder1_1')
+        self.assertTrue(isinstance(IZopeDublinCore(subfolder_copy).created,
+                                   datetime.datetime))
+



More information about the checkins mailing list