def testRule(self):
        factory = DescriptorFactory(self.policy)
        descriptor = factory(self.image_content)
        context = getDeployExprContext(self.image_content, self.portal)

        self.assertEqual(self.rules.at_image_content.isValid(self.image_content, context), True)

        descriptor = self.rules.at_image_content.process(descriptor, context)

        self.assertEqual(len(descriptor.getDescriptors()), 2)
        return descriptor
 def addResource(self, obj, type):
     factory = DescriptorFactory( self.policy )
     descriptor = factory( obj )
     context = getDeployExprContext( obj, self.portal)
     descriptor = self.rules[type].process( descriptor, context )
     mastering = self.policy.getContentMastering()
     mastering.setup()
     mastering.cook( descriptor )
     mastering.tearDown()
     rendered = descriptor.getRendered()
     self.resolver.addResource( descriptor )
     return descriptor
    def testContainerRule(self):

        self.rules.manage_addProduct["CMFDeployment"].addATContainerRule(
            id="at_container",
            extension_expression="string:${object/getId}/index.html",
            condition="python: object.portal_type == 'Sample Image Folder'",
            view_method="",
        )

        self.portal._setObject("image_folder", SampleImageSchemaFolder("image_folder"))
        image_folder = self.portal._getOb("image_folder")
        image_folder.invokeFactory("Document", "index_html")

        factory = DescriptorFactory(self.policy)
        context = getDeployExprContext(image_folder, self.portal)

        self.assertEqual(self.rules.at_container.isValid(image_folder, context), True)

        descriptor = factory(image_folder)
        descriptor = self.rules.at_container.process(descriptor, context)

        self.assertEqual(descriptor.getRenderMethod(), "index_html")
        self.assertEqual(len(descriptor.getReverseDependencies()), 2)
        self.assertEqual(descriptor.isGhost(), True)