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.
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 = [
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
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/')
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')
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)
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)
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/')