def try_file(self, filename, expected_errors=None): """Expected_errors is an iterable of (line, error_code) pairs. If expected_errors is None, ignore errors, just check that the parser runs without trouble. If expected_errors is True, check that there are errors, but don't care which. Otherwise, expected_errors is an iterable. If expected_errors is empty, check that the parse is successful. Otherwise, assert that at least all expected_errors are present. There may be more.""" path = resource_filename( 'lizard_progress', 'tests/test_met_files/' + filename) uploaded_file = self.setup_uploaded_file(path) process_uploaded_file.process_uploaded_file(uploaded_file.id) errors = set( (error.line, error.error_code) for error in self.get_errors(uploaded_file)) # Process_uploaded_file gets a fresh instance from the database, so # our old one isn't updated uploaded_file = models.UploadedFile.objects.get( pk=uploaded_file.id) # Helpful in case this fails print(path) print(expected_errors) print(errors) if expected_errors is None: return if expected_errors is True: self.assertFalse(uploaded_file.success) self.assertTrue(len(errors) > 0) elif not expected_errors: self.assertTrue(uploaded_file.success) self.assertEquals(len(errors), 0) else: self.assertFalse(uploaded_file.success) self.assertTrue(len(errors) >= len(expected_errors)) for error in expected_errors: self.assertTrue(error in errors)
def process_uploaded_file_task(uploaded_file_id): """Call the process_uploaded_file function.""" process_uploaded_file.process_uploaded_file(uploaded_file_id)