Context("when no inputs are available", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakePipelineDB.GetLatestInputVersionsReturns(nil, disaster) }) It("returns the error", func() { err := scheduler.BuildLatestInputs(logger, job, resources) Ω(err).Should(Equal(disaster)) }) It("does not trigger a build", func() { scheduler.BuildLatestInputs(logger, job, resources) Ω(fakeEngine.CreateBuildCallCount()).Should(Equal(0)) }) }) Context("when the job has no inputs", func() { BeforeEach(func() { job.InputConfigs = []atc.JobInputConfig{} }) It("succeeds", func() { err := scheduler.BuildLatestInputs(logger, job, resources) Ω(err).ShouldNot(HaveOccurred()) }) It("does not try to fetch inputs from the database", func() { scheduler.BuildLatestInputs(logger, job, resources)
}) Describe("BuildLatestInputs", func() { Context("when no inputs are available", func() { BeforeEach(func() { fakePipelineDB.GetLatestInputVersionsReturns(nil, false, nil) }) It("returns no error", func() { err := scheduler.BuildLatestInputs(logger, someVersions, job, resources, resourceTypes) Expect(err).NotTo(HaveOccurred()) }) It("does not trigger a build", func() { scheduler.BuildLatestInputs(logger, someVersions, job, resources, resourceTypes) Expect(fakeEngine.CreateBuildCallCount()).To(Equal(0)) }) }) Context("when the inputs cannot be determined", func() { disaster := errors.New("oh no!") var err error BeforeEach(func() { fakePipelineDB.GetLatestInputVersionsReturns(nil, false, disaster) err = scheduler.BuildLatestInputs(logger, someVersions, job, resources, resourceTypes) }) It("returns the error", func() { Expect(err).To(Equal(disaster)) })