Ω(fakeEngine.CreateBuildCallCount()).Should(Equal(1)) builtBuild, plan := fakeEngine.CreateBuildArgsForCall(0) Ω(builtBuild).Should(Equal(pendingBuild)) Ω(plan).Should(Equal(createdPlan)) }) Context("when scanning fails", func() { disaster := errors.New("nope") BeforeEach(func() { fakeScanner.ScanReturns(disaster) }) It("errors the build", func() { Ω(fakeBuildsDB.ErrorBuildCallCount()).Should(Equal(1)) buildID, err := fakeBuildsDB.ErrorBuildArgsForCall(0) Ω(buildID).Should(Equal(128)) Ω(err).Should(Equal(disaster)) }) }) }) }) Context("when the build cannot be scheduled", func() { BeforeEach(func() { fakePipelineDB.ScheduleBuildReturns(false, nil) }) It("does not start a build", func() {
}) }) Context("due to a scanning error", func() { var problemz error BeforeEach(func() { problemz = errors.New("ermagersh errorz") fakeJobService.CanBuildBeScheduledReturns(nil, false, "failed-to-scan", problemz) }) It("logs and returns nil", func() { Expect(engineBuild).To(BeNil()) Expect(logger).To(gbytes.Say("failed-to-schedule-build")) Expect(fakeBuildsDB.ErrorBuildCallCount()).To(Equal(1)) buildID, scanningError := fakeBuildsDB.ErrorBuildArgsForCall(0) Expect(buildID).To(Equal(build.ID)) Expect(scanningError).To(Equal(problemz)) }) Context("when ErrorBuild errors", func() { BeforeEach(func() { fakeBuildsDB.ErrorBuildReturns(errors.New("freak out!?")) }) It("logs and returns nil", func() { Expect(engineBuild).To(BeNil()) Expect(logger).To(gbytes.Say("failed-to-schedule-build")) Expect(logger).To(gbytes.Say("failed-to-mark-build-as-errored")) })