🏡 index : quine-global/quintodrome.git

package cmd

import (
	"fmt"
	"os"
	"path/filepath"
	"strings"

	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
)

var _ = Describe("writePlaylist", func() {
	const m3u = "#EXTM3U\n#PLAYLIST:DJ Wave\n#EXTINF:364,Bel Canto - Dreaming Girl\n"
	plsFile := filepath.Join(os.TempDir(), fmt.Sprintf("navidrome-pls-%d.m3u8", os.Getpid()))

	BeforeEach(func() {
		DeferCleanup(func() { _ = os.Remove(plsFile) })
	})

	DescribeTable("writes the playlist to exactly one destination",
		func(file, wantStream, wantFile string) {
			var out strings.Builder

			writePlaylist(m3u, &out, file)

			written, _ := os.ReadFile(plsFile)
			Expect(out.String()).To(Equal(wantStream))
			Expect(string(written)).To(Equal(wantFile))
		},
		Entry("no file name writes to the stream", "", m3u, ""),
		Entry("a dash writes to the stream", "-", m3u, ""),
		Entry("a path writes to the file", plsFile, "", m3u),
	)
})