Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
 def test_list_datasets(self):
     with app.test_client() as c:
         rv = c.get("/datasets")
         result = rv.get_json()
         self.assertIsInstance(result, list)
Example #6
0
 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)