Bump babel from 2.9.1 to 2.10.3
[mygpo.git] / mygpo / subscriptions / tests.py
blob5579b09f29d462f33006cf45cef2ff210aedcf63
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", email="duplicate-subscribe@example.com"
21 self.user.set_password("secret")
22 self.user.save()
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(
34 _perform_subscribe(
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()
50 def tearDown(self):
51 self.podcast.delete()
52 self.client.delete()
53 self.user.delete()