101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import os
 | 
						|
import unittest
 | 
						|
 | 
						|
from toggl.TogglPy import Toggl
 | 
						|
 | 
						|
# these tests assume three  things:
 | 
						|
#
 | 
						|
# first, that you have two environment variables defined
 | 
						|
# TOGGL_API_KEY
 | 
						|
# WORKPSPACE_ID
 | 
						|
#
 | 
						|
# second, that you are able to able to reach Toggl's live REST API.
 | 
						|
#
 | 
						|
# finally, the test_putTimeEntry() will likely fail unless you have 1) a Client "Self" and 2) Project "Self" defined.
 | 
						|
# and 3) some Pomodoros completed in your time entries.
 | 
						|
# this is because these are acceptance tests that are hitting my personal Toggl repo, where I do all three
 | 
						|
# of the above defined
 | 
						|
#
 | 
						|
 | 
						|
 | 
						|
class TogglPyTests(unittest.TestCase):
 | 
						|
    def setUp(self):
 | 
						|
        self.api_key = os.environ["TOGGL_API_KEY"]
 | 
						|
        if self.api_key is None:
 | 
						|
            raise Exception("Unable to execute api tests without an api key")
 | 
						|
 | 
						|
        self.workspace_id = os.environ["WORKSPACE_ID"]
 | 
						|
        if self.workspace_id is None:
 | 
						|
            raise Exception(
 | 
						|
                "Unable to execute api tests without a workspace key to query"
 | 
						|
            )
 | 
						|
 | 
						|
        self.toggl = Toggl()
 | 
						|
        self.toggl.setAPIKey(self.api_key)
 | 
						|
 | 
						|
    def test_connect(self):
 | 
						|
        response = self.toggl.request("https://api.track.toggl.com/api/v8/clients")
 | 
						|
pi.track.toggl.com/
 | 
						|
        self.assertTrue(response is not None)
 | 
						|
 | 
						|
    def test_putTimeEntry(self):
 | 
						|
        request_args = {
 | 
						|
            "workspace_id": self.workspace_id,
 | 
						|
        }
 | 
						|
        entries = self.toggl.getDetailedReport(request_args)
 | 
						|
        # for this tests I'm tagging my Pomodoro Entries
 | 
						|
        missing_projects = [
 | 
						|
            r
 | 
						|
            for r in entries["data"]
 | 
						|
            if r["project"] is None and "Pomodoro" in r["description"]
 | 
						|
        ]
 | 
						|
        me = missing_projects[0]
 | 
						|
        me_id = me["id"]  # remember for later
 | 
						|
 | 
						|
        # I've tagged my pomodoro entries as Self/Self
 | 
						|
        cp = self.toggl.getClientProject("Self", "Self")
 | 
						|
        project_id = cp["data"]["id"]
 | 
						|
        me["pid"] = project_id
 | 
						|
 | 
						|
        # his is the new stuff
 | 
						|
        response = self.toggl.putTimeEntry({"id": me_id, "pid": project_id})
 | 
						|
        self.assertTrue(response is not None)
 | 
						|
        self.assertTrue("data" in response)
 | 
						|
        self.assertTrue(response["data"]["pid"] == project_id)
 | 
						|
 | 
						|
    def test_getDetailedReportCSV(self):
 | 
						|
        data = {
 | 
						|
            "workspace_id": self.workspace_id,
 | 
						|
        }
 | 
						|
        csvfile = "data.csv"
 | 
						|
        self.toggl.getDetailedReportCSV(data, csvfile)
 | 
						|
        self.assertTrue(os.path.isfile(csvfile))
 | 
						|
        os.remove(csvfile)
 | 
						|
 | 
						|
        data = self.toggl.getDetailedReportCSV(data)
 | 
						|
        self.assertTrue(data is not None)
 | 
						|
 | 
						|
    def test_getDetailedReport(self):
 | 
						|
        data = {
 | 
						|
            "workspace_id": self.workspace_id,
 | 
						|
        }
 | 
						|
        d = self.toggl.getDetailedReport(data)
 | 
						|
        self.assertTrue(d is not None)
 | 
						|
        self.assertTrue(len(d.keys()) > 0)
 | 
						|
        fields = ["total_count", "total_currencies", "total_billable", "data"]
 | 
						|
        for f in fields:
 | 
						|
            self.assertTrue(f in d.keys())
 | 
						|
        data = d["data"]
 | 
						|
        self.assertTrue(len(data) > 0)
 | 
						|
        dr = data[0]
 | 
						|
        self.assertTrue("client" in dr)
 | 
						|
        self.assertTrue("start" in dr)
 | 
						|
        self.assertTrue("end" in dr)
 | 
						|
        self.assertTrue("task" in dr)
 | 
						|
        self.assertTrue("user" in dr)
 | 
						|
        self.assertTrue("project" in dr)
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    unittest.main()
 |