def test_create_dataset_fields_added(self, create_from_dict): """ Fields are added to the dict before validation if they don't exist. """ self.temporary_login(self.test_user_id) exception_error = "data is not valid" create_from_dict.side_effect = dataset_validator.ValidationException(exception_error) submit = json.dumps({"a": "thing"}) resp = self.client.post("/api/v1/datasets/", data=submit, content_type="application/json") self.assertEqual(resp.status_code, 400) # The `public` and `classes` fields are added create_from_dict.assert_called_once_with({"a": "thing", "public": True, "classes": []}, self.test_user["id"])
def test_create_dataset_validation_error(self, create_from_dict): """ return an error if create_from_dict returns a validation error """ self.temporary_login(self.test_user_id) exception_error = "data is not valid" create_from_dict.side_effect = dataset_validator.ValidationException(exception_error) submit = json.dumps({"a": "thing"}) resp = self.client.post("/api/v1/datasets/", data=submit, content_type="application/json") self.assertEqual(resp.status_code, 400) expected = {"message": exception_error} self.assertEqual(resp.json, expected)
def test_import_csv_invalid_data(self, mock_create_from_dict): """If the provided dataset file is invalid, show an error""" mock_create_from_dict.side_effect = dataset_validator.ValidationException('invalid dataset') self.temporary_login(self.test_user_id) test_csv_file = os.path.join(TEST_DATA_PATH, 'test_dataset.csv') with open(test_csv_file) as csv_data: resp = self.client.post(url_for('datasets.import_csv'), data={'name': 'dataset', 'file': (csv_data, 'dataset.csv')}, content_type='multipart/form-data') # Validation fails, we return an http400 error self.assert400(resp) e = self.get_context_variable('error') self.assertEqual(e.description, 'invalid dataset')