from django.test import TestCase, Client from interface import models class SubmissionTestCase(TestCase): def setUp(self): self.client = Client() def test_submission(self): ensemble = models.Ensemble.objects.create(name="The Be Sharps", passphrase="Homer", bucket="virtual-orchestra") project = ensemble.projects.create(name='Baby on Board') response = self.client.post('/register', {'code': ensemble.code, 'passphrase': ensemble.passphrase}) self.assertRedirects(response, '/') response = self.client.post(f"/projects/{project.pk}/submission", {'name': 'Ned', 'instrument': 'God'}) upload = response.context['upload'] self.assertEqual(upload['url'], f"https://{ensemble.bucket}.s3.amazonaws.com/") self.assertRegex(upload['fields']['key'], r'^baby-on-board\/[0-9T\-]+_ned_god_\$\{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/{project.pk}/submission/1/cancel"), '/projects/1') self.assertEqual(models.Submission.objects.count(), 0)