Skip to content

Commit

Permalink
Added tests for filters
Browse files Browse the repository at this point in the history
Ensures tests work ok for both Django 1.2 and Django 1.4
  • Loading branch information
johnsensible committed Nov 21, 2012
1 parent 149f672 commit 63ff40f
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 33 deletions.
3 changes: 2 additions & 1 deletion publish/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
from .models import Publishable
from .actions import publish_selected, delete_selected, undelete_selected

import publish.filters
from publish.filters import register_filters
register_filters()


def _make_form_readonly(form):
Expand Down
3 changes: 2 additions & 1 deletion publish/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,6 @@ def __init__(self, field, request, params, model, model_admin, *arg, **kw):
self.lookup_choices = lst


FieldListFilter.register(is_publishable_filter, PublishableRelatedFieldListFilter, take_priority=True)
def register_filters():
FieldListFilter.register(is_publishable_filter, PublishableRelatedFieldListFilter, take_priority=True)

67 changes: 36 additions & 31 deletions publish/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
_convert_all_published_to_html, undelete_selected
from publish.utils import NestedSet
from publish.signals import pre_publish, post_publish

from publish.filters import PublishableRelatedFieldListFilter


def _get_rendered_content(response):
content = getattr(response, 'rendered_content', None)
Expand Down Expand Up @@ -1463,38 +1464,42 @@ def post_publish_handler(sender, instance, deleted, **kw):


try:
# FilterSpec no longer part of 1.4
from django.contrib.admin.filters import FieldListFilter
except ImportError:
# pre 1.4
from django.contrib.admin.filterspecs import FilterSpec
from publish.admin import PublishableRelatedFilterSpec
class FieldListFilter(object):
@classmethod
def create(cls, field, request, params, model, model_admin, *arg, **kw):
return FilterSpec.create(field, request, params, model, model_admin)

class TestPublishableRelatedFilterSpec(TransactionTestCase):

class TestPublishableRelatedFilterSpec(TransactionTestCase):

def test_overridden_spec(self):
# make sure the publishable filter spec
# gets used when we use a publishable field
class dummy_request(object):
GET = {}

def test_overridden_spec(self):
# make sure the publishable filter spec
# gets used when we use a publishable field
class dummy_request(object):
GET = {}

spec = FilterSpec.create(Page._meta.get_field('authors'), dummy_request, {}, Page, PublishableAdmin)
self.failUnless(isinstance(spec, PublishableRelatedFilterSpec))
spec = FieldListFilter.create(Page._meta.get_field('authors'), dummy_request, {}, Page, PublishableAdmin, None)
self.failUnless(isinstance(spec, PublishableRelatedFieldListFilter))

def test_only_draft_shown(self):
self.author = Author.objects.create(name='author')
self.author.publish()

def test_only_draft_shown(self):
self.author = Author.objects.create(name='author')
self.author.publish()

self.failUnless(2, Author.objects.count())

# make sure the publishable filter spec
# gets used when we use a publishable field
class dummy_request(object):
GET = {}

spec = FilterSpec.create(Page._meta.get_field('authors'), dummy_request, {}, Page, PublishableAdmin)

lookup_choices = spec.lookup_choices
self.failUnlessEqual(1, len(lookup_choices))
pk, label = lookup_choices[0]
self.failUnlessEqual(self.author.id, pk)
except ImportError:
pass
self.failUnless(2, Author.objects.count())

# make sure the publishable filter spec
# gets used when we use a publishable field
class dummy_request(object):
GET = {}

spec = FieldListFilter.create(Page._meta.get_field('authors'), dummy_request, {}, Page, PublishableAdmin, None)

lookup_choices = spec.lookup_choices
self.failUnlessEqual(1, len(lookup_choices))
pk, label = lookup_choices[0]
self.failUnlessEqual(self.author.id, pk)

0 comments on commit 63ff40f

Please sign in to comment.