github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/util/ui/prompt_test.go (about) 1 package ui_test 2 3 import ( 4 "code.cloudfoundry.org/cli/util/configv3" 5 . "code.cloudfoundry.org/cli/util/ui" 6 "code.cloudfoundry.org/cli/util/ui/uifakes" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 . "github.com/onsi/gomega/gbytes" 10 ) 11 12 var _ = Describe("Prompts", func() { 13 var ( 14 ui *UI 15 fakeConfig *uifakes.FakeConfig 16 out *Buffer 17 errBuff *Buffer 18 inBuffer *Buffer 19 ) 20 21 BeforeEach(func() { 22 fakeConfig = new(uifakes.FakeConfig) 23 fakeConfig.ColorEnabledReturns(configv3.ColorEnabled) 24 25 var err error 26 ui, err = NewUI(fakeConfig) 27 Expect(err).NotTo(HaveOccurred()) 28 29 out = NewBuffer() 30 ui.Out = out 31 ui.OutForInteration = out 32 errBuff = NewBuffer() 33 ui.Err = errBuff 34 35 inBuffer = NewBuffer() 36 ui.In = inBuffer 37 }) 38 39 Describe("DisplayBoolPrompt", func() { 40 It("displays the passed in string", func() { 41 _, _ = ui.DisplayBoolPrompt(false, "some-prompt", nil) 42 Expect(out).To(Say(`some-prompt \[yN\]:`)) 43 }) 44 45 When("the user chooses yes", func() { 46 BeforeEach(func() { 47 _, err := inBuffer.Write([]byte("y\n")) 48 Expect(err).ToNot(HaveOccurred()) 49 }) 50 51 It("returns true", func() { 52 response, err := ui.DisplayBoolPrompt(false, "some-prompt", nil) 53 Expect(err).ToNot(HaveOccurred()) 54 Expect(response).To(BeTrue()) 55 }) 56 }) 57 58 When("the user chooses no", func() { 59 BeforeEach(func() { 60 _, err := inBuffer.Write([]byte("n\n")) 61 Expect(err).ToNot(HaveOccurred()) 62 }) 63 64 It("returns false", func() { 65 response, err := ui.DisplayBoolPrompt(false, "some-prompt", nil) 66 Expect(err).ToNot(HaveOccurred()) 67 Expect(response).To(BeFalse()) 68 }) 69 }) 70 71 When("the user chooses the default", func() { 72 BeforeEach(func() { 73 _, err := inBuffer.Write([]byte("\n")) 74 Expect(err).ToNot(HaveOccurred()) 75 }) 76 77 When("the default is true", func() { 78 It("returns true", func() { 79 response, err := ui.DisplayBoolPrompt(true, "some-prompt", nil) 80 Expect(err).ToNot(HaveOccurred()) 81 Expect(response).To(BeTrue()) 82 }) 83 }) 84 85 When("the default is false", func() { 86 It("returns false", func() { 87 response, err := ui.DisplayBoolPrompt(false, "some-prompt", nil) 88 Expect(err).ToNot(HaveOccurred()) 89 Expect(response).To(BeFalse()) 90 }) 91 }) 92 }) 93 94 When("the interact library returns an error", func() { 95 It("returns the error", func() { 96 _, err := inBuffer.Write([]byte("invalid\n")) 97 Expect(err).ToNot(HaveOccurred()) 98 _, err = ui.DisplayBoolPrompt(false, "some-prompt", nil) 99 Expect(err).To(HaveOccurred()) 100 }) 101 }) 102 }) 103 104 Describe("DisplayPasswordPrompt", func() { 105 BeforeEach(func() { 106 inBuffer.Write([]byte("some-input\n")) 107 }) 108 109 It("displays the passed in string", func() { 110 _, _ = ui.DisplayPasswordPrompt("App {{.AppName}} does not exist.", map[string]interface{}{ 111 "AppName": "some-app", 112 }) 113 Expect(out).To(Say("App some-app does not exist.")) 114 }) 115 116 It("returns the user input", func() { 117 userInput, err := ui.DisplayPasswordPrompt("App {{.AppName}} does not exist.", map[string]interface{}{ 118 "AppName": "some-app", 119 }) 120 121 Expect(err).ToNot(HaveOccurred()) 122 Expect(userInput).To(Equal("some-input")) 123 Expect(out).ToNot(Say("some-input")) 124 }) 125 126 When("the locale is not set to English", func() { 127 BeforeEach(func() { 128 fakeConfig.LocaleReturns("fr-FR") 129 130 var err error 131 ui, err = NewUI(fakeConfig) 132 Expect(err).NotTo(HaveOccurred()) 133 134 ui.Out = out 135 ui.OutForInteration = out 136 }) 137 138 It("translates and displays the prompt", func() { 139 _, _ = ui.DisplayPasswordPrompt("App {{.AppName}} does not exist.", map[string]interface{}{ 140 "AppName": "some-app", 141 }) 142 Expect(out).To(Say("L'application some-app n'existe pas.\n")) 143 }) 144 }) 145 }) 146 })