Changeset 1563 in products
- Timestamp:
- Jan 15, 2010 9:30:53 PM (14 years ago)
- Location:
- quintagroup.transmogrifier/trunk/quintagroup/transmogrifier
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/configure.zcml
r1469 r1563 124 124 component=".interfacemanager.InterfacesImporterSection" 125 125 name="quintagroup.transmogrifier.interfacesimporter" 126 /> 127 128 <utility 129 component=".portlets.PortletsExporterSection" 130 name="quintagroup.transmogrifier.portletsexporter" 131 /> 132 133 <utility 134 component=".portlets.PortletsImporterSection" 135 name="quintagroup.transmogrifier.portletsimporter" 126 136 /> 127 137 -
quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/tests.py
r1539 r1563 57 57 58 58 from Products.CMFCore import utils 59 def getToolByName(context, tool_id ):59 def getToolByName(context, tool_id, default=None): 60 60 return context 61 61 utils.getToolByName = getToolByName … … 1026 1026 name=u'quintagroup.transmogrifier.tests.interfacemanagersource') 1027 1027 1028 def portletsSetUp(test): 1029 sectionsSetUp(test) 1030 1031 from zope.interface import Interface 1032 from zope.annotation.interfaces import IAttributeAnnotatable 1033 from plone.portlets.interfaces import ILocalPortletAssignable 1034 1035 # this bases class adds __of__ method 1036 from Acquisition import Implicit 1037 1038 class MockPortal(Implicit): 1039 implements(IAttributeAnnotatable, ILocalPortletAssignable) 1040 1041 _last_path = None 1042 def unrestrictedTraverse(self, path, default): 1043 if path[0] == '/': 1044 return default # path is absolute 1045 if isinstance(path, unicode): 1046 return default 1047 if path == 'not/existing/bar': 1048 return default 1049 if path.endswith('/notassignable'): 1050 return object() 1051 self._last_path = path 1052 return self 1053 1054 def getPhysicalPath(self): 1055 return [''] + self._last_path.split('/') 1056 1057 updated = () 1058 def _updateProperty(self, id, value): 1059 self.updated += ((self._last_path, id, value)) 1060 1061 portal = MockPortal() 1062 test.globs['plone'] = portal 1063 test.globs['transmogrifier'].context = test.globs['plone'] 1064 1065 class PortletsSource(SampleSource): 1066 classProvides(ISectionBlueprint) 1067 implements(ISection) 1068 1069 def __init__(self, *args, **kw): 1070 super(PortletsSource, self).__init__(*args, **kw) 1071 self.sample = ( 1072 dict(), 1073 dict(_path='not/existing/bar'), 1074 dict(_path='spam/eggs/notassignable'), 1075 dict(_path='assignable'), 1076 ) 1077 1078 provideUtility(PortletsSource, 1079 name=u'quintagroup.transmogrifier.tests.portletssource') 1080 1081 # prepare the one portlet for testing 1082 from zope.interface import alsoProvides 1083 from zope.component import getUtility, getMultiAdapter 1084 from zope.component.interfaces import IFactory 1085 from zope.component.factory import Factory 1086 1087 from plone.portlets.manager import PortletManager 1088 from plone.portlets.interfaces import IPortletManager, IPortletType, \ 1089 IPortletAssignmentMapping 1090 from plone.portlets.registration import PortletType 1091 1092 from plone.app.portlets.assignable import localPortletAssignmentMappingAdapter 1093 from plone.app.portlets.interfaces import IPortletTypeInterface 1094 # from plone.app.portlets.browser.interfaces import IPortletAdding 1095 from plone.app.portlets.portlets.rss import IRSSPortlet, Assignment #, Renderer, AddForm, EditForm 1096 1097 # register portlet manager and assignment mapping adapter 1098 manager = PortletManager() 1099 provideUtility(manager, IPortletManager, name='plone.leftcolumn') 1100 provideAdapter(localPortletAssignmentMappingAdapter) 1101 mapping = getMultiAdapter((portal, manager), IPortletAssignmentMapping) 1102 1103 # register portlet (this is what plone:portlet zcml directive does) 1104 PORTLET_NAME = 'portlets.rss' 1105 alsoProvides(IRSSPortlet, IPortletTypeInterface) 1106 provideUtility(provides=IPortletTypeInterface, name=PORTLET_NAME, component=IRSSPortlet) 1107 provideUtility(provides=IFactory, name=PORTLET_NAME, component=Factory(Assignment)) 1108 1109 # register a portlet type (this is what <portlet /> element in portlets.xml 1110 # does) 1111 portlet = PortletType() 1112 portlet.title = 'RSS Feed' 1113 portlet.description = 'A portlet which can receive and render an RSS feed.' 1114 portlet.addview = PORTLET_NAME 1115 portlet.for_ = [Interface] 1116 provideUtility(component=portlet, provides=IPortletType, 1117 name=PORTLET_NAME) 1118 1119 # add a portlet and configure it (this is done on @@manage-portlets view) 1120 assignment = getUtility(IFactory, name=PORTLET_NAME)() 1121 mapping['rss'] = assignment 1122 portlet_interface = getUtility(IPortletTypeInterface, name=PORTLET_NAME) 1123 data = { 1124 'portlet_title': u'RSS feed', 1125 'count': 10, 1126 'url': u'http://sumno.com/feeds/main-page/', 1127 'timeout': 60 1128 } 1129 for k, v in data.items(): 1130 field = portlet_interface.get(k) 1131 field = field.bind(assignment) 1132 field.validate(v) 1133 field.set(assignment, v) 1134 1135 # register adapter for portlet assignment export/import 1136 from plone.app.portlets.exportimport.portlets import PropertyPortletAssignmentExportImportHandler 1137 provideAdapter(PropertyPortletAssignmentExportImportHandler) 1028 1138 1029 1139 def test_suite(): … … 1073 1183 'interfacemanager.txt', 1074 1184 setUp=interfaceManagerSetUp, tearDown=tearDown), 1185 doctest.DocFileSuite( 1186 'portlets.txt', 1187 setUp=portletsSetUp, tearDown=tearDown), 1075 1188 )) 1076 1189 return suite
Note: See TracChangeset
for help on using the changeset viewer.