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 test_delete_category_and_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)

        temp_id = new_category.id
        db.delete_category(new_category.id)
        pc = db.session.query(pst.db.ProcessCategory).filter(pst.db.ProcessCategory.title == "TITLE")
        self.assertEqual(pc.count(), 0)
        filter = db.session.query(pst.db.ProcessFilter).filter(pst.db.ProcessFilter.process_category_id == temp_id)
        self.assertEqual(filter.count(), 0)

        db.session.close()
        rm(testdb)