def test_get_available_filters(self): """get_available_filters returns filters varying on forum acl""" default_acl = { 'can_see_all_threads': False, 'can_see_reports': False, 'can_review_moderated_content': False, } cases = ( ('can_see_all_threads', 'my-threads'), ('can_see_reports', 'reported'), ('can_review_moderated_content', 'moderated-threads'), ) for permission, filter_type in cases: self.override_acl(default_acl) filtering = ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) available_filters = filtering.get_available_filters() available_filters = [f['type'] for f in available_filters] self.assertNotIn(filter_type, available_filters) acl = default_acl.copy() acl[permission] = True self.override_acl(acl) filtering = ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) available_filters = filtering.get_available_filters() available_filters = [f['type'] for f in available_filters] self.assertIn(filter_type, available_filters) self.forum.labels = [ Label(name='Label A', slug='label-a'), Label(name='Label B', slug='label-b'), Label(name='Label C', slug='label-c'), Label(name='Label D', slug='label-d'), ] self.override_acl(default_acl) ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) available_filters = filtering.get_available_filters() available_filters = [f['type'] for f in available_filters] self.assertEqual(len(available_filters), len(self.forum.labels)) for label in self.forum.labels: self.assertIn(label.slug, available_filters)
def test_current(self): """current returns dict with current filter""" self.override_acl({ 'can_see_all_threads': True, 'can_see_reports': True, 'can_review_moderated_content': True, }) test_cases = ( ('my-threads', _("My threads")), ('reported', _("With reported posts")), ('moderated-threads', _("Moderated threads")), ('moderated-posts', _("With moderated posts")), ) for filter_type, name in test_cases: filtering = ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) filtering.clean_kwargs({'show': filter_type}) self.assertEqual(filtering.current['name'], name)
def test_clean_kwargs(self): """clean_kwargs cleans kwargs""" self.override_acl({ 'can_see_all_threads': True, 'can_see_reports': True, 'can_review_moderated_content': True, }) filtering = ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) available_filters = filtering.get_available_filters() available_filters = [f['type'] for f in available_filters] clean_kwargs = filtering.clean_kwargs({'test': 'kwarg'}) self.assertEqual(clean_kwargs, {'test': 'kwarg'}) clean_kwargs = filtering.clean_kwargs({ 'test': 'kwarg', 'show': 'everything-hue-hue', }) self.assertEqual(clean_kwargs, {'test': 'kwarg'}) self.assertFalse(filtering.is_active) self.assertIsNone(filtering.show) for filter_type in available_filters: clean_kwargs = filtering.clean_kwargs({ 'test': 'kwarg', 'show': filter_type, }) self.assertEqual(clean_kwargs, { 'test': 'kwarg', 'show': filter_type, }) self.assertTrue(filtering.is_active) self.assertEqual(filtering.show, filter_type)
def test_choices(self): """choices returns list of dicts with available filters""" self.override_acl({ 'can_see_all_threads': True, 'can_see_reports': True, 'can_review_moderated_content': True, }) test_cases = ( 'my-threads', 'reported', 'moderated-threads', 'moderated-posts', ) for filter_type in test_cases: filtering = ForumFiltering(self.forum, 'misago:forum', { 'forum_id': self.forum.id, 'forum_slug': self.forum.slug, }) filtering.clean_kwargs({'show': filter_type}) choices = [choice['type'] for choice in filtering.choices()] self.assertNotIn(filter_type, choices)