def test_link_form_fields(self):
        expected_fields = [
            ('no group', 'IBasic.title'),
            ('no group', 'IBasic.description'),
            ('no group', 'url'),
            ('no group', 'IRichMetaData.public'),
            ('no group', 'IRichMetaData.rmMediaType'),
            ('no group', 'IProjectContent.project_featured'),
            (u'Description', 'IRichMetaData.rmAuthor'),
            (u'Description', 'IRichMetaData.rmSubtitle'),
            (u'Publication', 'IRichMetaData.rmPublisher'),
            (u'Publication', 'IRichMetaData.rmPublicationDate'),
            (u'Publication', 'IRichMetaData.rmLocation'),
            (u'Publication', 'IRichMetaData.rmFormat'),
            (u'Tags', 'IRichMetaData.rmTags'),
            (u'Tags', 'IRmGroupAssignable.rmGroup')]

        login(self.portal, self.project_admin.id)

        add_view = self.project.restrictedTraverse("++add++RichLink")
        link_title = u"I’m a very private link"
        add_view.request.form = {
            "form.widgets.IBasic.title": link_title,
            "form.widgets.url": "http://www.ixds.com",
            "form.widgets.IRichMetaData.public": ('false', ),
            "form.widgets.IRichMetaData.rmMediaType": "document",
            "form.widgets.IRichMetaData.rmAuthor": "The Author",
            "form.widgets.IProjectContent.project_featured": ('false', ),
            "form.buttons.save": "Save"}
        add_view.update()

        add_view_fields = list(helpers.fields_from_view(add_view.form_instance))
        self.assertEqual(add_view_fields, expected_fields)

        edit_location = add_view.request.response.getHeader('Location')
        edit_path = add_view.request.physicalPathFromURL(edit_location)
        edit_path[-1] = "@@edit"
        edit_view = self.portal.restrictedTraverse(edit_path)
        edit_view.request['SESSION'] = {}
        edit_view.update()

        edit_view_fields = list(helpers.fields_from_view(edit_view))
        self.assertEqual(edit_view_fields, expected_fields)
    def test_post_form_fields(self):
        expected_fields = [
            ('no group', 'title'),
            ('no group', 'text'),
            ('no group', 'IProjectContent.project_featured')]

        login(self.portal, self.project_admin.id)

        add_view = self.project.restrictedTraverse("++add++ixds.Post")
        add_view.update()

        edit_location = add_view.request.response.getHeader('Location')
        edit_path = add_view.request.physicalPathFromURL(edit_location)
        edit_path[-1] = "@@" + edit_path[-1]

        edit_view = self.portal.restrictedTraverse(edit_path)
        edit_view.request['SESSION'] = {}
        edit_view.update()

        edit_view_fields = list(helpers.fields_from_view(edit_view))
        self.assertEqual(edit_view_fields, expected_fields)