replace django.core.urlresolvers w/ django.urls
[mygpo.git] / mygpo / web / tests.py
blob9dd7c2d4a6a3979aa2f5e17b4fca20987e974d82
1 import unittest
2 import doctest
3 import uuid
5 from django.test import TestCase
6 from django.urls import reverse
7 from django.contrib.auth import get_user_model
9 from mygpo.podcasts.models import Podcast, Episode, Slug
10 import mygpo.web.utils
11 from mygpo.test import create_auth_string, anon_request
14 class SimpleWebTests(TestCase):
16 @classmethod
17 def setUpClass(self):
18 User = get_user_model()
19 self.user = User(username='web-test', email='web-test@example.com')
20 self.user.set_password('pwd')
21 self.user.save()
23 self.auth_string = create_auth_string('test', 'pwd')
25 @classmethod
26 def tearDownClass(self):
27 self.user.delete()
29 def test_access_parameterless_pages(self):
30 pages = [
31 'history',
32 'suggestions',
33 'tags',
34 'subscriptions',
35 'subscriptions-opml',
36 'favorites',
37 'account',
38 'privacy',
39 'delete-account',
40 'share',
41 'toplist',
42 'episode-toplist',
43 'devices',
44 'device-create',
45 'login',
46 'logout',
47 'home']
49 self.access_pages(pages, [], True)
51 def test_access_podcast_pages(self):
52 pages = ['podcast', ]
54 def access_pages(self, pages, args, login):
55 if login:
56 self.client.post('/login/', dict(
57 login_username=self.user.username, pwd='pwd'))
59 for page in pages:
60 response = self.client.get(reverse(page, args=args), follow=True)
61 self.assertEqual(response.status_code, 200)
64 class PodcastPageTests(TestCase):
65 """ Test the podcast page """
67 def setUp(self):
68 # create a podcast and some episodes
69 podcast = Podcast.objects.create(id=uuid.uuid1(),
70 title='My Podcast',
71 max_episode_order=1,
73 for n in range(20):
74 episode = Episode.objects.get_or_create_for_url(
75 podcast,
76 'http://www.example.com/episode%d.mp3' % (n, ),
79 # we only need (the last) one
80 self.episode_slug = Slug.objects.create(content_object=episode,
81 order=0,
82 scope=podcast.as_scope,
83 slug=str(n),
86 self.podcast_slug = Slug.objects.create(content_object=podcast,
87 order=n, scope=podcast.scope,
88 slug='podcast')
90 def test_podcast_queries(self):
91 """ Test that the expected number of queries is executed """
92 url = reverse('podcast-slug', args=(self.podcast_slug.slug, ))
93 # the number of queries must be independent of the number of episodes
95 with self.assertNumQueries(5):
96 anon_request(url)
98 def test_episode_queries(self):
99 """ Test that the expected number of queries is executed """
100 url = reverse('episode-slug', args=(self.podcast_slug.slug,
101 self.episode_slug.slug))
103 with self.assertNumQueries(5):
104 anon_request(url)