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
13 class TestSubscribe(TestCase
):
14 """Test subscribing to podcasts"""
17 User
= get_user_model()
19 username
="duplicate-subscribe", email
="duplicate-subscribe@example.com"
21 self
.user
.set_password("secret")
23 self
.client
= Client
.objects
.create(user
=self
.user
, uid
="dev1", id=uuid
.uuid1())
25 self
.url
= "http://www.example.com/pdocast.rss"
26 self
.podcast
= Podcast
.objects
.get_or_create_for_url(self
.url
).object
28 def test_duplicate_subscribe(self
):
29 """Test that a duplicate subscription is skipped"""
30 from mygpo
.subscriptions
.tasks
import _perform_subscribe
32 clients
= [self
.client
, self
.client
]
33 changed_clients
= list(
35 self
.podcast
, self
.user
, clients
, datetime
.utcnow(), self
.url
39 # ensure only one client is changed
40 self
.assertEqual(len(changed_clients
), 1)
41 self
.assertEqual(changed_clients
[0], self
.client
)
43 # ensure exactly one subscription has been created
44 subscriptions
= models
.Subscription
.objects
.filter(
45 podcast
=self
.podcast
, user
=self
.user
47 self
.assertEqual(subscriptions
.count(), 1)
48 subscriptions
[0].delete()