def test_update_column(self): with app.test_client() as c: rv = c.patch("/datasets/UNK/columns/col0", json={"featuretype": "Numerical"}) result = rv.get_json() expected = {"message": "The specified dataset does not exist"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 404) rv = c.post("/datasets", data={ "file": self.iris_file(), }) name = rv.get_json().get("name") rv = c.patch(f"/datasets/{name}/columns/unk", json={"featuretype": "Numerical"}) result = rv.get_json() expected = {"message": "The specified column does not exist"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 404) rv = c.patch(f"/datasets/{name}/columns/col0", json={"featuretype": "Invalid"}) result = rv.get_json() expected = { "message": "featuretype must be one of DateTime, Numerical, Categorical" } self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 400) rv = c.patch(f"/datasets/{name}/columns/col0", json={"featuretype": "Numerical"}) result = rv.get_json() expected = {"name": "col0", "featuretype": "Numerical"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200) rv = c.post("/datasets", data={ "file": self.gif_file(), }) name = rv.get_json().get("name") rv = c.patch(f"/datasets/{name}/columns/unk", json={"featuretype": "Numerical"}) result = rv.get_json() expected = {"message": "The specified column does not exist"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 404)
def test_get_dataset(self): with app.test_client() as c: rv = c.get("/datasets/UNK") result = rv.get_json() expected = {"message": "The specified dataset does not exist"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 404) rv = c.post("/datasets", data={ "file": self.iris_file(), }) name = rv.get_json().get("name") rv = c.get(f"/datasets/{name}") result = rv.get_json() expected = { "columns": [ { "name": "col0", "featuretype": "DateTime" }, { "name": "col1", "featuretype": "Numerical" }, { "name": "col2", "featuretype": "Numerical" }, { "name": "col3", "featuretype": "Numerical" }, { "name": "col4", "featuretype": "Numerical" }, { "name": "col5", "featuretype": "Categorical" }, ], "filename": "iris.data", } # name is machine-generated # we assert it exists, but we don't check its value self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200)
def test_list_columns(self): with app.test_client() as c: rv = c.get("/datasets/UNK/columns") result = rv.get_json() expected = {"message": "The specified dataset does not exist"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 404) rv = c.post("/datasets", data={ "file": self.iris_file(), }) name = rv.get_json().get("name") rv = c.get(f"/datasets/{name}/columns") result = rv.get_json() expected = [ { "name": "col0", "featuretype": "DateTime" }, { "name": "col1", "featuretype": "Numerical" }, { "name": "col2", "featuretype": "Numerical" }, { "name": "col3", "featuretype": "Numerical" }, { "name": "col4", "featuretype": "Numerical" }, { "name": "col5", "featuretype": "Categorical" }, ] self.assertListEqual(expected, result) self.assertEqual(rv.status_code, 200)
def test_create_dataset(self): with app.test_client() as c: rv = c.post("/datasets", data={}) result = rv.get_json() expected = {"message": "No file part"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 400) rv = c.post("/datasets", data={"file": (BytesIO(), "")}) result = rv.get_json() expected = {"message": "No selected file"} self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 400) rv = c.post("/datasets", data={ "file": self.iris_file(), "featuretypes": (BytesIO(b"date\n" + b"float\n" + b"float\n" + b"float\n" + b"float\n" + b"string"), "featuretypes.txt"), }) result = rv.get_json() expected = { "message": "featuretype must be one of DateTime, Numerical, Categorical" } self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 400) rv = c.post("/datasets", data={ "file": self.iris_file(), "featuretypes": (BytesIO(b"DateTime"), "featuretypes.txt"), }) result = rv.get_json() expected = { "message": "featuretypes must be the same length as the DataFrame columns" } self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 400) rv = c.post("/datasets", data={ "file": self.iris_file(), }) result = rv.get_json() expected = { "columns": [ { "name": "col0", "featuretype": "DateTime" }, { "name": "col1", "featuretype": "Numerical" }, { "name": "col2", "featuretype": "Numerical" }, { "name": "col3", "featuretype": "Numerical" }, { "name": "col4", "featuretype": "Numerical" }, { "name": "col5", "featuretype": "Categorical" }, ], "filename": "iris.data", } # name is machine-generated # we assert it exists, but we don't assert their values self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200) rv = c.post("/datasets", data={ "file": self.boston_file(), }) result = rv.get_json() expected = { "columns": [ { "name": "col0", "featuretype": "Numerical" }, { "name": "col1", "featuretype": "Numerical" }, { "name": "col2", "featuretype": "Numerical" }, { "name": "col3", "featuretype": "Numerical" }, { "name": "col4", "featuretype": "Numerical" }, { "name": "col5", "featuretype": "Numerical" }, { "name": "col6", "featuretype": "Numerical" }, { "name": "col7", "featuretype": "Numerical" }, { "name": "col8", "featuretype": "Numerical" }, { "name": "col9", "featuretype": "Numerical" }, { "name": "col10", "featuretype": "Numerical" }, { "name": "col11", "featuretype": "Numerical" }, { "name": "col12", "featuretype": "Numerical" }, { "name": "col13", "featuretype": "Numerical" }, ], "filename": "boston.data", } # name is machine-generated # we assert it exists, but we don't assert their values self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200) rv = c.post("/datasets", data={ "file": self.titanic_file(), }) result = rv.get_json() expected = { "columns": [ { "name": "PassengerId", "featuretype": "Numerical" }, { "name": "Survived", "featuretype": "Numerical" }, { "name": "Pclass", "featuretype": "Numerical" }, { "name": "Name", "featuretype": "Categorical" }, { "name": "Sex", "featuretype": "Categorical" }, { "name": "Age", "featuretype": "Numerical" }, { "name": "SibSp", "featuretype": "Numerical" }, { "name": "Parch", "featuretype": "Numerical" }, { "name": "Ticket", "featuretype": "Categorical" }, { "name": "Fare", "featuretype": "Numerical" }, { "name": "Cabin", "featuretype": "Categorical" }, { "name": "Embarked", "featuretype": "Categorical" }, ], "filename": "titanic.csv", } # name is machine-generated # we assert it exists, but we don't assert their values self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200) rv = c.post("/datasets", data={ "file": self.iris_file(), "featuretypes": self.iris_featuretypes(), }) result = rv.get_json() expected = { "columns": [ { "name": "col0", "featuretype": "DateTime" }, { "name": "col1", "featuretype": "Numerical" }, { "name": "col2", "featuretype": "Numerical" }, { "name": "col3", "featuretype": "Numerical" }, { "name": "col4", "featuretype": "Numerical" }, { "name": "col5", "featuretype": "Categorical" }, ], "filename": "iris.data", } self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200) rv = c.post("/datasets", data={ "file": self.gif_file(), }) result = rv.get_json() expected = { "filename": "image.gif", } self.assertIn("name", result) del result["name"] self.assertDictEqual(expected, result) self.assertEqual(rv.status_code, 200)
def test_list_datasets(self): with app.test_client() as c: rv = c.get("/datasets") result = rv.get_json() self.assertIsInstance(result, list)
def test_ping(self): with app.test_client() as c: rv = c.get("/") result = rv.get_data(as_text=True) expected = "pong" self.assertEqual(result, expected)