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_incorrect_process_filter(self):
     testdb = str(time.time()) + ".db"
     db = DBConnection(db_filename=testdb)
     for x in xrange(0, 10):
         # x = 0
         current_process = pst.processes.get_current()
         random_title = random_string(10)
         random_filename = random_string(10)
         current_process.title = "Developer Tools - http://127.0.0.1:8081/" + random_title
         current_process.filename = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
         process = db.add_process(current_process)
         new_category = db.add_category(title="TITLE")
         random_title2 = "TimeTracker"
         random_filename2 = ""
         new_filter = db.add_filter(
             category_id=new_category.id, title_search=random_title2, filename_search=random_filename2
         )
         db.assign_categories()
         # processes = db.get_processes()
         processes = [pst.db.row2dict(row) for row in db.get_processes()]
         self.assertEqual(0, int(processes[x]["process_categories"][0]["id"]))
         self.assertEqual("", processes[x]["process_categories"][0]["filters"][0]["title_search"])
         self.assertEqual("", processes[x]["process_categories"][0]["filters"][0]["filename_search"])
     db.session.close()
     rm(testdb)
 def test_add_process_and_process_category_and_assign(self):
     testdb = str(time.time()) + ".db"
     db = DBConnection(db_filename=testdb)
     for x in xrange(0, 10):
         # x = 0
         current_process = pst.processes.get_current()
         random_title = random_string(10)
         random_filename = random_string(10)
         current_process.title = "TEST TITLE " + random_title
         current_process.filename = "TEST FILENAME " + random_filename
         process = db.add_process(current_process)
         new_category = db.add_category(title="TITLE")
         new_filter = db.add_filter(
             category_id=new_category.id, title_search=random_title, filename_search=random_filename
         )
         db.assign_categories()
         # processes = db.get_processes()
         processes = [pst.db.row2dict(row) for row in db.get_processes()]
         self.assertEqual(new_category.id, int(processes[x]["process_categories"][0]["id"]))
         self.assertEqual(
             new_filter.title_search, processes[x]["process_categories"][0]["filters"][0]["title_search"]
         )
         self.assertEqual(
             new_filter.filename_search, processes[x]["process_categories"][0]["filters"][0]["filename_search"]
         )
     db.session.close()
     rm(testdb)
    def test_add_process_and_process_category_and_assign_and_delete(self):
        testdb = str(time.time()) + ".db"
        db = DBConnection(db_filename=testdb)
        tests_to_run = 5
        for x in xrange(0, tests_to_run):
            # x = 0
            current_process = pst.processes.get_current()
            random_title = random_string(10)
            random_filename = random_string(10)
            current_process.title = "TEST TITLE " + random_title
            current_process.filename = "TEST FILENAME " + random_filename
            process = db.add_process(current_process)
            new_category = db.add_category(title="TITLE")
            new_filter = db.add_filter(
                category_id=new_category.id, title_search=random_title, filename_search=random_filename
            )
            db.assign_categories()
            # processes = db.get_processes()
            processes = [pst.db.row2dict(row) for row in db.get_processes()]
            self.assertEqual(new_category.id, int(processes[x]["process_categories"][0]["id"]))
            self.assertEqual(
                new_filter.title_search, processes[x]["process_categories"][0]["filters"][0]["title_search"]
            )
            self.assertEqual(
                new_filter.filename_search, processes[x]["process_categories"][0]["filters"][0]["filename_search"]
            )

        processes = db.get_processes()
        for process in processes:
            db.delete_category(process[1].id)
            db.assign_categories()

        association_table_data = db.session.query("* FROM association")

        self.assertEqual(tests_to_run, association_table_data.count())

        processes = db.get_processes()
        for process in processes:
            self.assertEqual(process[1].process_categories[0].title, "unassigned")
            self.assertEqual(len(process[1].process_categories), 1)

        for process in processes:
            random_title = random_string(10)
            random_filename = random_string(10)
            new_category = db.add_category(title="TITLE")
            new_filter = db.add_filter(
                category_id=new_category.id, title_search=random_title, filename_search=random_filename
            )

        db.assign_categories()
        processes = db.get_processes()
        for process in processes:
            self.assertEqual(process[1].process_categories[0].title, "unassigned")
            self.assertEqual(len(process[1].process_categories), 1)

        db.session.close()
        rm(testdb)
def add_process_and_type(db):
    current_process = pst.processes.get_current()
    random_title = random_string(10)
    random_filename = random_string(10)
    current_process.title = "TEST TITLE " + random_title
    current_process.filename = "TEST FILENAME " + random_filename
    process = db.add_process(current_process)
    new_category = db.add_category(title="TITLE")
    new_filter = db.add_filter(title_search = random_title,
                               filename_search = random_filename,
                               category_id=new_category.id)
    db.assign_categories()
    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_add_process_category_filter(self):
        testdb = str(time.time()) + ".db"
        db = DBConnection(db_filename=testdb)

        random_title = random_string(10)
        random_filename = random_string(10)
        new_category = db.add_category(title="TITLE")
        new_filter = db.add_filter(
            category_id=new_category.id, title_search=random_title, filename_search=random_filename
        )

        pc = db.session.query(pst.db.ProcessCategory).filter(pst.db.ProcessCategory.title == "TITLE").one()
        self.assertEquals(pc.id, 1)
        self.assertEqual(pc.process_filter[0].title_search, random_title)
        self.assertEqual(pc.process_filter[0].filename_search, random_filename)
        db.session.close()
        rm(testdb)
 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_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)