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) Ω(fakePipelineDB.GetLatestInputVersionsCallCount()).Should(BeZero()) }) It("does not trigger a build", func() { scheduler.BuildLatestInputs(logger, job, resources)
Context("when a job has no config and no config path", func() { BeforeEach(func() { job.TaskConfig = nil job.TaskConfigPath = "" config.Jobs = append(config.Jobs, job) }) It("returns no error", func() { Ω(validateErr).ShouldNot(HaveOccurred()) }) }) Context("when a job's input has no resource", func() { BeforeEach(func() { job.InputConfigs = append(job.InputConfigs, atc.JobInputConfig{ RawName: "foo", }) config.Jobs = append(config.Jobs, job) }) It("returns an error", func() { Ω(validateErr).Should(HaveOccurred()) Ω(validateErr.Error()).Should(ContainSubstring( "jobs.some-other-job.inputs.foo has no resource", )) }) }) Context("when a job's input has a bogus resource", func() { BeforeEach(func() { job.InputConfigs = append(job.InputConfigs, atc.JobInputConfig{