make featured default for webapps listing pages
This commit is contained in:
Родитель
1e5908a5af
Коммит
377d5895dc
|
@ -12,7 +12,7 @@ from django.utils import http as urllib
|
|||
from jingo.helpers import datetime as datetime_filter
|
||||
import mock
|
||||
from nose import SkipTest
|
||||
from nose.tools import eq_, assert_raises
|
||||
from nose.tools import eq_, assert_raises, nottest
|
||||
from pyquery import PyQuery as pq
|
||||
|
||||
import amo
|
||||
|
@ -32,6 +32,30 @@ from translations.query import order_by_translation
|
|||
from versions.models import Version
|
||||
|
||||
|
||||
@nottest
|
||||
def test_listing_sort(self, sort, key=None, reverse=True, sel_class='opt'):
|
||||
r = self.client.get(urlparams(self.url, sort=sort))
|
||||
eq_(r.status_code, 200)
|
||||
sel = pq(r.content)('#sorter ul > li.selected')
|
||||
eq_(sel.find('a').attr('class'), sel_class)
|
||||
eq_(r.context['sorting'], sort)
|
||||
a = r.context['addons'].object_list
|
||||
if key:
|
||||
eq_(list(a), sorted(a, key=lambda x: getattr(x, key), reverse=reverse))
|
||||
|
||||
|
||||
@nottest
|
||||
def test_default_sort(self, sort, key=None):
|
||||
r = self.client.get(self.url)
|
||||
eq_(r.status_code, 200)
|
||||
eq_(r.context['sorting'], sort)
|
||||
|
||||
r = self.client.get(urlparams(self.url, sort='xxx'))
|
||||
eq_(r.status_code, 200)
|
||||
eq_(r.context['sorting'], sort)
|
||||
test_listing_sort(self, sort, key)
|
||||
|
||||
|
||||
class ExtensionTestCase(amo.tests.ESTestCase):
|
||||
es = True
|
||||
|
||||
|
@ -310,11 +334,6 @@ class TestThemes(amo.tests.TestCase):
|
|||
category.save()
|
||||
self.url = reverse('browse.themes')
|
||||
|
||||
def test_default_sort(self):
|
||||
"""Default sort should be by featured."""
|
||||
response = self.client.get(self.url)
|
||||
eq_(response.context['sorting'], 'users')
|
||||
|
||||
def test_unreviewed(self):
|
||||
pop = urlparams(self.url, sort='popular')
|
||||
|
||||
|
@ -325,41 +344,41 @@ class TestThemes(amo.tests.TestCase):
|
|||
response = self.client.get(pop)
|
||||
eq_(len(response.context['addons'].object_list), 2)
|
||||
|
||||
def _get_sort(self, sort, key=None, reverse=False, sel_class='opt'):
|
||||
r = self.client.get(urlparams(self.url, sort=sort))
|
||||
sel = pq(r.content)('#sorter ul > li.selected')
|
||||
eq_(sel.find('a').attr('class'), sel_class)
|
||||
eq_(r.context['sorting'], sort)
|
||||
a = r.context['addons'].object_list
|
||||
ids = list(a)
|
||||
eq_(ids, sorted(a, key=lambda x: getattr(x, key), reverse=reverse))
|
||||
def test_default_sort(self):
|
||||
test_default_sort(self, 'users', 'average_daily_users')
|
||||
|
||||
def test_bad_sort(self):
|
||||
r = self.client.get(urlparams(self.url, sort='xxx'))
|
||||
eq_(r.status_code, 200)
|
||||
eq_(r.context['sorting'], 'users')
|
||||
|
||||
def test_users_sort(self):
|
||||
ids = self._get_sort('users', 'average_daily_users', reverse=True)
|
||||
test_listing_sort(self, 'users', 'average_daily_users')
|
||||
|
||||
def test_rating_sort(self):
|
||||
ids = self._get_sort('rating', 'bayesian_rating', reverse=True)
|
||||
test_listing_sort(self, 'rating', 'bayesian_rating')
|
||||
|
||||
def test_newest_sort(self):
|
||||
ids = self._get_sort('created', 'created', reverse=True)
|
||||
test_listing_sort(self, 'created', 'created')
|
||||
|
||||
def test_name_sort(self):
|
||||
ids = self._get_sort('name', 'name', sel_class='extra-opt')
|
||||
test_listing_sort(self, 'name', 'name', reverse=False,
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_featured_sort(self):
|
||||
ids = self._get_sort('featured', sel_class='extra-opt')
|
||||
test_listing_sort(self, 'featured', reverse=False,
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_downloads_sort(self):
|
||||
ids = self._get_sort('popular', 'weekly_downloads', reverse=True,
|
||||
sel_class='extra-opt')
|
||||
test_listing_sort(self, 'popular', 'weekly_downloads',
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_updated_sort(self):
|
||||
ids = self._get_sort('updated', 'last_updated', reverse=True,
|
||||
sel_class='extra-opt')
|
||||
test_listing_sort(self, 'updated', 'last_updated',
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_hotness_sort(self):
|
||||
ids = self._get_sort('hotness', 'hotness', reverse=True,
|
||||
sel_class='extra-opt')
|
||||
def test_upandcoming_sort(self):
|
||||
test_listing_sort(self, 'hotness', 'hotness', sel_class='extra-opt')
|
||||
|
||||
def test_category_sidebar(self):
|
||||
c = Category.objects.filter(weight__gte=0).values_list('id', flat=True)
|
||||
|
|
|
@ -86,7 +86,7 @@ class ESAddonFilter(ESBaseFilter):
|
|||
|
||||
|
||||
def addon_listing(request, addon_types, filter_=AddonFilter,
|
||||
default='popular'):
|
||||
default='featured'):
|
||||
# Set up the queryset and filtering for themes & extension listing pages.
|
||||
status = [amo.STATUS_PUBLIC, amo.STATUS_LITE,
|
||||
amo.STATUS_LITE_AND_NOMINATED]
|
||||
|
@ -186,7 +186,7 @@ def extensions(request, category=None, template=None):
|
|||
if not sort and not request.MOBILE and category and category.count > 4:
|
||||
return category_landing(request, category)
|
||||
|
||||
addons, filter = addon_listing(request, [TYPE], default='featured')
|
||||
addons, filter = addon_listing(request, [TYPE])
|
||||
sorting = filter.field
|
||||
src = 'cb-btn-%s' % sorting
|
||||
dl_src = 'cb-dl-%s' % sorting
|
||||
|
|
|
@ -2,7 +2,8 @@ from nose.tools import eq_
|
|||
from pyquery import PyQuery as pq
|
||||
|
||||
import amo.tests
|
||||
|
||||
from amo.urlresolvers import reverse
|
||||
from browse.tests import test_listing_sort, test_default_sort
|
||||
from webapps.models import Webapp
|
||||
|
||||
|
||||
|
@ -28,6 +29,35 @@ class TestLayout(WebappTest):
|
|||
eq_(pq(response.content)('#social-footer').length, 0)
|
||||
|
||||
|
||||
class TestListing(WebappTest):
|
||||
|
||||
def setUp(self):
|
||||
self.url = reverse('apps.list')
|
||||
|
||||
def test_default_sort(self):
|
||||
test_default_sort(self, 'featured')
|
||||
|
||||
def test_downloads_sort(self):
|
||||
test_listing_sort(self, 'downloads', 'weekly_downloads')
|
||||
|
||||
def test_rating_sort(self):
|
||||
test_listing_sort(self, 'rating', 'bayesian_rating')
|
||||
|
||||
def test_newest_sort(self):
|
||||
test_listing_sort(self, 'created', 'created')
|
||||
|
||||
def test_name_sort(self):
|
||||
test_listing_sort(self, 'name', 'name', reverse=False,
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_updated_sort(self):
|
||||
test_listing_sort(self, 'updated', 'last_updated',
|
||||
sel_class='extra-opt')
|
||||
|
||||
def test_upandcoming_sort(self):
|
||||
test_listing_sort(self, 'hotness', 'hotness', sel_class='extra-opt')
|
||||
|
||||
|
||||
class TestDetail(WebappTest):
|
||||
|
||||
def test_title(self):
|
||||
|
|
Загрузка…
Ссылка в новой задаче