[Zope3-checkins] CVS: zopeproducts/NewsSite/tests - test_newssite.py:1.2 test_newssiteview.py:1.2 test_register.py:1.5

Philipp von Weitershausen philikon@philikon.de
Wed, 25 Jun 2003 11:30:36 -0400


Update of /cvs-repository/zopeproducts/NewsSite/tests
In directory cvs.zope.org:/tmp/cvs-serv4672/tests

Modified Files:
	test_newssite.py test_newssiteview.py test_register.py 
Log Message:
Made the NewsSite product work again (don't expect too much, though):

- update according to changes in Zope3 head (configuration
  -> registration)

- use new-style implements

- use zapi convenience module

- disable some faulty unit tests

- whitespace normalization (please stop using tabs!)


=== zopeproducts/NewsSite/tests/test_newssite.py 1.1 => 1.2 ===
--- zopeproducts/NewsSite/tests/test_newssite.py:1.1	Wed Mar 26 05:47:53 2003
+++ zopeproducts/NewsSite/tests/test_newssite.py	Wed Jun 25 11:30:35 2003
@@ -37,7 +37,6 @@
 
     def _getTargetClass(self):
         from zopeproducts.NewsSite.newssite import NewsSite
-
         return NewsSite
 
     def _makeOne(self):
@@ -51,7 +50,6 @@
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestNewsSite))
     return suite
-
 
 if __name__ == '__main__':
     unittest.main()


=== zopeproducts/NewsSite/tests/test_newssiteview.py 1.1 => 1.2 ===
--- zopeproducts/NewsSite/tests/test_newssiteview.py:1.1	Wed Mar 26 09:49:31 2003
+++ zopeproducts/NewsSite/tests/test_newssiteview.py	Wed Jun 25 11:30:35 2003
@@ -16,69 +16,74 @@
 $Id$
 """
 
-import unittest
+__metaclass__ = type
 
-from zopeproducts.NewsSite.interfaces import INewsSite
-from zopeproducts.NewsSite.NewsItem.interfaces import INewsItem
+import unittest
+from datetime import datetime
 
+from zope.interface import implements
+from zope.component.adapter import provideAdapter
 from zope.publisher.interfaces.browser import IBrowserView
 from zope.component.view import provideView
 from zope.app.interfaces.dublincore import ICMFDublinCore
+from zope.app.tests.placelesssetup import PlacelessSetup
+from zope.app.browser.workflow.stateful.interfaces import IContentFilterAdapter
+from zope.app.browser.workflow.stateful.filteradapter import FilterAdapter
+from zope.app.interfaces.annotation import IAttributeAnnotatable
 
+from zopeproducts.NewsSite.interfaces import INewsSite
+from zopeproducts.NewsSite.NewsItem.interfaces import INewsItem
 
+class DummyNewsSite:
+    implements(INewsSite, IAttributeAnnotatable)
 
-#############################################################################
-# If your tests change any global registries, then uncomment the
-# following import and include CleanUp as a base class of your
-# test. It provides a setUp and tearDown that clear global data that
-# has registered with the test cleanup framework.  If your class has
-# its own setUp or tearDown, make sure you call the CleanUp setUp and
-# tearDown from them, or the benefits of using CleanUp will be lost.
-# Don't use CleanUp based tests outside the Zope package.
-
-from zope.testing.cleanup import CleanUp # Base class w registry cleanup
+    def __len__(self):
+        return len(self.data)
 
-class DummyNewsSite:
-	__implements__ = INewsSite
+    def __iter__(self):
+        return iter(self.data.keys())
 
-	def __len__(self):
-		return len(self.data)
+    def __getitem__(self, index):
+        return self.data[index]
 
-	def	__getitem__(self, index):
-		return self.data[index]
+    def __setitem__(self, index, obj):
+        self.data[index] = obj
 
-	def __init__(self):
-		self.data=[]
+    def __init__(self):
+        self.data = {}
 
 class DummyNewsItem:
-	__implements__ = INewsItem
+    implements(INewsItem)
 
-	def __init__(self, body, date):
-		self.body = body
-		self.date = date
-		self.lead = u"blabla"
-		self.title = u"Blah"
+    def __init__(self, body, date):
+        self.body = body
+        self.date = date
+        self.lead = u"blabla"
+        self.title = u"Blah"
 
 class DummyNoNewsItem:
-	body = u"no news"
+    body = u"no news"
 
 class DummyDublinCoreAdapter:
-	__implements__ = ICMFDublinCore
-	__used_for__ = INewsItem
+    implements(ICMFDublinCore)
+    __used_for__ = INewsItem
 
-	def __init__(self, context):
-		self.context = context
-		
-	def getEffectiveDate(self):
-		return self.context.date
+    def __init__(self, context):
+        self.context = context
+
+    def getEffectiveDate(self):
+        return self.context.date
 
 #############################################################################
 
-class TestNewsSiteView(unittest.TestCase):
+class TestNewsSiteView(PlacelessSetup, unittest.TestCase):
+
+    def setUp(self):
+        super(TestNewsSiteView, self).setUp()
+        provideAdapter(IAttributeAnnotatable, IContentFilterAdapter, FilterAdapter)
 
     def _getTargetClass(self):
         from zopeproducts.NewsSite.newssite import NewsSiteView
-
         return NewsSiteView
 
     def _makeOne(self, context=None, request=None, *args, **kw):
@@ -87,28 +92,30 @@
     def test_create(self):
         newssite = self._makeOne()
         self.failUnless(IBrowserView.isImplementedBy(newssite))
-	
-	def test_list(self):
-		site = DummyNewsSite()
-		site.data.append(DummyNewsItem(u"lola", datestime('2003-01-03')))
-		site.data.append(DummyNewsItem(u"texttext", datetime('2003-01-01')))
-		site.data.append(DummyNewsItem(u"lilo", datestime('2003-01-04')))
-		site.data.append(DummyNoNewsItem())
-		site.data.append(DummyNewsItem(u"blalbla", datestime('2003-01-02')))
-		view = self._makeOne(site)
-		
-		filtered = view.listNewsItems()
-
-		texts = [x.body for x in filtered]
 
-		self.failIf(u"no news" in texts)
-		self.assertEqual([u"texttext",u"blalbla",u"lola",u"lilo"], texts)
+##XXX This test is broken, since the view does not have a
+## 'listNewsItems' method. Also, this test code does not really make
+## it clear what this method should look like...
+##
+##    def test_list(self):
+##        site = DummyNewsSite()
+##        site['lola'] = DummyNewsItem(u"lola", datetime('2003-01-03'))
+##        site['texttext'] = DummyNewsItem(u"texttext", datetime('2003-01-01'))
+##        site['lilo'] = DummyNewsItem(u"lilo", datetime('2003-01-04'))
+##        site['nutting'] = DummyNoNewsItem()
+##        site['blalbla'] = DummyNewsItem(u"blalbla", datetime('2003-01-02'))
+##        view = self._makeOne(site)
+
+##        filtered = view.listNewsItems()
+
+##        texts = [x.body for x in filtered]
+##        self.failIf(u"no news" in texts)
+##        self.assertEqual([u"texttext", u"blalbla", u"lola", u"lilo"], texts)
 
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestNewsSiteView))
     return suite
-
 
 if __name__ == '__main__':
     unittest.main()


=== zopeproducts/NewsSite/tests/test_register.py 1.4 => 1.5 ===
--- zopeproducts/NewsSite/tests/test_register.py:1.4	Thu Mar 27 10:12:09 2003
+++ zopeproducts/NewsSite/tests/test_register.py	Wed Jun 25 11:30:35 2003
@@ -18,17 +18,16 @@
 
 import unittest
 
+from zope.interface import implements
 from zope.exceptions import DuplicationError
 from zope.component import getAdapter
 from zope.component.interfaces import IFactory
-from zope.component.service import serviceManager
-from zope.component.service import defineService
+from zope.component.service import serviceManager, defineService
 from zope.component.factory import provideFactory
 from zope.component.adapter import provideAdapter
 from zope.publisher.browser import TestRequest
 
-from zope.app.interfaces.security import IPrincipal
-from zope.app.interfaces.security import IAuthenticationService
+from zope.app.interfaces.security import IPrincipal, IAuthenticationService
 from zope.app.interfaces.annotation import IAttributeAnnotatable
 from zope.app.services.servicenames import Authentication
 from zope.app.services.tests.placefulsetup import PlacefulSetup
@@ -49,12 +48,13 @@
 
 from zope.testing.cleanup import CleanUp # Base class w registry cleanup
 
+__metaclass__ = type
+
 TEST_EMAIL = 'dummy@example.com'
 TEST_REALNAME = 'I. M. Dumbkopf'
 
 class DummyUser:
-
-    __implements__ = (IPrincipal, IAttributeAnnotatable)
+    implements(IPrincipal, IAttributeAnnotatable)
 
     def __init__(self, id='dummy', **kw):
         self.__dict__.update(kw)
@@ -73,36 +73,34 @@
     def add(self,content):
         self._things.append(content)
 
-class DummyMemberAdapter( object ):
+class DummyMemberAdapter:
+    implements(IMember)
 
-    __implements__ = ( IMember, )
-
-    def __init__( self, context ):
+    def __init__(self, context):
         self.context = context
 
     def _setLogin(self, login):
         self.context.setId(login)
 
-    login = property( lambda self: self.context.getId(), _setLogin )
+    login = property(lambda self: self.context.getId(), _setLogin)
 
     def _setPassword(self, password):
         self.context.setPassword(password)
 
-    password = property( None, _setPassword ) # Write-only!
+    password = property(None, _setPassword) # Write-only!
 
     def _setEmail(self, email): # XXX
         self.context._email = email
 
-    email = property( lambda self: self.context._email, _setEmail )
+    email = property(lambda self: self.context._email, _setEmail)
 
     def _setRealName(self, realname): # XXX
         self.context._realname = realname
 
-    realname = property( lambda self: self.context._realname, _setRealName )
+    realname = property(lambda self: self.context._realname, _setRealName)
 
 class DummyAuthenticatonService:
-
-    __implements__ = IAuthenticationService
+    implements(IAuthenticationService)
 
     def __init__(self):
         self._objects = {}
@@ -119,7 +117,6 @@
 class TestMemberAddView(PlacefulSetup, unittest.TestCase, CleanUp):
 
     def setUp(self):
-
         PlacefulSetup.setUp(self)
         provideAdapter(IPrincipal, IMember, DummyMemberAdapter)
         self._authsvc = DummyAuthenticatonService()
@@ -136,64 +133,61 @@
         CleanUp.tearDown(self)
 
     def _getTargetClass(self):
-
         from zopeproducts.NewsSite.register import MemberAddView
 
-        class UnderTest(MemberAddView, AddView):
+        class SubTest(MemberAddView, AddView):
             schema = IMember
-            login = CustomWidget(TextWidget)
-            realname = CustomWidget(TextWidget)
-            email = CustomWidget(TextWidget)
-            password = CustomWidget(TextWidget)
+            login_widget = CustomWidget(TextWidget)
+            realname_widget = CustomWidget(TextWidget)
+            email_widget = CustomWidget(TextWidget)
+            password_widget = CustomWidget(TextWidget)
             _keyword_arguments = _set_after_add = ()
-            _arguments = ( 'login', 'password' )
-            _set_before_add = ( 'email', 'realname' )
+            _arguments = ('login', 'password')
+            _set_before_add = ('email', 'realname')
 
-        return UnderTest
+        return SubTest
 
     def _makeOne(self, context=None, request=None, *args, **kw):
-
         if request is None:
             request = TestRequest()
         return self._getTargetClass()(context, request, *args, **kw)
 
     def test_create(self):
-
         view = self._makeOne()
         user = view.create(login='login', 
                            password='xyzzy'
-                           )
+                          )
         self.failUnless(IPrincipal.isImplementedBy(user))
         self.assertEqual(user.getId(), 'login')
         self.assertEqual(user.getTitle(), '')
         self.assertEqual(user.getDescription(), '')
         self.assertEqual(user.getRoles(), ['Member'])
 
-    def test_createAndAdd(self):
-
-        view = self._makeOne()
-
-        view.createAndAdd({'login' : 'login',
-                           'realname' : 'Real Name',
-                           'email' : 'login@example.com',
-                           'password' : 'xyzzy' })
-
-        user = self._authsvc.getObject('login')
-
-        self.failUnless(IPrincipal.isImplementedBy(user))
-        self.assertEqual(user.getId(), 'login')
-        self.assertEqual(user.getTitle(), '')
-        self.assertEqual(user.getDescription(), '')
-        self.assertEqual(user.getRoles(), ['Member'])
-        self.failUnless(user.validate('xyzzy'))
-
-        member = getAdapter( user, IMember )
-        self.assertEqual(member.login, 'login')
-        self.assertEqual(member.realname, 'Real Name')
-        self.assertEqual(member.email, 'login@example.com')
+##XXX this test is bound to break since the add view does not receive
+## a context. There really should be functional tests for views, not
+## unit tests like these
+##    def test_createAndAdd(self):
+##        view = self._makeOne()
+##        view.createAndAdd({'login' : 'login',
+##                           'realname' : 'Real Name',
+##                           'email' : 'login@example.com',
+##                           'password' : 'xyzzy' })
+
+##        user = self._authsvc.getObject('login')
+
+##        self.failUnless(IPrincipal.isImplementedBy(user))
+##        self.assertEqual(user.getId(), 'login')
+##        self.assertEqual(user.getTitle(), '')
+##        self.assertEqual(user.getDescription(), '')
+##        self.assertEqual(user.getRoles(), ['Member'])
+##        self.failUnless(user.validate('xyzzy'))
+
+##        member = getAdapter(user, IMember)
+##        self.assertEqual(member.login, 'login')
+##        self.assertEqual(member.realname, 'Real Name')
+##        self.assertEqual(member.email, 'login@example.com')
 
     def test_add(self):
-
         ufa = DummyUserFolderAdding()
         view = self._makeOne(ufa)
         user = DummyUser('testing')
@@ -201,11 +195,9 @@
         self.failIf(ufa._things)  # user is added to authsvc, not ctx.
         self.failUnless(self._authsvc.getObject('testing') is user)
 
-
 class TestMemberDataAdapter(PlacefulSetup, unittest.TestCase, CleanUp):
 
     def setUp(self):
-
         PlacefulSetup.setUp(self)
 
     def tearDown(self):
@@ -213,28 +205,22 @@
         CleanUp.tearDown(self)
 
     def _getTargetClass(self):
-
         from zopeproducts.NewsSite.register import MemberDataAdapter
         return MemberDataAdapter
 
     def _makeOne(self, context, *args, **kw):
-
         return self._getTargetClass()(context, *args, **kw)
 
     def test_read(self):
-
         user = DummyUser('readable')
-        adapter = self._makeOne( user )
+        adapter = self._makeOne(user)
         self.assertEqual(adapter.login, 'readable')
 
     def test_write(self):
-
         user = DummyUser('writable')
-        adapter = self._makeOne( user )
-
+        adapter = self._makeOne(user)
         adapter.email = TEST_EMAIL
         self.assertEqual(adapter.email, TEST_EMAIL)
-
         adapter.realname = TEST_REALNAME
         self.assertEqual(adapter.realname, TEST_REALNAME)
 
@@ -243,7 +229,6 @@
     suite.addTest(unittest.makeSuite(TestMemberAddView))
     suite.addTest(unittest.makeSuite(TestMemberDataAdapter))
     return suite
-
 
 if __name__ == '__main__':
     unittest.main()