Skip to content

Commit

Permalink
unicode tests for category feeds (bug 587227)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Balogh committed Aug 17, 2010
1 parent 4e50165 commit f807dbb
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 20 deletions.
22 changes: 7 additions & 15 deletions apps/browse/feeds.py
Expand Up @@ -4,11 +4,12 @@
from django.shortcuts import get_object_or_404

from tower import ugettext as _

import amo
from amo.urlresolvers import reverse
from amo.helpers import absolutify, url
from amo.helpers import absolutify, url, _page_name
from addons.models import Category
from views import addon_listing
from .views import addon_listing


class CategoriesRss(Feed):
Expand All @@ -29,12 +30,7 @@ def get_object(self, request, category_name):

def title(self, category):
"""Title for the feed as a whole"""
# L10n: {category} is the name of the addon category,
# {application} is the name of the app-
# lication (Firefox, Thunderbird, etc)
return _('Browse {category} :: Addons for {application}').format(
category=category.name,
application=unicode(self.request.APP.pretty))
return u'%s :: %s' % (category.name, _page_name(self.request.APP))

def link(self, category):
"""Link for the feed as a whole"""
Expand All @@ -46,16 +42,12 @@ def description(self, category):

def items(self, category):
"""Return the Addons for this Category to be output as RSS <item>'s"""
addons, filter, unreviewed = addon_listing(self.request,
self.TYPE,
'updated')
addons = addons.filter(categories__id=category.id)[:30]
return addons
addons, _, _ = addon_listing(self.request, self.TYPE, 'updated')
return addons.filter(categories__id=category.id)[:30]

def item_title(self, addon):
"""Title for particular addon (<item><title>...</)"""
return "{addon_name} {version}".format(addon_name=addon.name,
version=addon.current_version)
return u'%s %s' % (addon.name, addon.current_version)

def item_link(self, addon):
"""Link for a particular addon (<item><link>...</)"""
Expand Down
2 changes: 1 addition & 1 deletion apps/browse/templates/browse/base_listing.html
Expand Up @@ -26,7 +26,7 @@

{% with cat = category.slug if category else 'all' %}
<link rel="alternate" type="application/rss+xml" title="RSS"
href="{{ url('browse.extensions.rss',cat) }}?sort={{ sort }}" />
href="{{ url('browse.extensions.rss', cat) }}?sort={{ sort }}">
{% endwith %}
{% endwith %}
{% endblock rss_feed %}
37 changes: 34 additions & 3 deletions apps/browse/tests.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
from django import http
from django.core.cache import cache
from django.utils import http as urllib

from mock import patch
import mock
from nose.tools import eq_, assert_raises
from pyquery import PyQuery as pq

Expand All @@ -14,9 +15,11 @@
from amo.helpers import urlparams
from addons.models import Addon, Category
from addons.cron import _update_appsupport
from browse import views
from browse import views, feeds
from browse.views import locale_display_name
from translations.models import Translation
from translations.query import order_by_translation
from versions.models import Version


def test_locale_display_name():
Expand Down Expand Up @@ -164,7 +167,7 @@ def test_matching_opts(self):
if key != 'featured':
assert key in dict(views.AddonFilter.opts)

@patch('browse.views.category_landing')
@mock.patch('browse.views.category_landing')
def test_goto_category_landing(self, landing_mock):
"""We hit a landing page if there's a category and no sorting."""
landing_mock.return_value = http.HttpResponse()
Expand Down Expand Up @@ -261,3 +264,31 @@ def test_featured_addons(self):

response = self.client.get(reverse('browse.featured'))
eq_([1003], [a.id for a in response.context['addons']])


class TestFeed(test_utils.TestCase):

def setUp(self):
self.feed = feeds.CategoriesRss()
self.u = u'Ελληνικά'
self.wut = Translation(localized_string=self.u, locale='el')

self.feed.request = mock.Mock()
self.feed.request.APP.pretty = self.u

self.category = Category(name=self.u)

self.addon = Addon(name=self.u, id=2)
self.addon._current_version = Version(version='v%s' % self.u)

def test_title(self):
eq_(self.feed.title(self.category),
u'%s :: Add-ons for %s' % (self.wut, self.u))

def test_item_title(self):
eq_(self.feed.item_title(self.addon),
u'%s v%s' % (self.u, self.u))

def test_item_guid(self):
t = self.feed.item_guid(self.addon)
assert t.endswith(u'/addon/2/versions/v%s' % urllib.urlquote(self.u))
2 changes: 1 addition & 1 deletion apps/browse/views.py
@@ -1,14 +1,14 @@
import collections

from django import http
from django.conf import settings
from django.http import HttpResponsePermanentRedirect
from django.shortcuts import get_object_or_404
from django.views.decorators.cache import cache_page

from tower import ugettext_lazy as _lazy
import jingo
import product_details
import settings

import amo.utils
from addons.models import Addon, Category
Expand Down

0 comments on commit f807dbb

Please sign in to comment.