github.com/cloudfoundry/cli@v7.1.0+incompatible/cf/requirements/buildpack_test.go (about)

     1  package requirements_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/cf/api/apifakes"
     5  	"code.cloudfoundry.org/cli/cf/models"
     6  	. "code.cloudfoundry.org/cli/cf/requirements"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("BuildpackRequirement", func() {
    12  	It("succeeds when a buildpack with the given name exists", func() {
    13  		buildpack := models.Buildpack{Name: "my-buildpack"}
    14  		buildpackRepo := &apifakes.OldFakeBuildpackRepository{FindByNameBuildpack: buildpack}
    15  
    16  		buildpackReq := NewBuildpackRequirement("my-buildpack", "", buildpackRepo)
    17  
    18  		Expect(buildpackReq.Execute()).NotTo(HaveOccurred())
    19  		Expect(buildpackRepo.FindByNameName).To(Equal("my-buildpack"))
    20  		Expect(buildpackReq.GetBuildpack()).To(Equal(buildpack))
    21  	})
    22  
    23  	It("fails when the buildpack cannot be found", func() {
    24  		buildpackRepo := &apifakes.OldFakeBuildpackRepository{FindByNameNotFound: true}
    25  
    26  		err := NewBuildpackRequirement("foo", "", buildpackRepo).Execute()
    27  		Expect(err).To(HaveOccurred())
    28  		Expect(err.Error()).To(ContainSubstring("Buildpack foo not found"))
    29  	})
    30  
    31  	It("fails when more than one buildpack is found with the same name and no stack is specified", func() {
    32  		buildpackRepo := &apifakes.OldFakeBuildpackRepository{FindByNameAmbiguous: true}
    33  
    34  		err := NewBuildpackRequirement("foo", "", buildpackRepo).Execute()
    35  		Expect(err).To(HaveOccurred())
    36  		Expect(err.Error()).To(ContainSubstring("Multiple buildpacks named foo found"))
    37  	})
    38  
    39  	It("finds buildpacks by stack if specified, in addition to name", func() {
    40  		buildpack := models.Buildpack{Name: "my-buildpack", Stack: "my-stack"}
    41  		buildpackRepo := &apifakes.OldFakeBuildpackRepository{FindByNameAndStackBuildpack: buildpack}
    42  
    43  		buildpackReq := NewBuildpackRequirement("my-buildpack", "my-stack", buildpackRepo)
    44  
    45  		Expect(buildpackReq.Execute()).NotTo(HaveOccurred())
    46  		Expect(buildpackRepo.FindByNameAndStackName).To(Equal("my-buildpack"))
    47  		Expect(buildpackRepo.FindByNameAndStackStack).To(Equal("my-stack"))
    48  		Expect(buildpackReq.GetBuildpack()).To(Equal(buildpack))
    49  	})
    50  })