github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/actors/plan_builder/plan_builder_test.go (about)

     1  package plan_builder_test
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf/actors/plan_builder"
     5  	"github.com/cloudfoundry/cli/cf/api/fakes"
     6  	testorg "github.com/cloudfoundry/cli/cf/api/organizations/fakes"
     7  	"github.com/cloudfoundry/cli/cf/models"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("Plan builder", func() {
    13  	var (
    14  		builder plan_builder.PlanBuilder
    15  
    16  		planRepo       *fakes.FakeServicePlanRepo
    17  		visibilityRepo *fakes.FakeServicePlanVisibilityRepository
    18  		orgRepo        *testorg.FakeOrganizationRepository
    19  
    20  		plan1 models.ServicePlanFields
    21  		plan2 models.ServicePlanFields
    22  
    23  		org1 models.Organization
    24  		org2 models.Organization
    25  	)
    26  
    27  	BeforeEach(func() {
    28  		planRepo = &fakes.FakeServicePlanRepo{}
    29  		visibilityRepo = &fakes.FakeServicePlanVisibilityRepository{}
    30  		orgRepo = &testorg.FakeOrganizationRepository{}
    31  		builder = plan_builder.NewBuilder(planRepo, visibilityRepo, orgRepo)
    32  
    33  		plan1 = models.ServicePlanFields{
    34  			Name:                "service-plan1",
    35  			Guid:                "service-plan1-guid",
    36  			ServiceOfferingGuid: "service-guid1",
    37  		}
    38  
    39  		plan2 = models.ServicePlanFields{
    40  			Name:                "service-plan2",
    41  			Guid:                "service-plan2-guid",
    42  			ServiceOfferingGuid: "service-guid1",
    43  		}
    44  		planRepo.SearchReturns = map[string][]models.ServicePlanFields{
    45  			"service-guid1": []models.ServicePlanFields{plan1, plan2},
    46  		}
    47  		org1 = models.Organization{}
    48  		org1.Name = "org1"
    49  		org1.Guid = "org1-guid"
    50  
    51  		org2 = models.Organization{}
    52  		org2.Name = "org2"
    53  		org2.Guid = "org2-guid"
    54  		visibilityRepo.ListReturns([]models.ServicePlanVisibilityFields{
    55  			{ServicePlanGuid: "service-plan1-guid", OrganizationGuid: "org1-guid"},
    56  			{ServicePlanGuid: "service-plan1-guid", OrganizationGuid: "org2-guid"},
    57  		}, nil)
    58  		orgRepo.ListOrgsReturns([]models.Organization{org1, org2}, nil)
    59  	})
    60  
    61  	Describe(".AttachOrgsToPlans", func() {
    62  		It("returns plans fully populated with the orgnames that have visibility", func() {
    63  			barePlans := []models.ServicePlanFields{plan1, plan2}
    64  
    65  			plans, err := builder.AttachOrgsToPlans(barePlans)
    66  			Expect(err).ToNot(HaveOccurred())
    67  
    68  			Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"}))
    69  		})
    70  	})
    71  
    72  	Describe(".AttachOrgToPlans", func() {
    73  		It("returns plans fully populated with the orgnames that have visibility", func() {
    74  			orgRepo.FindByNameReturns(org1, nil)
    75  			barePlans := []models.ServicePlanFields{plan1, plan2}
    76  
    77  			plans, err := builder.AttachOrgToPlans(barePlans, "org1")
    78  			Expect(err).ToNot(HaveOccurred())
    79  
    80  			Expect(plans[0].OrgNames).To(Equal([]string{"org1"}))
    81  		})
    82  	})
    83  
    84  	Describe(".GetPlansForServiceWithOrgs", func() {
    85  		It("returns all the plans for the service with the provided guid", func() {
    86  			plans, err := builder.GetPlansForServiceWithOrgs("service-guid1")
    87  			Expect(err).ToNot(HaveOccurred())
    88  
    89  			Expect(len(plans)).To(Equal(2))
    90  			Expect(plans[0].Name).To(Equal("service-plan1"))
    91  			Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"}))
    92  			Expect(plans[1].Name).To(Equal("service-plan2"))
    93  		})
    94  	})
    95  
    96  	Describe(".GetPlansForService", func() {
    97  		It("returns all the plans for the service with the provided guid", func() {
    98  			plans, err := builder.GetPlansForService("service-guid1")
    99  			Expect(err).ToNot(HaveOccurred())
   100  
   101  			Expect(len(plans)).To(Equal(2))
   102  			Expect(plans[0].Name).To(Equal("service-plan1"))
   103  			Expect(plans[0].OrgNames).To(BeNil())
   104  			Expect(plans[1].Name).To(Equal("service-plan2"))
   105  		})
   106  	})
   107  
   108  	Describe(".GetPlansForServiceForOrg", func() {
   109  		It("returns all the plans for the service with the provided guid", func() {
   110  			orgRepo.FindByNameReturns(org1, nil)
   111  			plans, err := builder.GetPlansForServiceForOrg("service-guid1", "org1")
   112  			Expect(err).ToNot(HaveOccurred())
   113  
   114  			Expect(len(plans)).To(Equal(2))
   115  			Expect(plans[0].Name).To(Equal("service-plan1"))
   116  			Expect(plans[0].OrgNames).To(Equal([]string{"org1"}))
   117  			Expect(plans[1].Name).To(Equal("service-plan2"))
   118  		})
   119  	})
   120  
   121  	Describe(".GetPlansVisibleToOrg", func() {
   122  		It("returns all the plans visible to the named org", func() {
   123  			plans, err := builder.GetPlansVisibleToOrg("org1")
   124  			Expect(err).ToNot(HaveOccurred())
   125  
   126  			Expect(len(plans)).To(Equal(1))
   127  			Expect(plans[0].Name).To(Equal("service-plan1"))
   128  			Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"}))
   129  		})
   130  	})
   131  })