bumblebee-status/tests/modules/contrib/test_wakatime.py
2023-04-16 11:29:31 +01:00

56 lines
1.6 KiB
Python

from unittest import TestCase, mock
import pytest
from requests import Session
import core.config
import core.widget
import modules.contrib.wakatime
pytest.importorskip("requests")
def build_wakatime_module(waka_format=None, waka_range=None):
config = core.config.Config([
"-p",
f"wakatime.format={waka_format}" if waka_format else "",
f"wakatime.range={waka_range}" if waka_range else ""
])
return modules.contrib.wakatime.Module(config=config, theme=None)
def mock_summaries_api_response():
res = mock.Mock()
res.json = lambda: {
"cumulative_total": {
"text": "3 hrs 2 mins",
"seconds": 10996,
"digital": "3:02",
"decimal": "3.03"
},
}
res.status_code = 200
return res
class TestWakatimeUnit(TestCase):
def test_load_module(self):
__import__("modules.contrib.wakatime")
@mock.patch.object(Session, "get", return_value=mock_summaries_api_response())
def test_default_values(self, mock_get):
module = build_wakatime_module()
module.update()
assert module.widgets()[0].full_text() == "3:02"
mock_get.assert_called_with('https://wakatime.com/api/v1/users/current/summaries?range=today')
@mock.patch.object(Session, "get", return_value=mock_summaries_api_response())
def test_custom_configs(self, mock_get):
module = build_wakatime_module(waka_format="text", waka_range="last 7 days")
module.update()
assert module.widgets()[0].full_text() == "3 hrs 2 mins"
mock_get.assert_called_with('https://wakatime.com/api/v1/users/current/summaries?range=last 7 days')