예제 #1
0
파일: output_of.go 프로젝트: xoebus/checkin
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{}))
		})
	})
})