oh-my-posh/src/segments/wakatime_test.go
2024-11-04 12:15:40 +01:00

79 lines
1.5 KiB
Go

package segments
import (
"errors"
"fmt"
"testing"
"github.com/jandedobbeleer/oh-my-posh/src/properties"
"github.com/jandedobbeleer/oh-my-posh/src/runtime/mock"
"github.com/stretchr/testify/assert"
)
func TestWTTrackedTime(t *testing.T) {
cases := []struct {
Error error
Case string
Expected string
Template string
Seconds int
CacheTimeout int
CacheFoundFail bool
}{
{
Case: "nothing tracked",
Seconds: 0,
Expected: "0s",
},
{
Case: "25 minutes",
Seconds: 1500,
Expected: "25m",
},
{
Case: "2 hours",
Seconds: 7200,
Expected: "2h",
},
{
Case: "2h 45m",
Seconds: 9900,
Expected: "2h 45m",
},
{
Case: "negative number",
Seconds: -9900,
Expected: "2h 45m",
},
{
Case: "no cache 2h 45m",
Seconds: 9900,
Expected: "2h 45m",
},
{
Case: "api error",
Seconds: 2,
Expected: "0s",
Error: errors.New("api error"),
},
}
for _, tc := range cases {
env := &mock.Environment{}
response := fmt.Sprintf(`{"cumulative_total": {"seconds": %.2f, "text": "x"}}`, float64(tc.Seconds))
env.On("HTTPRequest", FAKEAPIURL).Return([]byte(response), tc.Error)
props := properties.Map{
URL: FAKEAPIURL,
}
w := &Wakatime{}
w.Init(props, env)
assert.ErrorIs(t, tc.Error, w.setAPIData(), tc.Case+" - Error")
assert.Equal(t, tc.Expected, renderTemplate(env, w.Template(), w), tc.Case+" - String")
}
}