configRefresher       *requirementsfakes.FakeConfigRefresher
	)

	BeforeEach(func() {
		underlyingRequirement = new(requirementsfakes.FakeRequirement)
		configRefresher = new(requirementsfakes.FakeConfigRefresher)
		r = NewConfigRefreshingRequirement(underlyingRequirement, configRefresher)
	})

	Describe("Execute", func() {
		It("tries to execute the underlying requirement", func() {
			underlyingRequirement.ExecuteReturns(nil)

			r.Execute()

			Expect(underlyingRequirement.ExecuteCallCount()).To(Equal(1))
			Expect(configRefresher.RefreshCallCount()).To(Equal(0))
		})

		Context("when the underlying requirement fails", func() {
			It("refreshes the config", func() {
				underlyingRequirement.ExecuteReturns(errors.New("TERRIBLE THINGS"))

				r.Execute()

				Expect(configRefresher.RefreshCallCount()).To(Equal(1))
			})

			It("returns the value of calling execute on the underlying requirement again", func() {
				var count int
				disaster := errors.New("TERRIBLE THINGS")
Esempio n. 2
0
			r1.ExecuteReturns(nil)
			r2 := new(requirementsfakes.FakeRequirement)
			r2.ExecuteReturns(nil)

			// SETUP
			requirements := Requirements{
				r1,
				r2,
			}

			// EXECUTE
			err := requirements.Execute()

			// ASSERT
			Expect(err).NotTo(HaveOccurred())
			Expect(r1.ExecuteCallCount()).To(Equal(1))
			Expect(r2.ExecuteCallCount()).To(Equal(1))
		})

		It("returns the first error that occurs", func() {
			disaster := errors.New("OH NO")
			otherDisaster := errors.New("WHAT!")

			r1 := new(requirementsfakes.FakeRequirement)
			r1.ExecuteReturns(disaster)
			r2 := new(requirementsfakes.FakeRequirement)
			r2.ExecuteReturns(otherDisaster)

			// SETUP
			requirements := Requirements{
				r1,