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