build, err := database.CreateOneOffBuild() Expect(err).NotTo(HaveOccurred()) Expect(build.Name).To(Equal("1")) By("allowing you to subscribe when no events have yet occurred") events, err := database.GetBuildEvents(build.ID, 0) Expect(err).NotTo(HaveOccurred()) defer events.Close() By("emitting a status event when started") started, err := database.StartBuild(build.ID, "engine", "metadata") Expect(err).NotTo(HaveOccurred()) Expect(started).To(BeTrue()) startedBuild, found, err := database.GetBuild(build.ID) Expect(err).NotTo(HaveOccurred()) Expect(found).To(BeTrue()) Expect(events.Next()).To(Equal(event.Status{ Status: atc.StatusStarted, Time: startedBuild.StartTime.Unix(), })) By("emitting a status event when finished") err = database.FinishBuild(build.ID, db.StatusSucceeded) Expect(err).NotTo(HaveOccurred()) finishedBuild, found, err := database.GetBuild(build.ID) Expect(err).NotTo(HaveOccurred()) Expect(found).To(BeTrue())
It("can get (no) resources from a one-off build", func() { inputs, outputs, err := database.GetBuildResources(oneOff.ID) Expect(err).NotTo(HaveOccurred()) Expect(inputs).To(BeEmpty()) Expect(outputs).To(BeEmpty()) }) It("can create one-off builds with increasing names", func() { Expect(oneOff.ID).NotTo(BeZero()) Expect(oneOff.JobName).To(BeZero()) Expect(oneOff.Name).To(Equal("1")) Expect(oneOff.Status).To(Equal(db.StatusPending)) oneOffGot, found, err := database.GetBuild(oneOff.ID) Expect(err).NotTo(HaveOccurred()) Expect(found).To(BeTrue()) Expect(oneOffGot).To(Equal(oneOff)) jobBuild, err := pipelineDB.CreateJobBuild("some-other-job") Expect(err).NotTo(HaveOccurred()) Expect(jobBuild.Name).To(Equal("1")) nextOneOff, err := database.CreateOneOffBuild() Expect(err).NotTo(HaveOccurred()) Expect(nextOneOff.ID).NotTo(BeZero()) Expect(nextOneOff.ID).NotTo(Equal(oneOff.ID)) Expect(nextOneOff.JobName).To(BeZero()) Expect(nextOneOff.Name).To(Equal("2")) Expect(nextOneOff.Status).To(Equal(db.StatusPending))