def _create_read_type(self): factories.ReadType( read_type="ONA", ) factories.ReadType( read_type="CSV", ) factories.ReadType( read_type="Google Spreadsheet", ) factories.ReadType( read_type="GSheet Import", ) factories.ReadType( read_type="JSON", ) factories.ReadType( read_type="CommCare", ) factories.ReadType( read_type="OneDrive", ) factories.ReadType( read_type="CustomForm", )
def test_silo_detail_import_done(self): # Create Silo, Read and CeleryTask read_type = factories.ReadType(read_type="CSV") read = factories.Read( owner=self.user, type=read_type, read_name="TEST SILO DONE", description="unittest" ) silo = factories.Silo(owner=self.user, public=False) silo.reads.add(read) factories.CeleryTask(content_object=read, task_status=CeleryTask.TASK_FINISHED) # Check view request = self.factory.get(self.silo_detail_url) request.user = self.user response = siloDetail(request, silo.pk) self.assertContains( response, '<a href="/show_read/{}" target="_blank">{}</a>'.format( read.id, read.read_name) ) self.assertNotContains( response, '<span class="btn-sm btn-danger">Import Failed</span>') self.assertNotContains( response, '<span class="btn-sm btn-warning">Import running</span>') self.assertNotContains( response, '<h4 style="color:#ff3019">Import process failed</h4>') self.assertNotContains(response, '<h4>Import process running</h4>')
def test_celery_success(self): """ Test if the celery task process_silo actually imports data :return: """ silo = factories.Silo(owner=self.user, public=False) read_type = factories.ReadType(read_type="CSV") upload_file = open('silo/tests/sample_data/test.csv', 'rb') read = factories.Read(owner=self.user, type=read_type, file_data=SimpleUploadedFile(upload_file.name, upload_file.read())) task = factories.CeleryTask(task_status=CeleryTask.TASK_CREATED, content_object=read) process_done = process_silo(silo.id, read.id) self.assertEqual(getSiloColumnNames(silo.id), ['First_Name', 'Last_Name', 'E-mail']) self.assertTrue(process_done)
def test_celery_failure(self): silo = factories.Silo(owner=self.user, public=False) read_type = factories.ReadType(read_type="CSV") upload_file = open('silo/tests/sample_data/test_broken.csv', 'rb') read = factories.Read(owner=self.user, type=read_type, file_data=SimpleUploadedFile(upload_file.name, upload_file.read())) task = factories.CeleryTask(content_object=read) process_silo(silo.id, read.id) ctask = CeleryTask.objects.get( object_id=read.id, content_type=ContentType.objects.get_for_model(Read) ) self.assertEqual(ctask.task_id, task.task_id) self.assertEqual(ctask.task_status, CeleryTask.TASK_FAILED)
def test_upload_file(self): """ Checks if uploadFile successfully creates a celery task and new silo for imported read uploadFile takes POST request with csv file - takes a Read - adds read to a silo - creates a CeleryTask - redirects to silo_detail :return: """ read_type = factories.ReadType(read_type="CSV") upload_file = open('silo/tests/sample_data/test.csv', 'rb') read = factories.Read( owner=self.user, type=read_type, read_name="TEST UPLOADFILE", description="unittest", file_data=SimpleUploadedFile(upload_file.name, upload_file.read()) ) self.assertEqual(Silo.objects.filter(reads=read.pk).count(), 0) params = { "read_id": read.pk, "new_silo": "TEST UPLOADFILE", } request = self.factory.post(self.upload_csv_url, data=params) request.user = self.user request._dont_enforce_csrf_checks = True response = uploadFile(request, read.pk) self.assertEqual(response.status_code, 302) self.assertIn("/silo_detail/", response.url) # assure new Silo was created new_silo = Silo.objects.get(reads=read.pk) self.assertEqual(new_silo.name, params["new_silo"]) # assure CeleryTask was created ctask = CeleryTask.objects.get( object_id=read.pk, content_type=ContentType.objects.get_for_model(Read) ) self.assertNotEqual(ctask.task_id, None) self.assertEqual(ctask.task_status, CeleryTask.TASK_CREATED)
def test_silo_detail_import_failed(self): # Create Silo, Read and CeleryTask read_type = factories.ReadType(read_type="CSV") read = factories.Read( owner=self.user, type=read_type, read_name="TEST SILO FAIL", description="unittest" ) silo = factories.Silo(owner=self.user, public=False) silo.reads.add(read) task = factories.CeleryTask(content_object=read, task_status=CeleryTask.TASK_FAILED) # Check view request = self.factory.get(self.silo_detail_url) request.user = self.user response = siloDetail(request, silo.pk) self.assertContains(response, "<a href=\"/show_read/"+str(read.id)+"\" target=\"_blank\">"+read.read_name+"</a>") self.assertContains(response, "<span class=\"btn-sm btn-danger\">Import Failed</span>") self.assertContains(response, "<h4 style=\"color:#ff3019\">Import process failed</h4>")
def setUp(self): self.factory = APIRequestFactory() self.tola_user = factories.TolaUser() self.read = factories.Read( owner=self.tola_user.user, type=factories.ReadType(read_type='CustomForm'), read_name='Lennon Survey', ) wflvl1 = factories.WorkflowLevel1( organization=self.tola_user.organization) self.silo = factories.Silo( name='Lennon Survey', workflowlevel1=[wflvl1], owner=self.tola_user.user, columns='[{"name": "name", "type": "text"},' '{"name": "age", "type": "number"},' '{"name": "city", "type": "text"}]', reads=[self.read], public=False )
def test_save_and_import_read_without_silo_id(self, mock_requests): data_res = {'detail': 'Success'} mock_requests.get.return_value = Mock(content=json.dumps(data_res)) read = factories.Read(read_name='Read Test', owner=self.tola_user.user) silo = factories.Silo(owner=self.tola_user.user, reads=[read]) factories.ThirdPartyTokens(user=self.tola_user.user, name='ONA') factories.ReadType(read_type='ONA') data = { 'read_name': read.read_name, 'description': silo.description, 'silo_name': silo.name } request = self.factory.post('', data) request.user = self.tola_user.user response = views.saveAndImportRead(request) content = response.content self.assertEqual('Silo ID can only be an integer', content)
def test_save_and_import_read_without_data(self, mock_requests): mock_requests.get.return_value = Mock(content='[]') read = factories.Read(read_name='Read Test', owner=self.tola_user.user) silo = factories.Silo(owner=self.tola_user.user, reads=[read]) factories.ThirdPartyTokens(user=self.tola_user.user, name='ONA') factories.ReadType(read_type='ONA') data = { 'read_name': read.read_name, 'description': silo.description, 'silo_id': silo.id, 'silo_name': silo.name } request = self.factory.post('', data) request.user = self.tola_user.user response = views.saveAndImportRead(request) content = response.content self.assertEqual('There is not data for the selected form, {}'.format( read.read_name), content)
def test_save_and_import_read(self, mock_requests, mock_savedatasilo): data_res = {'detail': 'Success'} mock_savedatasilo.return_value = Mock() mock_requests.get.return_value = Mock(content=json.dumps(data_res)) read = factories.Read(read_name='Read Test', owner=self.tola_user.user) silo = factories.Silo(owner=self.tola_user.user, reads=[read]) factories.ThirdPartyTokens(user=self.tola_user.user, name='ONA') factories.ReadType(read_type='ONA') data = { 'read_name': read.read_name, 'description': silo.description, 'silo_id': silo.id, 'silo_name': silo.name } request = self.factory.post('', data) request.user = self.tola_user.user response = views.saveAndImportRead(request) template_content = response.content match = reverse('siloDetail', args=[silo.pk]) self.assertIn(match, template_content)
def setUp(self): factories.ReadType(read_type='CustomForm') self.tola_user = factories.TolaUser() self.factory = APIRequestFactory()
def setUp(self): factories.ReadType(read_type='CustomForm') self.org = factories.Organization() self.tola_user = factories.TolaUser(organization=self.org) self.factory = APIRequestFactory()
def setUp(self): self.factory = RequestFactory() self.user = factories.User() self.user2 = factories.User(first_name='John', last_name='Lennon') self.read_type = factories.ReadType(read_type="CommCare")