[Checkins] SVN: mongopersist/trunk/ - Added, cleaned tests
Adam Groszer
cvs-admin at zope.org
Wed Feb 6 08:49:23 UTC 2013
Log message for revision 129144:
- Added, cleaned tests
- Re-release after missing files in 0.7.4
Changed:
U mongopersist/trunk/CHANGES.txt
U mongopersist/trunk/src/mongopersist/zope/tests/test_container.py
-=-
Modified: mongopersist/trunk/CHANGES.txt
===================================================================
--- mongopersist/trunk/CHANGES.txt 2013-02-06 02:44:35 UTC (rev 129143)
+++ mongopersist/trunk/CHANGES.txt 2013-02-06 08:49:21 UTC (rev 129144)
@@ -5,8 +5,10 @@
0.7.5 (unreleased)
------------------
-- ...
+- Added, cleaned tests
+- Re-release after missing files in 0.7.4
+
0.7.4 (2013-02-05)
------------------
Modified: mongopersist/trunk/src/mongopersist/zope/tests/test_container.py
===================================================================
--- mongopersist/trunk/src/mongopersist/zope/tests/test_container.py 2013-02-06 02:44:35 UTC (rev 129143)
+++ mongopersist/trunk/src/mongopersist/zope/tests/test_container.py 2013-02-06 08:49:21 UTC (rev 129144)
@@ -54,131 +54,6 @@
pass
-class Campaigns(container.MongoContainer):
-
- _m_collection = 'campaigns'
-
- def add(self, campaign):
- self[campaign.name] = campaign
-
-
-class MongoItem(container.MongoContained,
- persistent.Persistent):
- pass
-
-class Campaign(MongoItem, container.MongoContainer):
-
- _m_collection = 'persons'
- _p_mongo_collection = 'campaigns'
-
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '<%s %s>' %(self.__class__.__name__, self.name)
-
-
-def doctest_Campaign():
- """MongoContainer: basic
-
- Let's make sure events are fired correctly:
-
- >>> zope.component.provideHandler(handleObjectModifiedEvent)
-
- Let's add a container to the root:
-
- >>> transaction.commit()
- >>> dm.root['c'] = Campaigns()
-
- >>> db = dm._conn[DBNAME]
- >>> pprint(list(db['campaigns'].find()))
- []
-
- [{u'_id': ObjectId('4e7ddf12e138237403000000'),
- u'_m_collection': u'person'}]
-
- It is unfortunate that the '_m_collection' attribute is set. This is
- avoidable using a sub-class.
-
- >>> dm.root['c'][u'one'] = Campaign(u'one')
- ContainerModifiedEvent: <...Campaigns ...>
- >>> dm.root['c'].keys()
- [u'one']
- >>> dm.root['c'][u'one']
- <Campaign one>
-
- >>> dm.root['c']['one'].__parent__
- <mongopersist.zope.tests.test_container.Campaigns object at 0x001122>
- >>> dm.root['c']['one'].__name__
- u'one'
-
- It is a feature of the container that the item is immediately available
- after assignment, but before the data is stored in the database. Let's
- commit and access the data again:
-
- >>> transaction.commit()
-
- >>> pprint(list(db['campaigns'].find()))
- [{u'_id': ObjectId('4e7ddf12e138237403000000'),
- u'key': u'one',
- u'name': u'one',
- u'parent': DBRef(u'mongopersist.zope.tests.test_container.Campaigns',
- ObjectId('4e7ddf12e138237403000000'),
- u'mongopersist_container_test')}]
-
- >>> 'one' in dm.root['c']
- True
- >>> dm.root['c'].keys()
- [u'one']
- >>> dm.root['c']['one'].__parent__
- <mongopersist.zope.tests.test_container.Campaigns object at 0x001122>
- >>> dm.root['c']['one'].__name__
- u'one'
-
- We get a usual key error, if an object does not exist:
-
- >>> dm.root['c']['roy']
- Traceback (most recent call last):
- ...
- KeyError: 'roy'
-
- >>> 'roy' in dm.root['c']
- False
-
- Now remove the item:
-
- >>> del dm.root['c']['one']
- ContainerModifiedEvent: <...Campaigns ...>
-
- The changes are immediately visible.
-
- >>> dm.root['c'].keys()
- []
- >>> dm.root['c']['one']
- Traceback (most recent call last):
- ...
- KeyError: 'one'
-
- Make sure it is really gone after committing:
-
- >>> transaction.commit()
- >>> dm.root['c'].keys()
- []
-
- Check adding of more objects:
-
- >>> dm.root['c'][u'1'] = c1 = Campaign(u'One')
- ContainerModifiedEvent: <...Campaigns ...>
- >>> dm.root['c'][u'2'] = c2 = Campaign(u'Two')
- ContainerModifiedEvent: <...Campaigns ...>
- >>> dm.root['c'][u'3'] = Campaign(u'Three')
- ContainerModifiedEvent: <...Campaigns ...>
-
- >>> sorted(dm.root['c'].keys())
- [u'1', u'2', u'3']
- """
-
-
def doctest_SimpleMongoContainer_basic():
"""SimpleMongoContainer: basic
@@ -832,6 +707,168 @@
Note that we produced a nice hex-presentation of the ZODB's OID.
"""
+
+# classes for doctest_Realworldish
+class Campaigns(container.MongoContainer):
+ _m_collection = 'campaigns'
+
+ def __init__(self, name):
+ self.name = name
+
+ def add(self, campaign):
+ self[campaign.name] = campaign
+
+ def __repr__(self):
+ return '<%s %s>' % (self.__class__.__name__, self.name)
+
+
+class MongoItem(container.MongoContained,
+ persistent.Persistent):
+ pass
+
+
+class Campaign(MongoItem, container.MongoContainer):
+ _m_collection = 'persons'
+ _p_mongo_collection = 'campaigns'
+
+ def __init__(self, name):
+ self.name = name
+
+ def __repr__(self):
+ return '<%s %s>' % (self.__class__.__name__, self.name)
+
+
+class PersonItem(MongoItem):
+ _p_mongo_collection = 'persons'
+
+ def __init__(self, name):
+ self.name = name
+
+ def __str__(self):
+ return self.name
+
+ def __repr__(self):
+ return '<%s %s>' % (self.__class__.__name__, self)
+
+
+def doctest_Realworldish():
+ """Let's see some real worldish hierarchic structure persisted
+
+ Let's make sure events are fired correctly:
+
+ >>> zope.component.provideHandler(handleObjectModifiedEvent)
+
+ Let's add a container to the root:
+
+ >>> transaction.commit()
+ >>> dm.root['c'] = Campaigns('foobar')
+
+ >>> db = dm._conn[DBNAME]
+ >>> pprint(list(db['mongopersist.zope.tests.test_container.Campaigns'].find()))
+ [{u'_id': ObjectId('4e7ddf12e138237403000000'),
+ u'name': u'foobar'}]
+
+ It is unfortunate that the '_m_collection' attribute is set. This is
+ avoidable using a sub-class.
+
+ >>> dm.root['c'][u'one'] = Campaign(u'one')
+ ContainerModifiedEvent: <...Campaigns ...>
+ >>> dm.root['c'].keys()
+ [u'one']
+ >>> dm.root['c'][u'one']
+ <Campaign one>
+
+ >>> dm.root['c']['one'].__parent__
+ <Campaigns foobar>
+ >>> dm.root['c']['one'].__name__
+ u'one'
+
+ It is a feature of the container that the item is immediately available
+ after assignment, but before the data is stored in the database. Let's
+ commit and access the data again:
+
+ >>> transaction.commit()
+
+ >>> pprint(list(db['campaigns'].find()))
+ [{u'_id': ObjectId('4e7ddf12e138237403000000'),
+ u'key': u'one',
+ u'name': u'one',
+ u'parent': DBRef(u'mongopersist.zope.tests.test_container.Campaigns',
+ ObjectId('4e7ddf12e138237403000000'),
+ u'mongopersist_container_test')}]
+
+ >>> 'one' in dm.root['c']
+ True
+ >>> dm.root['c'].keys()
+ [u'one']
+ >>> dm.root['c']['one'].__parent__
+ <Campaigns foobar>
+ >>> dm.root['c']['one'].__name__
+ u'one'
+
+ We get a usual key error, if an object does not exist:
+
+ >>> dm.root['c']['roy']
+ Traceback (most recent call last):
+ ...
+ KeyError: 'roy'
+
+ >>> 'roy' in dm.root['c']
+ False
+
+ Now remove the item:
+
+ >>> del dm.root['c']['one']
+ ContainerModifiedEvent: <...Campaigns ...>
+
+ The changes are immediately visible.
+
+ >>> dm.root['c'].keys()
+ []
+ >>> dm.root['c']['one']
+ Traceback (most recent call last):
+ ...
+ KeyError: 'one'
+
+ Make sure it is really gone after committing:
+
+ >>> transaction.commit()
+ >>> dm.root['c'].keys()
+ []
+
+ Check adding of more objects:
+
+ >>> dm.root['c'][u'1'] = c1 = Campaign(u'One')
+ ContainerModifiedEvent: <...Campaigns ...>
+ >>> dm.root['c'][u'2'] = c2 = Campaign(u'Two')
+ ContainerModifiedEvent: <...Campaigns ...>
+ >>> dm.root['c'][u'3'] = Campaign(u'Three')
+ ContainerModifiedEvent: <...Campaigns ...>
+
+ >>> sorted(dm.root['c'].keys())
+ [u'1', u'2', u'3']
+
+ Check adding of more subitems:
+
+ >>> stephan = c1['stephan'] = PersonItem('Stephan')
+ ContainerModifiedEvent: <Campaign One>
+ >>> roy = c1['roy'] = PersonItem('Roy')
+ ContainerModifiedEvent: <Campaign One>
+
+ >>> sorted(c1.keys())
+ [u'roy', u'stephan']
+
+ >>> adam = c2['adam'] = PersonItem('Adam')
+ ContainerModifiedEvent: <Campaign Two>
+
+ >>> sorted(c1.keys())
+ [u'roy', u'stephan']
+ >>> sorted(c2.keys())
+ [u'adam']
+
+ """
+
+
checker = renormalizing.RENormalizing([
(re.compile(r'datetime.datetime(.*)'),
'datetime.datetime(2011, 10, 1, 9, 45)'),
More information about the checkins
mailing list