var _ = Describe("ApplicationRequirement", func() { var ui *testterm.FakeUI var appRepo *testApplication.FakeApplicationRepository BeforeEach(func() { ui = new(testterm.FakeUI) appRepo = &testApplication.FakeApplicationRepository{} }) It("succeeds when an app with the given name exists", func() { app := models.Application{} app.Name = "my-app" app.Guid = "my-app-guid" appRepo.ReadReturns(app, nil) appReq := NewApplicationRequirement("foo", ui, appRepo) Expect(appReq.Execute()).To(BeTrue()) Expect(appRepo.ReadArgsForCall(0)).To(Equal("foo")) Expect(appReq.GetApplication()).To(Equal(app)) }) It("fails when an app with the given name cannot be found", func() { appRepo.ReadReturns(models.Application{}, errors.NewModelNotFoundError("app", "foo")) testassert.AssertPanic(testterm.QuietPanic, func() { NewApplicationRequirement("foo", ui, appRepo).Execute() }) }) })
Expect(ui.Outputs).To(ContainSubstrings( []string{"Incorrect Usage", "Requires", "argument"}, )) }) Context("When provided an app that exists", func() { BeforeEach(func() { appRepo.ReadReturns(app, nil) }) It("deletes an app when the user confirms", func() { ui.Inputs = []string{"y"} runCommand("app-to-delete") Expect(appRepo.ReadArgsForCall(0)).To(Equal("app-to-delete")) Expect(appRepo.DeleteArgsForCall(0)).To(Equal("app-to-delete-guid")) Expect(ui.Prompts).To(ContainSubstrings([]string{"Really delete the app app-to-delete"})) Expect(ui.Outputs).To(ContainSubstrings( []string{"Deleting", "app-to-delete", "my-org", "my-space", "my-user"}, []string{"OK"}, )) }) It("does not prompt when the -f flag is provided", func() { runCommand("-f", "app-to-delete") Expect(appRepo.ReadArgsForCall(0)).To(Equal("app-to-delete")) Expect(appRepo.DeleteArgsForCall(0)).To(Equal("app-to-delete-guid"))
Name: "target-app", Guid: "target-app-guid", }, } appRepo.ReadFromSpaceReturns(targetApp, nil) }) Describe("when no parameters are passed", func() { It("obtains both the source and target application from the same space", func() { runCommand("source-app", "target-app") targetAppName, spaceGuid := appRepo.ReadFromSpaceArgsForCall(0) Expect(targetAppName).To(Equal("target-app")) Expect(spaceGuid).To(Equal("my-space-guid")) Expect(appRepo.ReadArgsForCall(0)).To(Equal("source-app")) sourceAppGuid, targetAppGuid := copyAppSourceRepo.CopyApplicationArgsForCall(0) Expect(sourceAppGuid).To(Equal("source-app-guid")) Expect(targetAppGuid).To(Equal("target-app-guid")) appArg, orgName, spaceName := appRestarter.ApplicationRestartArgsForCall(0) Expect(appArg).To(Equal(targetApp)) Expect(orgName).To(Equal(config.OrganizationFields().Name)) Expect(spaceName).To(Equal(config.SpaceFields().Name)) Expect(ui.Outputs).To(ContainSubstrings( []string{"Copying source from app", "source-app", "to target app", "target-app", "in org my-org / space my-space as my-user..."}, []string{"Note: this may take some time"}, []string{"OK"}, ))