1package main
2
3import (
4	"io/ioutil"
5	"os"
6	"os/exec"
7
8	. "github.com/onsi/ginkgo"
9	. "github.com/onsi/gomega"
10	. "github.com/onsi/gomega/gbytes"
11	. "github.com/onsi/gomega/gexec"
12)
13
14var _ = Describe("Running spiff", func() {
15	Describe("merge", func() {
16		var merge *Session
17
18		Context("when given a bad file path", func() {
19			BeforeEach(func() {
20				var err error
21				merge, err = Start(exec.Command(spiff, "merge", "foo.yml"), GinkgoWriter, GinkgoWriter)
22				Expect(err).NotTo(HaveOccurred())
23			})
24
25			It("says file not found", func() {
26				Expect(merge.Wait()).To(Exit(1))
27				Expect(merge.Err).To(Say("foo.yml: no such file or directory"))
28			})
29		})
30
31		Context("when given a single file", func() {
32			var basicTemplate *os.File
33
34			BeforeEach(func() {
35				var err error
36
37				basicTemplate, err = ioutil.TempFile(os.TempDir(), "basic.yml")
38				Expect(err).NotTo(HaveOccurred())
39				basicTemplate.Write([]byte(`
40---
41foo: bar
42`))
43				merge, err = Start(exec.Command(spiff, "merge", basicTemplate.Name()), GinkgoWriter, GinkgoWriter)
44				Expect(err).NotTo(HaveOccurred())
45			})
46
47			AfterEach(func() {
48				os.Remove(basicTemplate.Name())
49			})
50
51			It("resolves the template and prints it out", func() {
52				Expect(merge.Wait()).To(Exit(0))
53				Expect(merge.Out).To(Say(`foo: bar`))
54			})
55		})
56	})
57})
58