inStep = new(fakes.FakeStep) repo = NewSourceRepository() }) JustBeforeEach(func() { step = identity.Using(inStep, repo) }) Describe("Run", func() { It("is a no-op", func() { ready := make(chan struct{}) signals := make(chan os.Signal) err := step.Run(signals, ready) Ω(err).ShouldNot(HaveOccurred()) Ω(inStep.RunCallCount()).Should(BeZero()) }) }) Describe("Result", func() { It("calls through to the input source", func() { var result int step.Result(&result) Ω(inStep.ResultCallCount()).Should(Equal(1)) Ω(inStep.ResultArgsForCall(0)).Should(Equal(&result)) }) }) })
Describe("Result", func() { It("delegates to attempt 1", func() { <-process.Wait() // internal check for success within retry loop Expect(attempt1Step.ResultCallCount()).To(Equal(1)) attempt1Step.ResultReturns(true) var foo interface{} destination := &foo Expect(step.Result(destination)).To(BeTrue()) Expect(attempt1Step.ResultCallCount()).To(Equal(2)) Expect(attempt1Step.ResultArgsForCall(1)).To(Equal(destination)) }) }) }) }) Context("when attempt 1 fails, and attempt 2 succeeds", func() { BeforeEach(func() { attempt1Step.ResultStub = successResult(false) attempt2Step.ResultStub = successResult(true) }) Describe("Run", func() { var process ifrit.Process JustBeforeEach(func() {
inStep = new(fakes.FakeStep) repo = NewSourceRepository() }) JustBeforeEach(func() { step = identity.Using(inStep, repo) }) Describe("Run", func() { It("is a no-op", func() { ready := make(chan struct{}) signals := make(chan os.Signal) err := step.Run(signals, ready) Expect(err).NotTo(HaveOccurred()) Expect(inStep.RunCallCount()).To(BeZero()) }) }) Describe("Result", func() { It("calls through to the input source", func() { var result int step.Result(&result) Expect(inStep.ResultCallCount()).To(Equal(1)) Expect(inStep.ResultArgsForCall(0)).To(Equal(&result)) }) }) })