def test_filter(self): """ Filter items from an enumeration based on a predicate, ignoring hidden items. """ enum = Enum( 'doc', [EnumItem(u'1', u'Option One', a=1), EnumItem(u'2', u'Option Two', a=2, b=20, hidden=True), EnumItem(u'3', u'Option Three', a=3, b=30), EnumItem(u'4', u'Option Four', a=4), EnumItem(u'5', u'Option Five', a=5)]) self.assertThat( filter_enum(methodcaller('get', 'b'), enum), After(list, MatchesListwise([ MatchesAll( MatchesStructure( value=Equals(u'3'), desc=Equals(u'Option Three'), hidden=Equals(False)), After(lambda ei: sorted(ei.items()), Equals([('a', 3), ('b', 30)])))])))
def test_stay_hidden(self): """ Items that are hidden are not accidentally resurrected. """ enum = Enum( 'doc', [EnumItem(u'1', u'Option One'), EnumItem(u'2', u'Option Two', hidden=True)]) self.assertThat( list(filter_enum(methodcaller('get', 'hidden'), enum)), Equals([]))