Ω(lockedBuild).Should(Equal([]db.NamedLock{db.BuildTrackingLock(model.ID)})) Ω(fakeLock.ReleaseCallCount()).Should(BeZero()) return nil } }) Context("when the engine build exists", func() { var realBuild *fakes.FakeBuild BeforeEach(func() { fakeBuildDB.GetBuildReturns(model, nil) realBuild = new(fakes.FakeBuild) fakeEngineB.LookupBuildReturns(realBuild, nil) }) Context("when aborting the db build succeeds", func() { BeforeEach(func() { fakeBuildDB.AbortBuildReturns(nil) }) It("succeeds", func() { Ω(abortErr).ShouldNot(HaveOccurred()) }) It("releases the lock", func() { Ω(fakeLock.ReleaseCallCount()).Should(Equal(1)) })
fakeEngine.LookupBuildStub = func(logger lager.Logger, build db.Build) (engine.Build, error) { return engineBuilds[build.ID-1], nil } }) It("resumes all currently in-flight builds", func() { tracker.Track() Eventually(engineBuilds[0].ResumeCallCount).Should(Equal(1)) Eventually(engineBuilds[1].ResumeCallCount).Should(Equal(1)) Eventually(engineBuilds[2].ResumeCallCount).Should(Equal(1)) }) Context("when a build cannot be looked up", func() { BeforeEach(func() { fakeEngine.LookupBuildReturns(nil, errors.New("nope")) }) It("saves its status as errored", func() { tracker.Track() Expect(fakeTrackerDB.ErrorBuildCallCount()).To(Equal(3)) savedBuilID1, savedErr1 := fakeTrackerDB.ErrorBuildArgsForCall(0) Expect(savedBuilID1).To(Equal(1)) Expect(savedErr1).To(Equal(errors.New("nope"))) savedBuilID2, savedErr2 := fakeTrackerDB.ErrorBuildArgsForCall(1) Expect(savedBuilID2).To(Equal(2)) Expect(savedErr2).To(Equal(errors.New("nope")))