New argument --show-time-today for fetching dashboard coding activity

This commit is contained in:
Alan Hamlett 2019-05-07 00:12:30 -07:00
parent 1f6d0f4981
commit 708001c6e7
7 changed files with 167 additions and 4 deletions

View file

@ -10,4 +10,4 @@ usage: wakatime [-h] [--entity FILE] [--key KEY] [--write] [--plugin PLUGIN]
[--include-only-with-project-file] [--extra-heartbeats]
[--log-file LOG_FILE] [--api-url API_URL] [--timeout TIMEOUT]
[--sync-offline-activity SYNC_OFFLINE_ACTIVITY]
[--config CONFIG] [--verbose] [--version]
[--show-time-today] [--config CONFIG] [--verbose] [--version]

View file

@ -76,6 +76,7 @@ optional arguments:
sent while online 5 offline heartbeats are synced. Can
be used without --entity to only sync offline activity
without generating new heartbeats.
--show-time-today Returns dashboard time for Today.
--config CONFIG Defaults to ~/.wakatime.cfg.
--verbose Turns on debug messages in log file.
--version show program's version number and exit

View file

@ -21,7 +21,7 @@ from wakatime.constants import (
from wakatime.packages.requests.exceptions import RequestException
from wakatime.packages.requests.models import Response
from wakatime.utils import get_user_agent
from .utils import mock, json, ANY, CustomResponse, TemporaryDirectory, TestCase, NamedTemporaryFile
from .utils import mock, json, ANY, CustomResponse, SummaryResponse, TemporaryDirectory, TestCase, NamedTemporaryFile
class ArgumentsTestCase(TestCase):
@ -322,6 +322,27 @@ class ArgumentsTestCase(TestCase):
self.assertHeartbeatNotSavedOffline()
self.assertOfflineHeartbeatsNotSynced()
@log_capture()
def test_missing_entity_argument_with_show_time_today_arg(self, logs):
logging.disable(logging.NOTSET)
self.patched['wakatime.packages.requests.adapters.HTTPAdapter.send'].return_value = SummaryResponse()
config = 'tests/samples/configs/good_config.cfg'
args = ['--config', config, '--show-time-today', '--verbose']
retval = execute(args)
self.assertEquals(retval, SUCCESS)
self.assertNothingLogged(logs)
expected = '4 hrs 23 mins\n'
actual = self.getPrintedOutput()
self.assertEquals(actual, expected)
self.assertHeartbeatNotSavedOffline()
self.assertOfflineHeartbeatsNotSynced()
@log_capture()
def test_missing_api_key(self, logs):
logging.disable(logging.NOTSET)

View file

@ -287,3 +287,22 @@ class CustomResponse(Response):
return self.second_response_text if self.second_response_text is not None else self.response_text
self._count += 1
return self.response_text
class SummaryResponse(Response):
response_code = 200
response_text = '{"data": [{"grand_total": {"text": "4 hrs 23 mins"}}]}'
_count = 0
@property
def status_code(self):
return self.response_code
@status_code.setter
def status_code(self, value):
pass
@property
def text(self):
return self.response_text