1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/pkg/config/config_test.go

92 lines
1.9 KiB
Go
Raw Normal View History

2019-10-26 22:43:30 -07:00
package config
import (
"io/ioutil"
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
2019-10-29 14:44:59 -07:00
"github.com/mxpv/podsync/pkg/model"
2019-10-26 22:43:30 -07:00
)
func TestLoadConfig(t *testing.T) {
const file = `
[tokens]
youtube = "123"
vimeo = "321"
2019-10-29 12:50:06 -07:00
[server]
port = 80
data_dir = "test/data/"
2019-10-26 22:43:30 -07:00
[feeds]
[feeds.XYZ]
url = "https://youtube.com/watch?v=ygIUF678y40"
page_size = 50
update_period = "5h"
2019-10-29 12:50:06 -07:00
format = "audio"
quality = "low"
2019-10-26 22:43:30 -07:00
`
f, err := ioutil.TempFile("", "")
require.NoError(t, err)
defer os.Remove(f.Name())
_, err = f.WriteString(file)
require.NoError(t, err)
config, err := LoadConfig(f.Name())
assert.NoError(t, err)
assert.NotNil(t, config)
2019-10-29 12:50:06 -07:00
assert.Equal(t, "test/data/", config.Server.DataDir)
assert.EqualValues(t, 80, config.Server.Port)
2019-10-26 22:43:30 -07:00
assert.Equal(t, "123", config.Tokens.YouTube)
assert.Equal(t, "321", config.Tokens.Vimeo)
assert.Len(t, config.Feeds, 1)
feed, ok := config.Feeds["XYZ"]
assert.True(t, ok)
assert.Equal(t, "https://youtube.com/watch?v=ygIUF678y40", feed.URL)
assert.EqualValues(t, 50, feed.PageSize)
assert.EqualValues(t, Duration{5 * time.Hour}, feed.UpdatePeriod)
2019-10-29 12:50:06 -07:00
assert.EqualValues(t, "audio", feed.Format)
assert.EqualValues(t, "low", feed.Quality)
}
func TestApplyDefaults(t *testing.T) {
const file = `
2019-10-29 15:07:59 -07:00
[server]
data_dir = "/data"
2019-10-29 12:50:06 -07:00
[feeds]
[feeds.A]
url = "https://youtube.com/watch?v=ygIUF678y40"
`
f, err := ioutil.TempFile("", "")
require.NoError(t, err)
defer os.Remove(f.Name())
_, err = f.WriteString(file)
require.NoError(t, err)
config, err := LoadConfig(f.Name())
assert.NoError(t, err)
assert.NotNil(t, config)
assert.Len(t, config.Feeds, 1)
feed, ok := config.Feeds["A"]
require.True(t, ok)
2019-10-29 14:44:59 -07:00
assert.EqualValues(t, feed.UpdatePeriod, Duration{model.DefaultUpdatePeriod})
2019-10-29 12:50:06 -07:00
assert.EqualValues(t, feed.PageSize, 50)
assert.EqualValues(t, feed.Quality, "high")
assert.EqualValues(t, feed.Format, "video")
2019-10-26 22:43:30 -07:00
}