def test_reorder(self): new_cat_1 = self.db.add_category(title="TITLE1") new_cat_2 = self.db.add_category(title="TITLE2") new_cat_1_filter = self.db.add_filter(new_cat_1.id) new_cat_2_filter = self.db.add_filter(new_cat_2.id) cats = [pst.db.row2dict(row) for row in self.db.get_process_categories()] self.assertGreater(len(cats), 2) for cat in cats: if cat["title"] == "TITLE2": cat["order"] = 1 if cat["title"] == "TITLE1": cat["order"] = 2 test_json = json.dumps(cats, indent=4, sort_keys=True) response = self.webapp_request("/data/reorder_categories", method="POST", data=test_json) jsonobj = json.loads("\n\r".join(response.body)) new_cat_1_amended_from_json = [x for x in jsonobj if x["title"] == "TITLE1"][0] new_cat_2_amended_from_json = [x for x in jsonobj if x["title"] == "TITLE2"][0] self.assertEqual(int(new_cat_1_amended_from_json["order"]), 2) self.assertEqual(int(new_cat_2_amended_from_json["order"]), 1) self.db.session.close() self.db = DBConnection(db_filename=self.testdb) cats2 = [pst.db.row2dict(row) for row in self.db.get_process_categories()] new_cat_1_amended = [x for x in cats2 if x["title"] == "TITLE1"][0] new_cat_2_amended = [x for x in cats2 if x["title"] == "TITLE2"][0] self.assertEqual(int(new_cat_1_amended["order"]), 2) self.assertEqual(int(new_cat_2_amended["order"]), 1)
def setUp(self): self.testdb = str(time.time()) + ".db" self.db = DBConnection(db_filename=self.testdb) # testhelpers.add_process_and_type(self.db) WEB_PORT = 8076 self.local = cherrypy.lib.httputil.Host("127.0.0.1", 50000, "") self.remote = cherrypy.lib.httputil.Host("127.0.0.1", WEB_PORT, "") SCREENSHOT_FOLDER = "testscreenshots/" self.server = pst.WebServer({"port": WEB_PORT, "screenshots_dir": SCREENSHOT_FOLDER, "db": self.testdb})
class TestWebService(BaseCherryPyTestCase): def setUp(self): self.testdb = str(time.time()) + ".db" self.db = DBConnection(db_filename=self.testdb) # testhelpers.add_process_and_type(self.db) WEB_PORT = 8076 self.local = cherrypy.lib.httputil.Host("127.0.0.1", 50000, "") self.remote = cherrypy.lib.httputil.Host("127.0.0.1", WEB_PORT, "") SCREENSHOT_FOLDER = "testscreenshots/" self.server = pst.WebServer({"port": WEB_PORT, "screenshots_dir": SCREENSHOT_FOLDER, "db": self.testdb}) def test_get_process_categories(self): response = self.webapp_request("/data/process_categories") self.assertEqual(response.output_status, "200 OK") # response body is wrapped into a list internally by CherryPy jsonobj = json.loads("\n\r".join(response.body)) print jsonobj self.assertTrue(len(jsonobj) > 0) # self.assertEqual(response.body, ['hello world']) def test_create_process_category(self): test_title = random_string(10) test_title_search = random_string(10) test_filename_search = random_string(10) current_process = pst.processes.get_current() current_process.title = "TEST TITLE " + test_title_search current_process.filename = "TEST FILENAME " + test_filename_search process = self.db.add_process(current_process) response = self.webapp_request( "/data/process_categories", method="POST", title=test_title, title_search=test_title_search, filename_search=test_filename_search, assign=True, ) jsonobj = json.loads("\n\r".join(response.body)) new_cat = [x for x in jsonobj if x["title"] == test_title][0] self.assertEqual(new_cat["title"], test_title) self.assertEqual(new_cat["filters"][0]["title_search"], test_title_search) self.assertEqual(new_cat["filters"][0]["filename_search"], test_filename_search) process_responce = self.webapp_request("/data/processes", id=process.id) process_jsonobj = json.loads("\n\r".join(process_responce.body)) self.assertEqual(new_cat["id"], process_jsonobj[0]["process_categories"][0]["id"]) def test_add_process_category_filter(self): test_title = random_string(10) test_title_search = random_string(10) test_filename_search = random_string(10) current_process = pst.processes.get_current() current_process.title = "TEST TITLE " + test_title_search current_process.filename = "TEST FILENAME " + test_filename_search process = self.db.add_process(current_process) response = self.webapp_request( "/data/process_categories", method="POST", title=test_title, title_search=test_title_search, filename_search=test_filename_search, assign=True, ) jsonobj = json.loads("\n\r".join(response.body)) new_cat = [x for x in jsonobj if x["title"] == test_title][0] self.assertEqual(new_cat["title"], test_title) self.assertEqual(new_cat["filters"][0]["title_search"], test_title_search) self.assertEqual(new_cat["filters"][0]["filename_search"], test_filename_search) test_title_search2 = random_string(10) test_filename_search2 = random_string(10) response2 = self.webapp_request( "/data/category_filters", method="POST", title_search=test_title_search2, filename_search=test_filename_search2, category_id=new_cat["id"], assign=True, ) jsonobj2 = json.loads("\n\r".join(response2.body)) response3 = self.webapp_request("/data/process_categories") jsonobj3 = json.loads("\n\r".join(response3.body)) new_cat2 = [x for x in jsonobj3 if x["title"] == test_title][0] self.assertGreater(len(new_cat2["filters"]), 1) self.assertEqual(new_cat2["filters"][1]["title_search"], test_title_search2) self.assertEqual(new_cat2["filters"][1]["filename_search"], test_filename_search2) def test_delete_process(self): added_process = testhelpers.add_process(self.db) response = self.webapp_request("/data/processes", method="DELETE", id=added_process.id) print response.body processes = self.db.get_processes() self.assertEqual(processes.count(), 0) def test_delete_process_category(self): test_title = random_string(10) test_title_search = random_string(10) test_filename_search = random_string(10) response = self.webapp_request( "/data/process_categories", method="POST", title=test_title, title_search=test_title_search, filename_search=test_filename_search, assign=True, ) jsonobj = json.loads("\n\r".join(response.body)) new_cat = [x for x in jsonobj if x["title"] == test_title][0] self.assertEqual(new_cat["title"], test_title) self.assertEqual(new_cat["filters"][0]["title_search"], test_title_search) self.assertEqual(new_cat["filters"][0]["filename_search"], test_filename_search) response2 = self.webapp_request("/data/process_categories", method="DELETE", id=new_cat["id"], assign=True) jsonobj2 = json.loads("\n\r".join(response2.body)) print jsonobj2 self.assertEqual(len(jsonobj2), 1) self.assertEqual(len([x for x in jsonobj2 if x["title"] == test_title]), 0) def test_delete_category_filter(self): test_title = random_string(10) test_title_search = random_string(10) test_filename_search = random_string(10) response = self.webapp_request( "/data/process_categories", method="POST", title=test_title, title_search=test_title_search, filename_search=test_filename_search, assign=True, ) jsonobj = json.loads("\n\r".join(response.body)) new_cat = [x for x in jsonobj if x["title"] == test_title][0] self.assertEqual(new_cat["title"], test_title) self.assertEqual(new_cat["filters"][0]["title_search"], test_title_search) self.assertEqual(new_cat["filters"][0]["filename_search"], test_filename_search) test_title_search2 = random_string(10) test_filename_search2 = random_string(10) response2 = self.webapp_request( "/data/category_filters", method="POST", title_search=test_title_search2, filename_search=test_filename_search2, category_id=new_cat["id"], assign=True, ) response3 = self.webapp_request("/data/process_categories") jsonobj3 = json.loads("\n\r".join(response3.body)) new_cat2 = [x for x in jsonobj3 if x["title"] == test_title][0] self.assertGreater(len(new_cat2["filters"]), 1) self.assertEqual(new_cat2["filters"][1]["title_search"], test_title_search2) self.assertEqual(new_cat2["filters"][1]["filename_search"], test_filename_search2) response4 = self.webapp_request( "/data/category_filters", method="DELETE", id=new_cat2["filters"][1]["id"], category_id=new_cat2["id"], assign=True, ) jsonobj4 = json.loads("\n\r".join(response4.body)) self.assertEqual(1, len(jsonobj4)) response5 = self.webapp_request("/data/process_categories") jsonobj5 = json.loads("\n\r".join(response3.body)) new_cat5 = [x for x in jsonobj5 if x["title"] == test_title][0] self.assertGreater(len(new_cat5["filters"]), 1) def test_reorder(self): new_cat_1 = self.db.add_category(title="TITLE1") new_cat_2 = self.db.add_category(title="TITLE2") new_cat_1_filter = self.db.add_filter(new_cat_1.id) new_cat_2_filter = self.db.add_filter(new_cat_2.id) cats = [pst.db.row2dict(row) for row in self.db.get_process_categories()] self.assertGreater(len(cats), 2) for cat in cats: if cat["title"] == "TITLE2": cat["order"] = 1 if cat["title"] == "TITLE1": cat["order"] = 2 test_json = json.dumps(cats, indent=4, sort_keys=True) response = self.webapp_request("/data/reorder_categories", method="POST", data=test_json) jsonobj = json.loads("\n\r".join(response.body)) new_cat_1_amended_from_json = [x for x in jsonobj if x["title"] == "TITLE1"][0] new_cat_2_amended_from_json = [x for x in jsonobj if x["title"] == "TITLE2"][0] self.assertEqual(int(new_cat_1_amended_from_json["order"]), 2) self.assertEqual(int(new_cat_2_amended_from_json["order"]), 1) self.db.session.close() self.db = DBConnection(db_filename=self.testdb) cats2 = [pst.db.row2dict(row) for row in self.db.get_process_categories()] new_cat_1_amended = [x for x in cats2 if x["title"] == "TITLE1"][0] new_cat_2_amended = [x for x in cats2 if x["title"] == "TITLE2"][0] self.assertEqual(int(new_cat_1_amended["order"]), 2) self.assertEqual(int(new_cat_2_amended["order"]), 1) def tearDown(self): self.server.close() self.db.session.close() rm(self.testdb)