[Testbot] Plone 5.0 - Python 2.7 - Build # 1537 - Still failing! - 9 failure(s)

jenkins at plone.org jenkins at plone.org
Thu Feb 13 16:30:27 UTC 2014


-------------------------------------------------------------------------------
Plone 5.0 - Python 2.7 - Build # 1537 - Still Failing!
-------------------------------------------------------------------------------

http://jenkins.plone.org/job/plone-5.0-python-2.7/1537/


-------------------------------------------------------------------------------
CHANGES
-------------------------------------------------------------------------------

Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T04:37:55-08:00
Author: Andrew Mleczko (amleczko) <andrew at mleczko.net>
Commit: https://github.com/plone/plone.app.contenttypes/commit/cef87588119e4b24f59a47a359c299b0f321628d

backport richtext behavior from Plone5 branch

Files changed:
A plone/app/contenttypes/behaviors/richtext.py
A plone/app/contenttypes/tests/test_behaviors_richtext.py
M plone/app/contenttypes/behaviors/configure.zcml
M plone/app/contenttypes/profiles/default/types/Collection.xml
M plone/app/contenttypes/profiles/default/types/Document.xml
M plone/app/contenttypes/profiles/default/types/Event.xml
M plone/app/contenttypes/profiles/default/types/News_Item.xml
M plone/app/contenttypes/tests/test_document.py
M plone/app/contenttypes/tests/test_news_item.py
D plone/app/contenttypes/schema/document.xml
D plone/app/contenttypes/schema/event.xml
D plone/app/contenttypes/schema/news_item.xml

diff --git a/plone/app/contenttypes/behaviors/configure.zcml b/plone/app/contenttypes/behaviors/configure.zcml
index d15e4c0..350fe48 100644
--- a/plone/app/contenttypes/behaviors/configure.zcml
+++ b/plone/app/contenttypes/behaviors/configure.zcml
@@ -42,6 +42,15 @@
     marker=".collection.ISyndicatableCollection"
     />
 
+  <plone:behavior
+    title="RichText"
+    description="Adds richtext behavior"
+    provides=".richtext.IRichText"
+    factory=".richtext.RichText"
+    for="plone.dexterity.interfaces.IDexterityContent"
+    marker=".richtext.IRichText"
+    />
+
   <utility
       component=".collection.MetaDataFieldsVocabularyFactory"
       name="plone.app.contenttypes.metadatafields" />
@@ -49,4 +58,4 @@
   <adapter factory=".collection.CollectionFeed"
            for=".collection.ISyndicatableCollection" />
 
-</configure>
\ No newline at end of file
+</configure>
diff --git a/plone/app/contenttypes/behaviors/richtext.py b/plone/app/contenttypes/behaviors/richtext.py
new file mode 100644
index 0000000..73e4e57
--- /dev/null
+++ b/plone/app/contenttypes/behaviors/richtext.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+from plone.autoform.interfaces import IFormFieldProvider
+from plone.dexterity.interfaces import IDexterityContent
+from plone.app.textfield import RichText as RichTextField
+from plone.supermodel import model
+from zope.component import adapts
+from zope.interface import alsoProvides, implements
+
+from plone.app.contenttypes import _
+
+
+class IRichText(model.Schema):
+
+    text = RichTextField(
+        title=_(u'Text', default=u'Text'),
+        description=u"",
+        required=False,
+    )
+    model.primary('text')
+
+
+alsoProvides(IRichText, IFormFieldProvider)
+
+
+class RichText(object):
+    implements(IRichText)
+    adapts(IDexterityContent)
+
+    def __init__(self, context):
+        self.context = context
diff --git a/plone/app/contenttypes/profiles/default/types/Collection.xml b/plone/app/contenttypes/profiles/default/types/Collection.xml
index 9ca1a6c..c51276f 100644
--- a/plone/app/contenttypes/profiles/default/types/Collection.xml
+++ b/plone/app/contenttypes/profiles/default/types/Collection.xml
@@ -19,6 +19,7 @@
     <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
     <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
     <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+    <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
     <element value="plone.app.relationfield.behavior.IRelatedItems"/>
   </property>
 
diff --git a/plone/app/contenttypes/profiles/default/types/Document.xml b/plone/app/contenttypes/profiles/default/types/Document.xml
index c77907c..27b774e 100644
--- a/plone/app/contenttypes/profiles/default/types/Document.xml
+++ b/plone/app/contenttypes/profiles/default/types/Document.xml
@@ -24,13 +24,11 @@
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.relationfield.behavior.IRelatedItems"/>
   <element value="plone.app.versioningbehavior.behaviors.IVersionable" />
   <element value="plone.app.contenttypes.behaviors.tableofcontents.ITableOfContents"/>
  </property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:document.xml</property>
  <alias from="(Default)" to="(dynamic view)"/>
  <alias from="edit" to="@@edit"/>
  <alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/profiles/default/types/Event.xml b/plone/app/contenttypes/profiles/default/types/Event.xml
index 0d416a0..9912e42 100644
--- a/plone/app/contenttypes/profiles/default/types/Event.xml
+++ b/plone/app/contenttypes/profiles/default/types/Event.xml
@@ -20,8 +20,6 @@
  <!-- Schema, class and security -->
  <property name="klass">plone.app.contenttypes.content.Event</property>
  <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:event.xml</property>
  <property name="add_permission">plone.app.contenttypes.addEvent</property>
 
  <!-- Enabled behaviors -->
@@ -34,6 +32,7 @@
   <element value="plone.app.event.dx.behaviors.IEventSummary"/>
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
   <element value="plone.app.content.interfaces.INameFromTitle"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
   <element value="plone.app.relationfield.behavior.IRelatedItems"/>
diff --git a/plone/app/contenttypes/profiles/default/types/News_Item.xml b/plone/app/contenttypes/profiles/default/types/News_Item.xml
index 2934368..98c986f 100644
--- a/plone/app/contenttypes/profiles/default/types/News_Item.xml
+++ b/plone/app/contenttypes/profiles/default/types/News_Item.xml
@@ -21,6 +21,7 @@
  <property name="klass">plone.app.contenttypes.content.NewsItem</property>
  <property name="behaviors">
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.content.interfaces.INameFromTitle"/>
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
@@ -28,9 +29,6 @@
   <element value="plone.app.contenttypes.behaviors.leadimage.ILeadImage"/>
   <element value="plone.app.versioningbehavior.behaviors.IVersionable" />
  </property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:news_item.xml</property>
  <alias from="(Default)" to="(dynamic view)"/>
  <alias from="edit" to="@@edit"/>
  <alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/schema/document.xml b/plone/app/contenttypes/schema/document.xml
deleted file mode 100644
index 524fc38..0000000
--- a/plone/app/contenttypes/schema/document.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
-       xmlns:marshal="http://namespaces.plone.org/supermodel/marshal"
-       xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
-       xmlns:i18n="http://xml.zope.org/namespaces/i18n">
-    <schema>
-      <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true"
-             marshal:primary="true">
-        <description />
-        <required>False</required>
-        <title i18n:translate="">Text</title>
-      </field>
-    </schema>
-</model>
diff --git a/plone/app/contenttypes/schema/event.xml b/plone/app/contenttypes/schema/event.xml
deleted file mode 100644
index f76eaf8..0000000
--- a/plone/app/contenttypes/schema/event.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema">
-    <schema>
-    </schema>
-</model>
\ No newline at end of file
diff --git a/plone/app/contenttypes/schema/news_item.xml b/plone/app/contenttypes/schema/news_item.xml
deleted file mode 100644
index 3a0fdc7..0000000
--- a/plone/app/contenttypes/schema/news_item.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
-       xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
-       xmlns:i18n="http://xml.zope.org/namespaces/i18n"
-       i18n:domain="plone">
-  <schema>
-    <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true">
-      <description />
-      <required>False</required>
-      <title>Text</title>
-    </field>
-    <!--
-    <field name="image" type="plone.namedfile.field.NamedBlobImage">
-      <description i18n:translate="help_news_image">Will be shown in the news listing, and in the news item itself. Image will be scaled to a sensible size.</description>
-      <required>False</required>
-      <title i18n:translate="label_news_image">Image</title>
-    </field>
-    <field name="image_caption" type="zope.schema.TextLine" indexer:searchable="true">
-      <description />
-      <required>False</required>
-      <title i18n:translate="label_image_caption">Image Caption</title>
-    </field>
-    -->
-  </schema>
-</model>
diff --git a/plone/app/contenttypes/tests/test_behaviors_richtext.py b/plone/app/contenttypes/tests/test_behaviors_richtext.py
new file mode 100644
index 0000000..9f0fd20
--- /dev/null
+++ b/plone/app/contenttypes/tests/test_behaviors_richtext.py
@@ -0,0 +1,61 @@
+import unittest2 as unittest
+
+from Products.CMFCore.utils import getToolByName
+from plone.app.dexterity.testing import DEXTERITY_INTEGRATION_TESTING
+from plone.app.testing import TEST_USER_ID, setRoles
+from plone.app.testing import SITE_OWNER_NAME
+from plone.app.testing import SITE_OWNER_PASSWORD
+from plone.testing.z2 import Browser
+from plone.dexterity.fti import DexterityFTI
+
+from plone.app.contenttypes.behaviors.richtext import IRichText
+
+
+class RichTextBase:
+    # subclass here
+    _behaviors = None
+    _portal_type = None
+
+    def _setupFTI(self):
+        fti = DexterityFTI(self._portal_type)
+        self.portal.portal_types._setObject(self._portal_type, fti)
+        fti.klass = 'plone.dexterity.content.Item'
+        fti.behaviors = self._behaviors
+
+
+class RichTextBehaviorTests(RichTextBase, unittest.TestCase):
+    """ basic use cases and tests for richtext behavior"""
+
+    layer = DEXTERITY_INTEGRATION_TESTING
+
+    _behaviors = (
+        'plone.app.contenttypes.behaviors.richtext.IRichText',)
+    _portal_type = 'SomeDocument'
+
+    def setUp(self):
+        app = self.layer['app']
+        self.portal = self.layer['portal']
+        self.wf = getToolByName(self.portal, "portal_workflow")
+        self.portal.acl_users._doAddUser('user_std', 'secret', ['Member'], [])
+        self.portal_url = self.portal.absolute_url()
+        setRoles(self.portal, TEST_USER_ID, ['Manager'])
+        self._setupFTI()
+        self.portal.invokeFactory(self._portal_type, 'doc1')
+        setRoles(self.portal, TEST_USER_ID, ['Member'])
+        import transaction
+        transaction.commit()
+        # Set up browser
+        self.browser = Browser(app)
+        self.browser.handleErrors = False
+        self.browser.addHeader(
+            'Authorization',
+            'Basic %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
+        )
+
+    def test_richtext_behavior(self):
+        IRichText.providedBy(self.portal.doc1)
+
+
+def test_suite():
+    from unittest import defaultTestLoader
+    return defaultTestLoader.loadTestsFromName(__name__)
diff --git a/plone/app/contenttypes/tests/test_document.py b/plone/app/contenttypes/tests/test_document.py
index 486faa5..405b7c9 100644
--- a/plone/app/contenttypes/tests/test_document.py
+++ b/plone/app/contenttypes/tests/test_document.py
@@ -109,7 +109,7 @@ def test_add_document(self):
             .value = "My document"
         self.browser.getControl(name='form.widgets.IDublinCore.description')\
             .value = "This is my document."
-        self.browser.getControl(name='form.widgets.text')\
+        self.browser.getControl(name='form.widgets.IRichText.text')\
             .value = "Lorem Ipsum"
         self.browser.getControl('Save').click()
         self.assertTrue(self.browser.url.endswith('my-document/view'))
diff --git a/plone/app/contenttypes/tests/test_news_item.py b/plone/app/contenttypes/tests/test_news_item.py
index 9985e81..c810cac 100644
--- a/plone/app/contenttypes/tests/test_news_item.py
+++ b/plone/app/contenttypes/tests/test_news_item.py
@@ -136,7 +136,7 @@ def test_add_news_item(self):
             .value = "My news item"
         self.browser.getControl(name='form.widgets.IDublinCore.description')\
             .value = "This is my news item."
-        self.browser.getControl(name='form.widgets.text')\
+        self.browser.getControl(name='form.widgets.IRichText.text')\
             .value = "Lorem Ipsum"
         self.browser.getControl('Save').click()
 


Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T06:05:34-08:00
Author: Philip Bauer (pbauer) <bauer at starzel.de>
Commit: https://github.com/plone/plone.app.contenttypes/commit/a76ffc32766e7849023f32ba777f25ad173db123

Merge pull request #120 from plone/richtext-behavior

backport richtext behavior from Plone5 branch

Files changed:
A plone/app/contenttypes/behaviors/richtext.py
A plone/app/contenttypes/tests/test_behaviors_richtext.py
M plone/app/contenttypes/behaviors/configure.zcml
M plone/app/contenttypes/profiles/default/types/Collection.xml
M plone/app/contenttypes/profiles/default/types/Document.xml
M plone/app/contenttypes/profiles/default/types/Event.xml
M plone/app/contenttypes/profiles/default/types/News_Item.xml
M plone/app/contenttypes/tests/test_document.py
M plone/app/contenttypes/tests/test_news_item.py
D plone/app/contenttypes/schema/document.xml
D plone/app/contenttypes/schema/event.xml
D plone/app/contenttypes/schema/news_item.xml

diff --git a/plone/app/contenttypes/behaviors/configure.zcml b/plone/app/contenttypes/behaviors/configure.zcml
index d15e4c0..350fe48 100644
--- a/plone/app/contenttypes/behaviors/configure.zcml
+++ b/plone/app/contenttypes/behaviors/configure.zcml
@@ -42,6 +42,15 @@
     marker=".collection.ISyndicatableCollection"
     />
 
+  <plone:behavior
+    title="RichText"
+    description="Adds richtext behavior"
+    provides=".richtext.IRichText"
+    factory=".richtext.RichText"
+    for="plone.dexterity.interfaces.IDexterityContent"
+    marker=".richtext.IRichText"
+    />
+
   <utility
       component=".collection.MetaDataFieldsVocabularyFactory"
       name="plone.app.contenttypes.metadatafields" />
@@ -49,4 +58,4 @@
   <adapter factory=".collection.CollectionFeed"
            for=".collection.ISyndicatableCollection" />
 
-</configure>
\ No newline at end of file
+</configure>
diff --git a/plone/app/contenttypes/behaviors/richtext.py b/plone/app/contenttypes/behaviors/richtext.py
new file mode 100644
index 0000000..73e4e57
--- /dev/null
+++ b/plone/app/contenttypes/behaviors/richtext.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+from plone.autoform.interfaces import IFormFieldProvider
+from plone.dexterity.interfaces import IDexterityContent
+from plone.app.textfield import RichText as RichTextField
+from plone.supermodel import model
+from zope.component import adapts
+from zope.interface import alsoProvides, implements
+
+from plone.app.contenttypes import _
+
+
+class IRichText(model.Schema):
+
+    text = RichTextField(
+        title=_(u'Text', default=u'Text'),
+        description=u"",
+        required=False,
+    )
+    model.primary('text')
+
+
+alsoProvides(IRichText, IFormFieldProvider)
+
+
+class RichText(object):
+    implements(IRichText)
+    adapts(IDexterityContent)
+
+    def __init__(self, context):
+        self.context = context
diff --git a/plone/app/contenttypes/profiles/default/types/Collection.xml b/plone/app/contenttypes/profiles/default/types/Collection.xml
index 9ca1a6c..c51276f 100644
--- a/plone/app/contenttypes/profiles/default/types/Collection.xml
+++ b/plone/app/contenttypes/profiles/default/types/Collection.xml
@@ -19,6 +19,7 @@
     <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
     <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
     <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+    <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
     <element value="plone.app.relationfield.behavior.IRelatedItems"/>
   </property>
 
diff --git a/plone/app/contenttypes/profiles/default/types/Document.xml b/plone/app/contenttypes/profiles/default/types/Document.xml
index c77907c..27b774e 100644
--- a/plone/app/contenttypes/profiles/default/types/Document.xml
+++ b/plone/app/contenttypes/profiles/default/types/Document.xml
@@ -24,13 +24,11 @@
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.relationfield.behavior.IRelatedItems"/>
   <element value="plone.app.versioningbehavior.behaviors.IVersionable" />
   <element value="plone.app.contenttypes.behaviors.tableofcontents.ITableOfContents"/>
  </property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:document.xml</property>
  <alias from="(Default)" to="(dynamic view)"/>
  <alias from="edit" to="@@edit"/>
  <alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/profiles/default/types/Event.xml b/plone/app/contenttypes/profiles/default/types/Event.xml
index 0d416a0..9912e42 100644
--- a/plone/app/contenttypes/profiles/default/types/Event.xml
+++ b/plone/app/contenttypes/profiles/default/types/Event.xml
@@ -20,8 +20,6 @@
  <!-- Schema, class and security -->
  <property name="klass">plone.app.contenttypes.content.Event</property>
  <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:event.xml</property>
  <property name="add_permission">plone.app.contenttypes.addEvent</property>
 
  <!-- Enabled behaviors -->
@@ -34,6 +32,7 @@
   <element value="plone.app.event.dx.behaviors.IEventSummary"/>
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
   <element value="plone.app.content.interfaces.INameFromTitle"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
   <element value="plone.app.relationfield.behavior.IRelatedItems"/>
diff --git a/plone/app/contenttypes/profiles/default/types/News_Item.xml b/plone/app/contenttypes/profiles/default/types/News_Item.xml
index 2934368..98c986f 100644
--- a/plone/app/contenttypes/profiles/default/types/News_Item.xml
+++ b/plone/app/contenttypes/profiles/default/types/News_Item.xml
@@ -21,6 +21,7 @@
  <property name="klass">plone.app.contenttypes.content.NewsItem</property>
  <property name="behaviors">
   <element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
+  <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
   <element value="plone.app.content.interfaces.INameFromTitle"/>
   <element value="plone.app.dexterity.behaviors.discussion.IAllowDiscussion"/>
   <element value="plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation"/>
@@ -28,9 +29,6 @@
   <element value="plone.app.contenttypes.behaviors.leadimage.ILeadImage"/>
   <element value="plone.app.versioningbehavior.behaviors.IVersionable" />
  </property>
- <property name="schema"></property>
- <property name="model_source"></property>
- <property name="model_file">plone.app.contenttypes.schema:news_item.xml</property>
  <alias from="(Default)" to="(dynamic view)"/>
  <alias from="edit" to="@@edit"/>
  <alias from="sharing" to="@@sharing"/>
diff --git a/plone/app/contenttypes/schema/document.xml b/plone/app/contenttypes/schema/document.xml
deleted file mode 100644
index 524fc38..0000000
--- a/plone/app/contenttypes/schema/document.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
-       xmlns:marshal="http://namespaces.plone.org/supermodel/marshal"
-       xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
-       xmlns:i18n="http://xml.zope.org/namespaces/i18n">
-    <schema>
-      <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true"
-             marshal:primary="true">
-        <description />
-        <required>False</required>
-        <title i18n:translate="">Text</title>
-      </field>
-    </schema>
-</model>
diff --git a/plone/app/contenttypes/schema/event.xml b/plone/app/contenttypes/schema/event.xml
deleted file mode 100644
index f76eaf8..0000000
--- a/plone/app/contenttypes/schema/event.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema">
-    <schema>
-    </schema>
-</model>
\ No newline at end of file
diff --git a/plone/app/contenttypes/schema/news_item.xml b/plone/app/contenttypes/schema/news_item.xml
deleted file mode 100644
index 3a0fdc7..0000000
--- a/plone/app/contenttypes/schema/news_item.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<model xmlns="http://namespaces.plone.org/supermodel/schema"
-       xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
-       xmlns:i18n="http://xml.zope.org/namespaces/i18n"
-       i18n:domain="plone">
-  <schema>
-    <field name="text" type="plone.app.textfield.RichText" indexer:searchable="true">
-      <description />
-      <required>False</required>
-      <title>Text</title>
-    </field>
-    <!--
-    <field name="image" type="plone.namedfile.field.NamedBlobImage">
-      <description i18n:translate="help_news_image">Will be shown in the news listing, and in the news item itself. Image will be scaled to a sensible size.</description>
-      <required>False</required>
-      <title i18n:translate="label_news_image">Image</title>
-    </field>
-    <field name="image_caption" type="zope.schema.TextLine" indexer:searchable="true">
-      <description />
-      <required>False</required>
-      <title i18n:translate="label_image_caption">Image Caption</title>
-    </field>
-    -->
-  </schema>
-</model>
diff --git a/plone/app/contenttypes/tests/test_behaviors_richtext.py b/plone/app/contenttypes/tests/test_behaviors_richtext.py
new file mode 100644
index 0000000..9f0fd20
--- /dev/null
+++ b/plone/app/contenttypes/tests/test_behaviors_richtext.py
@@ -0,0 +1,61 @@
+import unittest2 as unittest
+
+from Products.CMFCore.utils import getToolByName
+from plone.app.dexterity.testing import DEXTERITY_INTEGRATION_TESTING
+from plone.app.testing import TEST_USER_ID, setRoles
+from plone.app.testing import SITE_OWNER_NAME
+from plone.app.testing import SITE_OWNER_PASSWORD
+from plone.testing.z2 import Browser
+from plone.dexterity.fti import DexterityFTI
+
+from plone.app.contenttypes.behaviors.richtext import IRichText
+
+
+class RichTextBase:
+    # subclass here
+    _behaviors = None
+    _portal_type = None
+
+    def _setupFTI(self):
+        fti = DexterityFTI(self._portal_type)
+        self.portal.portal_types._setObject(self._portal_type, fti)
+        fti.klass = 'plone.dexterity.content.Item'
+        fti.behaviors = self._behaviors
+
+
+class RichTextBehaviorTests(RichTextBase, unittest.TestCase):
+    """ basic use cases and tests for richtext behavior"""
+
+    layer = DEXTERITY_INTEGRATION_TESTING
+
+    _behaviors = (
+        'plone.app.contenttypes.behaviors.richtext.IRichText',)
+    _portal_type = 'SomeDocument'
+
+    def setUp(self):
+        app = self.layer['app']
+        self.portal = self.layer['portal']
+        self.wf = getToolByName(self.portal, "portal_workflow")
+        self.portal.acl_users._doAddUser('user_std', 'secret', ['Member'], [])
+        self.portal_url = self.portal.absolute_url()
+        setRoles(self.portal, TEST_USER_ID, ['Manager'])
+        self._setupFTI()
+        self.portal.invokeFactory(self._portal_type, 'doc1')
+        setRoles(self.portal, TEST_USER_ID, ['Member'])
+        import transaction
+        transaction.commit()
+        # Set up browser
+        self.browser = Browser(app)
+        self.browser.handleErrors = False
+        self.browser.addHeader(
+            'Authorization',
+            'Basic %s:%s' % (SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)
+        )
+
+    def test_richtext_behavior(self):
+        IRichText.providedBy(self.portal.doc1)
+
+
+def test_suite():
+    from unittest import defaultTestLoader
+    return defaultTestLoader.loadTestsFromName(__name__)
diff --git a/plone/app/contenttypes/tests/test_document.py b/plone/app/contenttypes/tests/test_document.py
index 486faa5..405b7c9 100644
--- a/plone/app/contenttypes/tests/test_document.py
+++ b/plone/app/contenttypes/tests/test_document.py
@@ -109,7 +109,7 @@ def test_add_document(self):
             .value = "My document"
         self.browser.getControl(name='form.widgets.IDublinCore.description')\
             .value = "This is my document."
-        self.browser.getControl(name='form.widgets.text')\
+        self.browser.getControl(name='form.widgets.IRichText.text')\
             .value = "Lorem Ipsum"
         self.browser.getControl('Save').click()
         self.assertTrue(self.browser.url.endswith('my-document/view'))
diff --git a/plone/app/contenttypes/tests/test_news_item.py b/plone/app/contenttypes/tests/test_news_item.py
index 9985e81..c810cac 100644
--- a/plone/app/contenttypes/tests/test_news_item.py
+++ b/plone/app/contenttypes/tests/test_news_item.py
@@ -136,7 +136,7 @@ def test_add_news_item(self):
             .value = "My news item"
         self.browser.getControl(name='form.widgets.IDublinCore.description')\
             .value = "This is my news item."
-        self.browser.getControl(name='form.widgets.text')\
+        self.browser.getControl(name='form.widgets.IRichText.text')\
             .value = "Lorem Ipsum"
         self.browser.getControl('Save').click()
 


Repository: plone.app.contenttypes
Branch: refs/heads/master
Date: 2014-02-13T07:44:08-08:00
Author: Bo Simonsen (bosim) <bo at geekworld.dk>
Commit: https://github.com/plone/plone.app.contenttypes/commit/7182d5aa99a4f7617d9f5d55ddc7116c35975a55

Added condition on Archetypes warning viewlet to ensure the product will work for Dexterity only sites.

Files changed:
M plone/app/contenttypes/browser/configure.zcml

diff --git a/plone/app/contenttypes/browser/configure.zcml b/plone/app/contenttypes/browser/configure.zcml
index f2543b6..cad2eab 100644
--- a/plone/app/contenttypes/browser/configure.zcml
+++ b/plone/app/contenttypes/browser/configure.zcml
@@ -2,6 +2,7 @@
   xmlns="http://namespaces.zope.org/zope"
   xmlns:browser="http://namespaces.zope.org/browser"
   xmlns:plone="http://namespaces.plone.org/plone"
+  xmlns:zcml="http://namespaces.zope.org/zcml"
   i18n_domain="plone">
 
   <include package="plone.app.contentmenu" />
@@ -241,15 +242,17 @@
     allowed_interface="plone.app.contenttypes.browser.utils.IUtils"
     />
 
-  <browser:viewlet
-    name="archetypes_warning_viewlet"
-    for="Products.Archetypes.interfaces.base.IBaseObject"
-    manager="plone.app.layout.viewlets.interfaces.IAboveContent"
-    class=".viewlets.ATWarningViewlet"
-    template="templates/archetypes_warning_viewlet.pt"
-    layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
-    permission="cmf.ModifyPortalContent" />
-
+  <configure zcml:condition="installed Products.Archetypes">
+    <browser:viewlet
+      name="archetypes_warning_viewlet"
+      for="Products.Archetypes.interfaces.base.IBaseObject"
+      manager="plone.app.layout.viewlets.interfaces.IAboveContent"
+      class=".viewlets.ATWarningViewlet"
+      template="templates/archetypes_warning_viewlet.pt"
+      layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
+      permission="cmf.ModifyPortalContent"
+      />
+  </configure>
   <!-- Query string widget -->
   <adapter factory=".widgets.QueryStringFieldWidget" />
 




-------------------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CHANGES.log
Type: application/octet-stream
Size: 28874 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140213/07b7ee33/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build.log
Type: application/octet-stream
Size: 136685 bytes
Desc: not available
URL: <http://lists.plone.org/pipermail/plone-testbot/attachments/20140213/07b7ee33/attachment-0003.obj>


More information about the Testbot mailing list