provide *_ajax methods on the test client to remove ugliness
This commit is contained in:
Родитель
f1b7a0dfcb
Коммит
134c30aa60
|
@ -606,8 +606,8 @@ class TestDetailPage(amo.tests.TestCase):
|
||||||
def test_search_engine_works_with(self):
|
def test_search_engine_works_with(self):
|
||||||
"""We don't display works-with info for search engines."""
|
"""We don't display works-with info for search engines."""
|
||||||
addon = Addon.objects.filter(type=amo.ADDON_SEARCH)[0]
|
addon = Addon.objects.filter(type=amo.ADDON_SEARCH)[0]
|
||||||
r = self.client.get(reverse('addons.detail_more', args=[addon.slug]),
|
r = self.client.get_ajax(reverse('addons.detail_more',
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
args=[addon.slug]))
|
||||||
headings = pq(r.content)('#detail-relnotes .item-info h5')
|
headings = pq(r.content)('#detail-relnotes .item-info h5')
|
||||||
assert not any(th.text.strip().lower() == 'works with:'
|
assert not any(th.text.strip().lower() == 'works with:'
|
||||||
for th in headings)
|
for th in headings)
|
||||||
|
@ -837,9 +837,8 @@ class TestTagsBox(amo.tests.TestCase):
|
||||||
|
|
||||||
def test_tag_box(self):
|
def test_tag_box(self):
|
||||||
"""Verify that we don't show duplicate tags."""
|
"""Verify that we don't show duplicate tags."""
|
||||||
r = self.client.get(reverse('addons.detail_more', args=[8680]),
|
r = self.client.get_ajax(reverse('addons.detail_more', args=[8680]),
|
||||||
follow=True,
|
follow=True)
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
doc = pq(r.content)
|
doc = pq(r.content)
|
||||||
eq_('SEO', doc('#tagbox ul').children().text())
|
eq_('SEO', doc('#tagbox ul').children().text())
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
from functools import partial
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -6,6 +7,7 @@ import time
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.test.client import Client
|
||||||
|
|
||||||
import elasticutils
|
import elasticutils
|
||||||
import nose
|
import nose
|
||||||
|
@ -68,8 +70,23 @@ class RedisTest(object):
|
||||||
reset_redis(self._redis)
|
reset_redis(self._redis)
|
||||||
|
|
||||||
|
|
||||||
|
class TestClient(Client):
|
||||||
|
|
||||||
|
def __getattr__(self, name):
|
||||||
|
"""
|
||||||
|
Provides get_ajax, post_ajax, head_ajax methods etc in the
|
||||||
|
test_client so that you don't need to specify the headers.
|
||||||
|
"""
|
||||||
|
if name.endswith('_ajax'):
|
||||||
|
method = getattr(self, name.split('_')[0])
|
||||||
|
return partial(method, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
||||||
|
else:
|
||||||
|
raise AttributeError
|
||||||
|
|
||||||
|
|
||||||
class TestCase(RedisTest, test_utils.TestCase):
|
class TestCase(RedisTest, test_utils.TestCase):
|
||||||
"""Base class for all amo tests."""
|
"""Base class for all amo tests."""
|
||||||
|
client_class = TestClient
|
||||||
|
|
||||||
def _pre_setup(self):
|
def _pre_setup(self):
|
||||||
super(TestCase, self)._pre_setup()
|
super(TestCase, self)._pre_setup()
|
||||||
|
|
|
@ -255,8 +255,7 @@ class TestVotes(amo.tests.TestCase):
|
||||||
self.assertRedirects(r, self.c_url)
|
self.assertRedirects(r, self.c_url)
|
||||||
|
|
||||||
def test_ajax_response(self):
|
def test_ajax_response(self):
|
||||||
r = self.client.post(self.up, follow=True,
|
r = self.client.post_ajax(self.up, follow=True)
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
assert not r.redirect_chain
|
assert not r.redirect_chain
|
||||||
eq_(r.status_code, 200)
|
eq_(r.status_code, 200)
|
||||||
|
|
||||||
|
@ -615,8 +614,7 @@ class TestChangeAddon(amo.tests.TestCase):
|
||||||
|
|
||||||
def test_publisher(self):
|
def test_publisher(self):
|
||||||
CollectionUser.objects.create(user_id=4043307, collection=self.flig)
|
CollectionUser.objects.create(user_id=4043307, collection=self.flig)
|
||||||
r = self.client.post(self.flig_add, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.flig_add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
|
|
||||||
def test_no_addon(self):
|
def test_no_addon(self):
|
||||||
|
@ -624,8 +622,7 @@ class TestChangeAddon(amo.tests.TestCase):
|
||||||
eq_(r.status_code, 400)
|
eq_(r.status_code, 400)
|
||||||
|
|
||||||
def test_add_success(self):
|
def test_add_success(self):
|
||||||
r = self.client.post(self.add, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
||||||
self.assert_(self.addon in c.addons.all())
|
self.assert_(self.addon in c.addons.all())
|
||||||
|
@ -635,17 +632,14 @@ class TestChangeAddon(amo.tests.TestCase):
|
||||||
"""
|
"""
|
||||||
When we add to a private collection, make sure we don't log anything.
|
When we add to a private collection, make sure we don't log anything.
|
||||||
"""
|
"""
|
||||||
self.client.post(self.add, {'addon_id': self.addon.id},
|
self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
# There should be no log objects for this add-on
|
# There should be no log objects for this add-on
|
||||||
eq_(len(ActivityLog.objects.for_addons(self.addon)), 0)
|
eq_(len(ActivityLog.objects.for_addons(self.addon)), 0)
|
||||||
|
|
||||||
def test_add_existing(self):
|
def test_add_existing(self):
|
||||||
r = self.client.post(self.add, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
r = self.client.post(self.add, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
||||||
self.assert_(self.addon in c.addons.all())
|
self.assert_(self.addon in c.addons.all())
|
||||||
|
@ -656,28 +650,23 @@ class TestChangeAddon(amo.tests.TestCase):
|
||||||
When we remove from a private collection, make sure we don't log
|
When we remove from a private collection, make sure we don't log
|
||||||
anything.
|
anything.
|
||||||
"""
|
"""
|
||||||
self.client.post(self.add, {'addon_id': self.addon.id},
|
self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
self.client.post_ajax(self.remove, {'addon_id': self.addon.id})
|
||||||
self.client.post(self.remove, {'addon_id': self.addon.id},
|
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
# There should be no log objects for this add-on
|
# There should be no log objects for this add-on
|
||||||
eq_(len(ActivityLog.objects.for_addons(self.addon)), 0)
|
eq_(len(ActivityLog.objects.for_addons(self.addon)), 0)
|
||||||
|
|
||||||
def test_remove_success(self):
|
def test_remove_success(self):
|
||||||
r = self.client.post(self.add, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.add, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
|
|
||||||
r = self.client.post(self.remove, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.remove, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
|
|
||||||
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
||||||
eq_(c.addons.count(), 0)
|
eq_(c.addons.count(), 0)
|
||||||
|
|
||||||
def test_remove_nonexistent(self):
|
def test_remove_nonexistent(self):
|
||||||
r = self.client.post(self.remove, {'addon_id': self.addon.id},
|
r = self.client.post_ajax(self.remove, {'addon_id': self.addon.id})
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
self.check_redirect(r)
|
self.check_redirect(r)
|
||||||
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
c = Collection.objects.get(author__username='jbalogh', slug='mobile')
|
||||||
eq_(c.addons.count(), 0)
|
eq_(c.addons.count(), 0)
|
||||||
|
@ -707,9 +696,8 @@ class AjaxTest(amo.tests.TestCase):
|
||||||
eq_(doc('li').attr('data-id'), '80')
|
eq_(doc('li').attr('data-id'), '80')
|
||||||
|
|
||||||
def test_add_collection(self):
|
def test_add_collection(self):
|
||||||
r = self.client.post(reverse('collections.ajax_add'),
|
r = self.client.post_ajax(reverse('collections.ajax_add'),
|
||||||
{'addon_id': 3615, 'id': 80}, follow=True,
|
{'addon_id': 3615, 'id': 80}, follow=True)
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
doc = pq(r.content)
|
doc = pq(r.content)
|
||||||
eq_(doc('li.selected').attr('data-id'), '80')
|
eq_(doc('li.selected').attr('data-id'), '80')
|
||||||
|
|
||||||
|
@ -795,8 +783,7 @@ class TestWatching(amo.tests.TestCase):
|
||||||
eq_(r.context['amo_user'].watching, [57181])
|
eq_(r.context['amo_user'].watching, [57181])
|
||||||
|
|
||||||
def test_ajax_response(self):
|
def test_ajax_response(self):
|
||||||
r = self.client.post(self.url, follow=True,
|
r = self.client.post_ajax(self.url, follow=True)
|
||||||
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
||||||
eq_(r.status_code, 200)
|
eq_(r.status_code, 200)
|
||||||
eq_(json.loads(r.content), {'watching': True})
|
eq_(json.loads(r.content), {'watching': True})
|
||||||
|
|
||||||
|
@ -898,7 +885,6 @@ class TestImpalaCollectionListing(amo.tests.TestCase):
|
||||||
eq_('followers' in doc('.items .item .followers').text(), True)
|
eq_('followers' in doc('.items .item .followers').text(), True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TestCollectionDetailFeed(amo.tests.TestCase):
|
class TestCollectionDetailFeed(amo.tests.TestCase):
|
||||||
fixtures = ['base/collection_57181']
|
fixtures = ['base/collection_57181']
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class TestManagement(amo.tests.TestCase):
|
||||||
def test_tags_details_view(self):
|
def test_tags_details_view(self):
|
||||||
"""Test that there are some tags being shown on the details page."""
|
"""Test that there are some tags being shown on the details page."""
|
||||||
url = reverse('addons.detail_more', args=['a3615'])
|
url = reverse('addons.detail_more', args=['a3615'])
|
||||||
r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
r = self.client.get_ajax(url)
|
||||||
doc = pq(r.content)
|
doc = pq(r.content)
|
||||||
eq_(len(doc('li.tag')), 4)
|
eq_(len(doc('li.tag')), 4)
|
||||||
assert 'Tags' in [d.text for d in doc('h3')]
|
assert 'Tags' in [d.text for d in doc('h3')]
|
||||||
|
@ -37,7 +37,7 @@ class TestXSS(amo.tests.TestCase):
|
||||||
def test_tags_xss_detail(self):
|
def test_tags_xss_detail(self):
|
||||||
"""Test xss tag detail."""
|
"""Test xss tag detail."""
|
||||||
url = reverse('addons.detail_more', args=['a3615'])
|
url = reverse('addons.detail_more', args=['a3615'])
|
||||||
r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
r = self.client.get_ajax(url)
|
||||||
doc = pq(r.content)
|
doc = pq(r.content)
|
||||||
eq_(doc('li.tag')[0].text_content().strip(), self.xss)
|
eq_(doc('li.tag')[0].text_content().strip(), self.xss)
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ class TestXSSURLFail(amo.tests.TestCase):
|
||||||
def test_tags_xss(self):
|
def test_tags_xss(self):
|
||||||
"""Test xss tag detail."""
|
"""Test xss tag detail."""
|
||||||
url = reverse('addons.detail_more', args=['a3615'])
|
url = reverse('addons.detail_more', args=['a3615'])
|
||||||
r = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
r = self.client.get_ajax(url)
|
||||||
doc = pq(r.content)
|
doc = pq(r.content)
|
||||||
eq_(doc('li.tag')[0].text_content().strip(), self.xss)
|
eq_(doc('li.tag')[0].text_content().strip(), self.xss)
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче