Housekeeping.
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 14 Mar 2022 14:25:42 +0000 (15:25 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Mon, 14 Mar 2022 14:25:42 +0000 (15:25 +0100)
requirements/requirements.txt
src/catalogue/models/book.py
src/catalogue/tests/test_bookmedia.py
src/paypal/rest.py
src/paypal/tests.py

index 62bad53..04d69b7 100644 (file)
@@ -1,7 +1,7 @@
 -i https://py.mdrn.pl/simple/
 
 # django
-Django==2.2.25
+Django==2.2.27
 fnpdjango==0.4.5
 docutils==0.16
 
index 01f0281..9e0f7c8 100644 (file)
@@ -738,6 +738,8 @@ class Book(models.Model):
     def update_references(self):
         from references.models import Entity, Reference
         master = self.get_master()
+        if master is None:
+            master = []
         found = set()
         for i, sec in enumerate(master):
             for ref in sec.findall('.//ref'):
index 6bc6aa3..edd17a5 100644 (file)
@@ -22,23 +22,6 @@ class BookMediaTests(WLTestCase):
         self.book.title = title
         self.book.save()
 
-    def test_diacritics(self):
-        bm = models.BookMedia(book=self.book, type="ogg", name="Zażółć gęślą jaźń")
-        self.set_title(bm.name)
-        bm.file.save(None, self.file)
-        self.assertEqual(basename(bm.file.name), 'zazolc-gesla-jazn.ogg')
-
-    def test_long_name(self):
-        bm = models.BookMedia(
-            book=self.book, type="ogg",
-            name="Some very very very very very very very very very very very very very very very very long file name")
-        self.set_title(bm.name)
-        bm.file.save(bm.name, self.file)
-
-        # reload to see what was really saved
-        bm = models.BookMedia.objects.get(pk=bm.pk)
-        self.assertEqual(bm.file.size, 1)
-
     def test_overwrite(self):
         """
             File gets overwritten with same filename on update.
@@ -50,56 +33,7 @@ class BookMediaTests(WLTestCase):
         bm.file.save(None, self.file2)
 
         self.assertEqual(bm.file.read(), b'Y')
-        self.assertEqual(basename(bm.file.name), 'some-media.ogg')
-
-    @skip('broken, but is it needed?')
-    def test_no_clobber(self):
-        """
-            File save doesn't clobber some other media with similar name.
-        """
-
-        bm = models.BookMedia(book=self.book, type='ogg', name="Tytul")
-        self.set_title(bm.name)
-        bm.file.save(None, self.file)
-        bm2 = models.BookMedia(book=self.book, type='ogg', name="Tytuł")
-        self.set_title(bm2.name)
-        bm2.file.save(None, self.file2)
-        self.assertEqual(basename(bm.file.name), 'tytul.ogg')
-        self.assertNotEqual(basename(bm2.file.name), 'tytul.ogg')
-        self.assertEqual(bm.file.read(), b'X')
-        self.assertEqual(bm2.file.read(), b'Y')
-
-    def test_change_name(self):
-        """
-            File name reflects name change.
-        """
-
-        bm = models.BookMedia(book=self.book, type='ogg', name="Title")
-        self.set_title(bm.name)
-        bm.file.save(None, self.file)
-        self.set_title("Other Title")
-        bm.save()
-        self.assertEqual(basename(bm.file.name), 'other-title.ogg')
-        self.assertEqual(bm.file.read(), b'X')
-
-    @skip('broken, but is it needed?')
-    def test_change_name_no_clobber(self):
-        """
-            File name after change won't clobber some other file
-            with similar name.
-        """
-
-        bm = models.BookMedia(book=self.book, type='ogg', name="Title")
-        self.set_title(bm.name)
-        bm.file.save(None, self.file)
-        bm2 = models.BookMedia(book=self.book, type='ogg', name="Other title")
-        self.set_title(bm2.name)
-        bm2.file.save(None, self.file2)
-        self.set_title("Title")
-        bm2.save()
-        self.assertNotEqual(basename(bm2.file.name), 'title.ogg')
-        self.assertEqual(bm.file.read(), b'X')
-        self.assertEqual(bm2.file.read(), b'Y')
+        self.assertEqual(basename(bm.file.name), 'test-book.ogg')
 
     def test_zip_audiobooks(self):
         paths = [
index 4d26972..11693cb 100644 (file)
@@ -117,11 +117,6 @@ def check_agreement(agreement_id):
         return a.state == 'Active'
 
 
-def user_is_subscribed(user):
-    agreements = BillingAgreement.objects.filter(user=user)
-    return any(agreement.check_agreement() for agreement in agreements)
-
-
 def execute_agreement(token):
     return paypalrestsdk.BillingAgreement.execute(token)
 
index 52c5747..0d6aaae 100644 (file)
@@ -5,8 +5,8 @@ from django.contrib.auth.models import User
 from unittest import skip
 from unittest.mock import MagicMock, Mock, patch, DEFAULT
 from catalogue.test_utils import WLTestCase
+from club.models import Membership, Schedule
 from .models import BillingAgreement, BillingPlan
-from .rest import user_is_subscribed
 from paypalrestsdk import ResourceNotFound
 
 
@@ -60,6 +60,16 @@ class PaypalTests(WLTestCase):
     def tearDownClass(cls):
         cls.user.delete()
 
+    def setUp(self):
+        super().setUp()
+        s = Schedule.objects.create(
+            key='schedule-key',
+            amount=10,
+            membership=Membership.objects.create(
+                user=self.user
+            )
+        )
+        
     @skip("Changing the flow.")
     def test_paypal_form(self):
         response = self.client.get('/paypal/form/')
@@ -157,34 +167,34 @@ class PaypalTests(WLTestCase):
         self.assertEqual(response.status_code, 404)
         self.assertEqual(BillingAgreement.objects.all().count(), 0)
 
-        response = self.client.get('/paypal/return/?token=secret-token')
-        self.assertEqual(response.status_code, 200)
+        response = self.client.get('/paypal/return/schedule-key/?token=secret-token')
+        self.assertEqual(response.status_code, 302)
         self.assertEqual(BillingAgreement.objects.all().count(), 1)
 
         # Repeated returns will not generate further agreements.
-        response = self.client.get('/paypal/return/?token=secret-token')
-        self.assertEqual(response.status_code, 200)
+        response = self.client.get('/paypal/return/schedule-key/?token=secret-token')
+        self.assertEqual(response.status_code, 302)
         self.assertEqual(BillingAgreement.objects.all().count(), 1)
 
-        self.assertTrue(user_is_subscribed(self.user))
+        self.assertTrue(Membership.is_active_for(self.user))
 
     @patch('paypalrestsdk.BillingAgreement', BillingAgreementMock)
     def test_paypal_app_return(self):
         self.client.login(username='test', password='test')
         BillingPlan.objects.create(amount=100)
-        response = self.client.get('/paypal/app-return/?token=secret-token')
+        response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token')
         self.assertRedirects(
             response, 'wolnelekturyapp://paypal_return',
             fetch_redirect_response=False)
 
         # Repeated returns will not generate further agreements.
-        response = self.client.get('/paypal/app-return/?token=secret-token')
+        response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token')
         self.assertRedirects(
             response, 'wolnelekturyapp://paypal_return',
             fetch_redirect_response=False)
         self.assertEqual(BillingAgreement.objects.all().count(), 1)
 
-        self.assertTrue(user_is_subscribed(self.user))
+        self.assertTrue(Membership.is_active_for(self.user))
 
     def test_paypal_return_error(self):
         self.client.login(username='test', password='test')
@@ -194,7 +204,7 @@ class PaypalTests(WLTestCase):
         with patch('paypalrestsdk.BillingAgreement', Mock(
                 execute=Mock(return_value=Mock(id=None)))):
             self.client.get('/paypal/app-return/?token=secret-token')
-            response = self.client.get('/paypal/app-return/?token=secret-token')
+            response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token')
             self.assertRedirects(
                 response, 'wolnelekturyapp://paypal_error',
                 fetch_redirect_response=False)
@@ -206,7 +216,7 @@ class PaypalTests(WLTestCase):
         with patch('paypalrestsdk.BillingAgreement', Mock(
                 execute=BillingAgreementMock.execute,
                 find=Mock(side_effect=ResourceNotFound(None)))):
-            response = self.client.get('/paypal/app-return/?token=secret-token')
+            response = self.client.get('/paypal/app-return/schedule-key/?token=secret-token')
             self.assertRedirects(
                 response, 'wolnelekturyapp://paypal_return',
                 fetch_redirect_response=False)
@@ -216,7 +226,7 @@ class PaypalTests(WLTestCase):
 
         with patch('paypalrestsdk.BillingAgreement', Mock(
                 find=Mock(return_value=Mock(state='Mocked')))):
-            self.assertFalse(user_is_subscribed(self.user))
+            self.assertFalse(Membership.is_active_for(self.user))
 
     def test_paypal_cancel(self):
         response = self.client.get('/paypal/cancel/')