def initializeStatusCategories(event): """ Initializes the category sets and categories of a category mapper to be used to track "active" workflow states for a membrane type. Triggered when a new membrane type is registered. Defaults to all workflow states being active. """ cat_map = ICategoryMapper(event.tool) cat_set = generateCategorySetIdForType(event.portal_type) cat_map.addCategorySet(cat_set) cat_map.addCategory(cat_set, ACTIVE_STATUS_CATEGORY) states = getAllWFStatesForType(event.tool, event.portal_type) for state in states: cat_map.addToCategory(cat_set, ACTIVE_STATUS_CATEGORY, state)
class TestCategoryMapper(ZopeTestCase.ZopeTestCase): layer = ZCMLLayer def afterSetUp(self): self.obj = Foo() self.cat_map = ICategoryMapper(self.obj) def testAddCategorySet(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.failUnless(self.cat_map.hasCategorySet(cat_set)) self.failUnless(cat_set in self.cat_map.listCategorySets()) def testDelCategorySet(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.failUnless(self.cat_map.hasCategorySet(cat_set)) self.cat_map.delCategorySet(cat_set) self.failIf(self.cat_map.hasCategorySet(cat_set)) self.failUnless(len(self.cat_map.listCategorySets()) == 0) def testAddCategory(self): cat_set1 = 'category_set1' cat_set2 = 'category_set2' cat = 'category' self.cat_map.addCategorySet(cat_set1) self.cat_map.addCategorySet(cat_set2) self.cat_map.addCategory(cat_set1, cat) self.failUnless(self.cat_map.hasCategory(cat_set1, cat)) self.failIf(self.cat_map.hasCategory(cat_set2, cat)) def testMissingCatSetRaisesError(self): self.assertRaises(KeyError, self.cat_map.addToCategory, self.cat_map, 'category_set', 'category') self.assertRaises(KeyError, self.cat_map.removeFromCategory, self.cat_map, 'category_set', 'category') def testMissingCategoryRaisesError(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.assertRaises(KeyError, self.cat_map.addToCategory, self.cat_map, cat_set, 'category') self.assertRaises(KeyError, self.cat_map.removeFromCategory, self.cat_map, cat_set, 'category') def testAddToCategory(self): cat_set = 'category_set' cat1 = 'category1' cat2 = 'category2' datum1 = 'datum1' datum2 = 'datum2' self.cat_map.addCategorySet(cat_set) self.cat_map.addCategory(cat_set, cat1) self.cat_map.addCategory(cat_set, cat2) self.cat_map.addToCategory(cat_set, cat1, datum1) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum1)) self.failIf(self.cat_map.isInCategory(cat_set, cat1, datum2)) self.failIf(self.cat_map.isInCategory(cat_set, cat2, datum1)) self.cat_map.addToCategory(cat_set, cat1, datum2) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum1)) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum2)) self.failUnless(set([datum1, datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat1))) def testRemoveFromCategory(self): cat_set = 'category_set' cat = 'category' datum1 = 'datum1' datum2 = 'datum2' self.cat_map.addCategorySet(cat_set) self.cat_map.addCategory(cat_set, cat) self.cat_map.addToCategory(cat_set, cat, datum1) self.cat_map.addToCategory(cat_set, cat, datum2) self.failUnless(set([datum1, datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat))) self.cat_map.removeFromCategory(cat_set, cat, datum1) self.failIf(self.cat_map.isInCategory(cat_set, cat, datum1)) self.failUnless(self.cat_map.isInCategory(cat_set, cat, datum2)) self.failUnless(set([datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat)))