func (s *Server) ListBuildsWithVersionAsOutput(pipelineDB db.PipelineDB) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { versionIDString := r.FormValue(":resource_version_id") versionID, _ := strconv.Atoi(versionIDString) builds, err := pipelineDB.GetBuildsWithVersionAsOutput(versionID) if err != nil { w.WriteHeader(http.StatusInternalServerError) return } presentedBuilds := []atc.Build{} for _, build := range builds { presentedBuilds = append(presentedBuilds, present.Build(build)) } w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(presentedBuilds) }) }
Resource: "some-resource", Type: "some-type", Version: db.Version{ "version": "v1", }, Metadata: []db.MetadataField{ { Name: "some", Value: "value", }, }, PipelineName: "some-pipeline", }, false) Expect(err).NotTo(HaveOccurred()) }) It("returns the builds for which the provided version id was an output", func() { builds, err := pipelineDB.GetBuildsWithVersionAsOutput(savedVersionedResource.ID) Expect(err).NotTo(HaveOccurred()) Expect(builds).To(ConsistOf(expectedBuilds)) }) It("returns an empty slice of builds when the provided version id doesn't exist", func() { builds, err := pipelineDB.GetBuildsWithVersionAsOutput(savedVersionedResource.ID + 100) Expect(err).NotTo(HaveOccurred()) Expect(builds).To(Equal([]db.Build{})) }) }) })