Bump python-dateutil from 2.7.3 to 2.7.4
[mygpo.git] / mygpo / subscriptions / tests.py
blob72d37d54847a0b3958f9353a4ef384fd705366ea
1 import uuid
2 import unittest
3 from datetime import datetime
5 from django.contrib.auth import get_user_model
6 from django.test import TestCase
8 from mygpo.users.models import Client
9 from mygpo.podcasts.models import Podcast
10 from . import models
13 class TestSubscribe(TestCase):
14 """ Test subscribing to podcasts """
16 def setUp(self):
17 User = get_user_model()
18 self.user = User(
19 username='duplicate-subscribe',
20 email='duplicate-subscribe@example.com',
22 self.user.set_password('secret')
23 self.user.save()
24 self.client = Client.objects.create(
25 user=self.user, uid='dev1', id=uuid.uuid1())
27 self.url = 'http://www.example.com/pdocast.rss'
28 self.podcast = Podcast.objects.get_or_create_for_url(self.url).object
30 def test_duplicate_subscribe(self):
31 """ Test that a duplicate subscription is skipped """
32 from . import _perform_subscribe
33 clients = [self.client, self.client]
34 changed_clients = list(_perform_subscribe(
35 self.podcast,
36 self.user,
37 clients,
38 datetime.utcnow(),
39 self.url,
42 # ensure only one client is changed
43 self.assertEqual(len(changed_clients), 1)
44 self.assertEqual(changed_clients[0], self.client)
46 # ensure exactly one subscription has been created
47 subscriptions = models.Subscription.objects.filter(
48 podcast=self.podcast,
49 user=self.user
51 self.assertEqual(subscriptions.count(), 1)
52 subscriptions[0].delete()
54 def tearDown(self):
55 self.podcast.delete()
56 self.client.delete()
57 self.user.delete()