Commit 4f61c1c7 authored by Hanno Schlichting's avatar Hanno Schlichting

Use a simple stub class instead of a PythonScripts to test OFS.Historical

parent 65ef4d4f
import unittest import unittest
import Testing
import Zope2 import Zope2
Zope2.startup() Zope2.startup()
...@@ -9,37 +8,45 @@ import transaction ...@@ -9,37 +8,45 @@ import transaction
import tempfile import tempfile
import ZODB import ZODB
from OFS.Application import Application from OFS.Application import Application
from Products.PythonScripts.PythonScript import manage_addPythonScript from OFS.History import Historical
from OFS.SimpleItem import SimpleItem
from ZODB.FileStorage import FileStorage from ZODB.FileStorage import FileStorage
class HistoryItem(SimpleItem, Historical):
pass
class HistoryTests(unittest.TestCase): class HistoryTests(unittest.TestCase):
def setUp(self): def setUp(self):
# set up a zodb # set up a zodb
# we can't use DemoStorage here 'cos it doesn't support History # we can't use DemoStorage here 'cos it doesn't support History
self.dir = tempfile.mkdtemp() self.dir = tempfile.mkdtemp()
self.s = FileStorage(os.path.join(self.dir,'testHistory.fs'),create=True) fs_path = os.path.join(self.dir, 'testHistory.fs')
self.s = FileStorage(fs_path, create=True)
self.connection = ZODB.DB(self.s).open() self.connection = ZODB.DB(self.s).open()
r = self.connection.root() r = self.connection.root()
a = Application() a = Application()
r['Application'] = a r['Application'] = a
self.root = a self.root = a
# create a python script # create a python script
manage_addPythonScript(a,'test') a['test'] = HistoryItem()
self.ps = ps = a.test self.hi = hi = a.test
# commit some changes # commit some changes
ps.write('return 1') hi.title = 'First title'
t = transaction.get() t = transaction.get()
# undo note made by Application instantiation above. # undo note made by Application instantiation above.
t.description = None t.description = None
t.note('Change 1') t.note('Change 1')
t.commit() t.commit()
ps.write('return 2') hi.title = 'Second title'
t = transaction.get() t = transaction.get()
t.note('Change 2') t.note('Change 2')
t.commit() t.commit()
ps.write('return 3') hi.title = 'Third title'
t = transaction.get() t = transaction.get()
t.note('Change 3') t.note('Change 3')
t.commit() t.commit()
...@@ -53,9 +60,9 @@ class HistoryTests(unittest.TestCase): ...@@ -53,9 +60,9 @@ class HistoryTests(unittest.TestCase):
del self.connection del self.connection
del self.s del self.s
shutil.rmtree(self.dir) shutil.rmtree(self.dir)
def test_manage_change_history(self): def test_manage_change_history(self):
r = self.ps.manage_change_history() r = self.hi.manage_change_history()
self.assertEqual(len(r),3) # three transactions self.assertEqual(len(r),3) # three transactions
for i in range(3): for i in range(3):
entry = r[i] entry = r[i]
...@@ -63,11 +70,11 @@ class HistoryTests(unittest.TestCase): ...@@ -63,11 +70,11 @@ class HistoryTests(unittest.TestCase):
self.assertEqual(len(entry.keys()),6) self.assertEqual(len(entry.keys()),6)
# the transactions are in newest-first order # the transactions are in newest-first order
self.assertEqual(entry['description'],'Change %i' % (3-i)) self.assertEqual(entry['description'],'Change %i' % (3-i))
self.failUnless('key' in entry) self.failUnless('key' in entry)
# lets not assume the size will stay the same forever # lets not assume the size will stay the same forever
self.failUnless('size' in entry) self.failUnless('size' in entry)
self.failUnless('tid' in entry) self.failUnless('tid' in entry)
self.failUnless('time' in entry) self.failUnless('time' in entry)
if i: if i:
# check times are increasing # check times are increasing
self.failUnless(entry['time']<r[i-1]['time']) self.failUnless(entry['time']<r[i-1]['time'])
...@@ -75,22 +82,19 @@ class HistoryTests(unittest.TestCase): ...@@ -75,22 +82,19 @@ class HistoryTests(unittest.TestCase):
def test_manage_historyCopy(self): def test_manage_historyCopy(self):
# we assume this works 'cos it's tested above # we assume this works 'cos it's tested above
r = self.ps.manage_change_history() r = self.hi.manage_change_history()
# now we do the copy # now we do the copy
self.ps.manage_historyCopy( self.hi.manage_historyCopy(
keys=[r[2]['key']] keys=[r[2]['key']]
) )
# do a commit, just like ZPublisher would # do a commit, just like ZPublisher would
transaction.commit() transaction.commit()
# check the body is as it should be, we assume (hopefully not foolishly) # check the body is as it should be, we assume (hopefully not foolishly)
# that all other attributes will behave the same # that all other attributes will behave the same
self.assertEqual(self.ps._body, self.assertEqual(self.hi.title,
'return 1\n') 'First title')
def test_suite(): def test_suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest( unittest.makeSuite( HistoryTests ) ) suite.addTest(unittest.makeSuite(HistoryTests))
return suite return suite
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment