import os, sys if __name__ == '__main__': execfile(os.path.join(sys.path[0], 'framework.py')) from Products.CMFPlone.tests import PloneTestCase from unittest import TestSuite, makeSuite from Testing import ZopeTestCase ZopeTestCase.installProduct('PloneSilverCity') ZopeTestCase.installProduct('Zelenium') class testSilverCity(PloneTestCase.PloneTestCase): def afterSetUp(self): self.login() self.portal.portal_quickinstaller.installProduct("PloneSilverCity") self.obj_id = "test_silvercity_object" def _createObject(self): """ Create an object """ self.folder.invokeFactory("Source Code", id=self.obj_id) self.obj = self.folder[self.obj_id] def testCreate(self): """ Test we can create an object """ self._createObject() def testCreateAndEdit(self): """ Test I can create and edit an object """ self._createObject() self.obj.setTitle('A sample object') self.obj.setCode('import urllib; urllib.urlopen("http://www.cbc.ca")') self.obj.setLanguage('Python') self.obj.setDescription("A sample Python script") assert self.obj.Title() == "A sample object" assert self.obj.Description() == "A sample Python script" assert self.obj.getCode() == 'import urllib; urllib.urlopen("http://www.cbc.ca")' def testSetLanguage(self): """ Set some languages, check they work """ succeed = ["Python", "XML"] fail = ["Cobol", "Lisp"] self._createObject() # these ones should succeed for lang in succeed: self.obj.setLanguage(lang) # these ones should fail, but don't is this # a bug in Archetypes? or is it just not meant # to happen for lang in fail: self.assertRaises(ValueError, self.obj.setLanguage, lang) def testSchemaOrder(self): # i found that ATCT randomly moved around my schema # v. annoying, calling finalizeATCTSchema sorted it out self._createObject() fields = [ f.getName() for f in self.obj.Schemata()['default'].fields() ] assert fields # finalizeSchema assert fields[-2] == "relatedItems" # moveField assert fields[3] == "code" def testEdit(self): self._createObject() self.obj.setCode('') self.obj.setLanguage("XML") def testDelete(self): self._createObject() self.folder.manage_delObjects([self.obj.getId(),]) def test_suite(): suite = TestSuite() suite.addTest(makeSuite(testSilverCity)) return suite if __name__ == '__main__': framework()