from django.test import TestCase, Client from interface import models class SubmissionTestCase(TestCase): @staticmethod def setUpTestData(): e1 = models.Ensemble.objects.create(name='The Be Sharps', code="1234", passphrase='Homer') e1.projects.create(name='Baby on Board') e2 = models.Ensemble.objects.create(name='Lisa and the Bleeding Gums', code="2345", passphrase="Maggie") e2.projects.create(name='Baker St') def setUp(self): self.client = Client() def test_submission_upload(self): response = self.client.post('/register', {'code': '12-34', 'passphrase': 'Homer'}) self.assertRedirects(response, '/') response = self.client.post(f"/projects/1/submission", {'name': 'Ned', 'instrument': 'Harp', 'method': 'upload'}) self.assertRedirects(response, '/projects/1/submission/1/upload') response = self.client.get(response.url) upload = response.context['upload'] self.assertEqual(upload['url'], f"http://localhost:9000/{models.BUCKET}") self.assertRegex(upload['fields']['key'], r'^baby-on-board\/submissions\/[0-9T\-]+_ned_harp_\$\{filename\}$') self.assertEqual(upload['fields']['success_action_redirect'], 'http://testserver/projects/1/submission/1/complete') self.assertEqual(models.Submission.objects.count(), 1) self.assertRedirects(self.client.get(f"/projects/1/submission/1/cancel"), '/projects/1') self.assertEqual(models.Submission.objects.count(), 0) def test_submission_link(self): response = self.client.post('/register', {'code': '12-34', 'passphrase': 'Homer'}) self.assertRedirects(response, '/') response = self.client.post(f"/projects/1/submission", {'name': 'Ned', 'instrument': 'Harp', 'method': 'link'}) self.assertRedirects(response, '/projects/1/submission/1/link') url = 'https://drive.google.com/a/path/to/a/video.mp4#g6e6e4a23' response = self.client.post(f"/projects/1/submission/1/link", {'url': url}) self.assertRedirects(response, '/projects/1/submission/1') response = self.client.get('/projects/1/submission/1') self.assertContains(response, "Thankyou for your submission") response = self.client.get('/projects/1') self.assertContains(response, 'Ned') s = models.Submission.objects.get(pk=1) self.assertEqual(s.download_url, url)