oh-my-posh/segment_ytm_test.go
2020-12-01 20:49:51 +01:00

92 lines
2.3 KiB
Go

package main
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
)
func TestYTMStringPlayingSong(t *testing.T) {
expected := "\ue602 Candlemass - Spellbreaker"
y := &ytm{
artist: "Candlemass",
track: "Spellbreaker",
status: playing,
}
assert.Equal(t, expected, y.string())
}
func TestYTMStringPausedSong(t *testing.T) {
expected := "\uF8E3 Candlemass - Spellbreaker"
y := &ytm{
artist: "Candlemass",
track: "Spellbreaker",
status: paused,
}
assert.Equal(t, expected, y.string())
}
func TestYTMStringStoppedSong(t *testing.T) {
expected := "\uf04d "
y := &ytm{
artist: "Candlemass",
track: "Spellbreaker",
status: stopped,
}
assert.Equal(t, expected, y.string())
}
func bootstrapYTMDATest(json string, err error) *ytm {
url := "http://localhost:1337"
env := new(MockedEnvironment)
env.On("doGet", url+"/query").Return([]byte(json), err)
props := &properties{
values: map[Property]interface{}{
APIURL: url,
},
}
ytm := &ytm{
env: env,
props: props,
}
return ytm
}
func TestYTMDAPlaying(t *testing.T) {
json := `{ "player": { "hasSong": true, "isPaused": false }, "track": { "author": "Candlemass", "title": "Spellbreaker" } }`
ytm := bootstrapYTMDATest(json, nil)
err := ytm.setStatus()
assert.NoError(t, err)
assert.Equal(t, playing, ytm.status)
assert.Equal(t, "Candlemass", ytm.artist)
assert.Equal(t, "Spellbreaker", ytm.track)
}
func TestYTMDAPaused(t *testing.T) {
json := `{ "player": { "hasSong": true, "isPaused": true }, "track": { "author": "Candlemass", "title": "Spellbreaker" } }`
ytm := bootstrapYTMDATest(json, nil)
err := ytm.setStatus()
assert.NoError(t, err)
assert.Equal(t, paused, ytm.status)
assert.Equal(t, "Candlemass", ytm.artist)
assert.Equal(t, "Spellbreaker", ytm.track)
}
func TestYTMDAStopped(t *testing.T) {
json := `{ "player": { "hasSong": false }, "track": { "author": "", "title": "" } }`
ytm := bootstrapYTMDATest(json, nil)
err := ytm.setStatus()
assert.NoError(t, err)
assert.Equal(t, stopped, ytm.status)
assert.Equal(t, "", ytm.artist)
assert.Equal(t, "", ytm.track)
}
func TestYTMDAError(t *testing.T) {
json := `{ "player": { "hasSong": false }, "track": { "author": "", "title": "" } }`
ytm := bootstrapYTMDATest(json, errors.New("Oh noes"))
enabled := ytm.enabled()
assert.False(t, enabled)
}