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") 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'}) #self.assertRedirects(response, '/projects/1/submission/1/upload') self.skipTest("Need to mock S3") response = self.client.get(response.url) 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)