File: nodot_test.go

package info (click to toggle)
golang-ginkgo 1.2.0%2Bgit20161006.acfa16a-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 1,324 kB
  • ctags: 1,210
  • sloc: makefile: 12
file content (81 lines) | stat: -rw-r--r-- 2,622 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package nodot_test

import (
	. "github.com/onsi/ginkgo/ginkgo/nodot"
	"strings"
)

var _ = Describe("ApplyNoDot", func() {
	var result string

	apply := func(input string) string {
		output, err := ApplyNoDot([]byte(input))
		Ω(err).ShouldNot(HaveOccurred())
		return string(output)
	}

	Context("when no declarations have been imported yet", func() {
		BeforeEach(func() {
			result = apply("")
		})

		It("should add headings for the various declarations", func() {
			Ω(result).Should(ContainSubstring("// Declarations for Ginkgo DSL"))
			Ω(result).Should(ContainSubstring("// Declarations for Gomega DSL"))
			Ω(result).Should(ContainSubstring("// Declarations for Gomega Matchers"))
		})

		It("should import Ginkgo's declarations", func() {
			Ω(result).Should(ContainSubstring("var It = ginkgo.It"))
			Ω(result).Should(ContainSubstring("var XDescribe = ginkgo.XDescribe"))
		})

		It("should import Ginkgo's types", func() {
			Ω(result).Should(ContainSubstring("type Done ginkgo.Done"))
			Ω(result).Should(ContainSubstring("type Benchmarker ginkgo.Benchmarker"))
			Ω(strings.Count(result, "type ")).Should(Equal(2))
		})

		It("should import Gomega's DSL and matchers", func() {
			Ω(result).Should(ContainSubstring("var Ω = gomega.Ω"))
			Ω(result).Should(ContainSubstring("var ContainSubstring = gomega.ContainSubstring"))
			Ω(result).Should(ContainSubstring("var Equal = gomega.Equal"))
		})

		It("should not import blacklisted things", func() {
			Ω(result).ShouldNot(ContainSubstring("GINKGO_VERSION"))
			Ω(result).ShouldNot(ContainSubstring("GINKGO_PANIC"))
			Ω(result).ShouldNot(ContainSubstring("GOMEGA_VERSION"))
		})
	})

	It("should be idempotent (module empty lines - go fmt can fix those for us)", func() {
		first := apply("")
		second := apply(first)
		first = strings.Trim(first, "\n")
		second = strings.Trim(second, "\n")
		Ω(first).Should(Equal(second))
	})

	It("should not mess with other things in the input", func() {
		result = apply("var MyThing = SomethingThatsMine")
		Ω(result).Should(ContainSubstring("var MyThing = SomethingThatsMine"))
	})

	Context("when the user has redefined a name", func() {
		It("should honor the redefinition", func() {
			result = apply(`
var _ = gomega.Ω
var When = ginkgo.It
            `)

			Ω(result).Should(ContainSubstring("var _ = gomega.Ω"))
			Ω(result).ShouldNot(ContainSubstring("var Ω = gomega.Ω"))

			Ω(result).Should(ContainSubstring("var When = ginkgo.It"))
			Ω(result).ShouldNot(ContainSubstring("var It = ginkgo.It"))

			Ω(result).Should(ContainSubstring("var Context = ginkgo.Context"))
		})
	})
})