## $Id: tests.py 12005 2014-11-20 05:40:52Z henrik $ ## ## Copyright (C) 2014 Uli Fouquet & Henrik Bettermann ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## """ Tests for documents. """ from zope.interface.verify import verifyClass, verifyObject from zope.component import createObject from hurry.workflow.interfaces import ( IWorkflowInfo, IWorkflowState, InvalidTransitionError) from waeup.ikoba.documents.interfaces import ( IDocumentsContainer, IDocument) from waeup.ikoba.interfaces import IObjectHistory from waeup.ikoba.documents.container import DocumentsContainer from waeup.ikoba.documents.document import Document from waeup.ikoba.testing import (FunctionalLayer, FunctionalTestCase) class DocumentsContainerTestCase(FunctionalTestCase): layer = FunctionalLayer def test_interfaces(self): # Make sure the correct interfaces are implemented. self.assertTrue( verifyClass( IDocumentsContainer, DocumentsContainer) ) self.assertTrue( verifyObject( IDocumentsContainer, DocumentsContainer()) ) self.assertTrue( verifyClass( IDocument, Document) ) self.assertTrue( verifyObject( IDocument, Document()) ) return def test_addDocument(self): container = DocumentsContainer() document = createObject(u'waeup.Document') document_id = document.document_id container.addDocument(document) self.assertEqual(container[document_id], document) self.assertRaises(TypeError, container.addDocument, object()) self.assertEqual(document_id, 'd123') return def test_document_workflow(self): document = createObject(u'waeup.Document') IWorkflowInfo(document).fireTransition('create') self.assertEqual(IWorkflowState(document).getState(), 'created') IWorkflowInfo(document).fireTransition('submit') self.assertEqual(IWorkflowState(document).getState(), 'submitted') IWorkflowInfo(document).fireTransition('verify') self.assertEqual(IWorkflowState(document).getState(), 'verified') IWorkflowInfo(document).fireTransition('reset2') self.assertEqual(IWorkflowState(document).getState(), 'created') self.assertRaises(InvalidTransitionError, IWorkflowInfo(document).fireTransition, 'verify') IWorkflowInfo(document).fireTransition('submit') IWorkflowInfo(document).fireTransition('reset3') self.assertEqual(IWorkflowState(document).getState(), 'created') return def test_document_history(self): doc = createObject(u'waeup.Document') IWorkflowInfo(doc).fireTransition('create') messages = ' '.join(doc.history.messages) self.assertTrue('Document created by system' in messages) return