1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00
mxpv-podsync/pkg/ytdl/ytdl_test.go
Maksym Pavlenko c6e602e5f6 Refactor ytdl
2020-03-07 14:51:38 -08:00

110 lines
3.2 KiB
Go

package ytdl
import (
"testing"
"github.com/mxpv/podsync/pkg/config"
"github.com/mxpv/podsync/pkg/model"
"github.com/stretchr/testify/assert"
)
func TestBuildArgs(t *testing.T) {
tests := []struct {
name string
format model.Format
quality model.Quality
maxHeight int
output string
videoURL string
expect []string
}{
{
name: "Audio unknown quality",
format: model.FormatAudio,
output: "/tmp/1",
videoURL: "http://url",
expect: []string{"--extract-audio", "--audio-format", "mp3", "--format", "bestaudio", "--output", "/tmp/1", "http://url"},
},
{
name: "Audio low quality",
format: model.FormatAudio,
quality: model.QualityLow,
output: "/tmp/1",
videoURL: "http://url",
expect: []string{"--extract-audio", "--audio-format", "mp3", "--format", "worstaudio", "--output", "/tmp/1", "http://url"},
},
{
name: "Audio best quality",
format: model.FormatAudio,
quality: model.QualityHigh,
output: "/tmp/1",
videoURL: "http://url",
expect: []string{"--extract-audio", "--audio-format", "mp3", "--format", "bestaudio", "--output", "/tmp/1", "http://url"},
},
{
name: "Video unknown quality",
format: model.FormatVideo,
output: "/tmp/1",
videoURL: "http://url",
expect: []string{"--format", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best", "--output", "/tmp/1", "http://url"},
},
{
name: "Video unknown quality with maxheight",
format: model.FormatVideo,
maxHeight: 720,
output: "/tmp/1",
videoURL: "http://url",
expect: []string{"--format", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best", "--output", "/tmp/1", "http://url"},
},
{
name: "Video low quality",
format: model.FormatVideo,
quality: model.QualityLow,
output: "/tmp/2",
videoURL: "http://url",
expect: []string{"--format", "worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst", "--output", "/tmp/2", "http://url"},
},
{
name: "Video low quality with maxheight",
format: model.FormatVideo,
quality: model.QualityLow,
maxHeight: 720,
output: "/tmp/2",
videoURL: "http://url",
expect: []string{"--format", "worstvideo[ext=mp4]+worstaudio[ext=m4a]/worst[ext=mp4]/worst", "--output", "/tmp/2", "http://url"},
},
{
name: "Video high quality",
format: model.FormatVideo,
quality: model.QualityHigh,
output: "/tmp/2",
videoURL: "http://url1",
expect: []string{"--format", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best", "--output", "/tmp/2", "http://url1"},
},
{
name: "Video high quality with maxheight",
format: model.FormatVideo,
quality: model.QualityHigh,
maxHeight: 1024,
output: "/tmp/2",
videoURL: "http://url1",
expect: []string{"--format", "bestvideo[height<=1024][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best", "--output", "/tmp/2", "http://url1"},
},
}
for _, tst := range tests {
t.Run(tst.name, func(t *testing.T) {
result := buildArgs(&config.Feed{
Format: tst.format,
Quality: tst.quality,
MaxHeight: tst.maxHeight,
}, &model.Episode{
VideoURL: tst.videoURL,
}, tst.output)
assert.EqualValues(t, tst.expect, result)
})
}
}