github.com/jasonkeene/cli@v6.14.1-0.20160816203908-ca5715166dfb+incompatible/cf/requirements/dea_application_test.go (about) 1 package requirements_test 2 3 import ( 4 "errors" 5 6 "github.com/cloudfoundry/cli/cf/models" 7 "github.com/cloudfoundry/cli/cf/requirements" 8 9 "github.com/cloudfoundry/cli/cf/api/applications/applicationsfakes" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("DeaApplication", func() { 16 var ( 17 req requirements.DEAApplicationRequirement 18 appRepo *applicationsfakes.FakeRepository 19 appName string 20 ) 21 22 BeforeEach(func() { 23 appName = "fake-app-name" 24 appRepo = new(applicationsfakes.FakeRepository) 25 req = requirements.NewDEAApplicationRequirement(appName, appRepo) 26 }) 27 28 Describe("GetApplication", func() { 29 It("returns an empty application", func() { 30 Expect(req.GetApplication()).To(Equal(models.Application{})) 31 }) 32 33 Context("when the requirement has been executed", func() { 34 BeforeEach(func() { 35 app := models.Application{} 36 app.GUID = "fake-app-guid" 37 appRepo.ReadReturns(app, nil) 38 39 req.Execute() 40 }) 41 42 It("returns the application", func() { 43 Expect(req.GetApplication().GUID).To(Equal("fake-app-guid")) 44 }) 45 }) 46 }) 47 48 Describe("Execute", func() { 49 Context("when the returned application is a Diego application", func() { 50 BeforeEach(func() { 51 app := models.Application{} 52 app.Diego = true 53 appRepo.ReadReturns(app, nil) 54 }) 55 56 It("fails with error", func() { 57 err := req.Execute() 58 Expect(err).To(HaveOccurred()) 59 Expect(err.Error()).To(ContainSubstring("The app is running on the Diego backend, which does not support this command.")) 60 }) 61 }) 62 63 Context("when the returned application is not a Diego application", func() { 64 BeforeEach(func() { 65 app := models.Application{} 66 app.Diego = false 67 appRepo.ReadReturns(app, nil) 68 }) 69 70 It("succeeds", func() { 71 err := req.Execute() 72 Expect(err).NotTo(HaveOccurred()) 73 }) 74 }) 75 76 Context("when finding the application results in an error", func() { 77 BeforeEach(func() { 78 appRepo.ReadReturns(models.Application{}, errors.New("find-err")) 79 }) 80 81 It("fails with error", func() { 82 err := req.Execute() 83 Expect(err.Error()).To(ContainSubstring("find-err")) 84 }) 85 }) 86 }) 87 })