github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/actors/plan_builder/plan_builder_test.go (about) 1 package plan_builder_test 2 3 import ( 4 "errors" 5 6 "github.com/cloudfoundry/cli/cf/actors/plan_builder" 7 "github.com/cloudfoundry/cli/cf/api/fakes" 8 testorg "github.com/cloudfoundry/cli/cf/api/organizations/fakes" 9 "github.com/cloudfoundry/cli/cf/models" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Plan builder", func() { 15 var ( 16 builder plan_builder.PlanBuilder 17 18 planRepo *fakes.FakeServicePlanRepo 19 visibilityRepo *fakes.FakeServicePlanVisibilityRepository 20 orgRepo *testorg.FakeOrganizationRepository 21 22 plan1 models.ServicePlanFields 23 plan2 models.ServicePlanFields 24 25 org1 models.Organization 26 org2 models.Organization 27 ) 28 29 BeforeEach(func() { 30 plan_builder.PlanToOrgsVisibilityMap = nil 31 plan_builder.OrgToPlansVisibilityMap = nil 32 planRepo = &fakes.FakeServicePlanRepo{} 33 visibilityRepo = &fakes.FakeServicePlanVisibilityRepository{} 34 orgRepo = &testorg.FakeOrganizationRepository{} 35 builder = plan_builder.NewBuilder(planRepo, visibilityRepo, orgRepo) 36 37 plan1 = models.ServicePlanFields{ 38 Name: "service-plan1", 39 Guid: "service-plan1-guid", 40 ServiceOfferingGuid: "service-guid1", 41 } 42 plan2 = models.ServicePlanFields{ 43 Name: "service-plan2", 44 Guid: "service-plan2-guid", 45 ServiceOfferingGuid: "service-guid1", 46 } 47 48 planRepo.SearchReturns = map[string][]models.ServicePlanFields{ 49 "service-guid1": []models.ServicePlanFields{plan1, plan2}, 50 } 51 org1 = models.Organization{} 52 org1.Name = "org1" 53 org1.Guid = "org1-guid" 54 55 org2 = models.Organization{} 56 org2.Name = "org2" 57 org2.Guid = "org2-guid" 58 visibilityRepo.ListReturns([]models.ServicePlanVisibilityFields{ 59 {ServicePlanGuid: "service-plan1-guid", OrganizationGuid: "org1-guid"}, 60 {ServicePlanGuid: "service-plan1-guid", OrganizationGuid: "org2-guid"}, 61 {ServicePlanGuid: "service-plan2-guid", OrganizationGuid: "org1-guid"}, 62 }, nil) 63 orgRepo.GetManyOrgsByGuidReturns([]models.Organization{org1, org2}, nil) 64 }) 65 66 Describe(".AttachOrgsToPlans", func() { 67 It("returns plans fully populated with the orgnames that have visibility", func() { 68 barePlans := []models.ServicePlanFields{plan1, plan2} 69 70 plans, err := builder.AttachOrgsToPlans(barePlans) 71 Expect(err).ToNot(HaveOccurred()) 72 73 Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"})) 74 }) 75 }) 76 77 Describe(".AttachOrgToPlans", func() { 78 It("returns plans fully populated with the orgnames that have visibility", func() { 79 orgRepo.FindByNameReturns(org1, nil) 80 barePlans := []models.ServicePlanFields{plan1, plan2} 81 82 plans, err := builder.AttachOrgToPlans(barePlans, "org1") 83 Expect(err).ToNot(HaveOccurred()) 84 85 Expect(plans[0].OrgNames).To(Equal([]string{"org1"})) 86 }) 87 }) 88 89 Describe(".GetPlansForServiceWithOrgs", func() { 90 It("returns all the plans for the service with the provided guid", func() { 91 plans, err := builder.GetPlansForServiceWithOrgs("service-guid1") 92 Expect(err).ToNot(HaveOccurred()) 93 94 Expect(len(plans)).To(Equal(2)) 95 Expect(plans[0].Name).To(Equal("service-plan1")) 96 Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"})) 97 Expect(plans[1].Name).To(Equal("service-plan2")) 98 }) 99 }) 100 101 Describe(".GetPlansForManyServicesWithOrgs", func() { 102 It("returns all the plans for all service in a list of guids", func() { 103 planRepo.ListPlansFromManyServicesReturns = []models.ServicePlanFields{ 104 plan1, plan2, 105 } 106 serviceGuids := []string{"service-guid1", "service-guid2"} 107 plans, err := builder.GetPlansForManyServicesWithOrgs(serviceGuids) 108 Expect(err).ToNot(HaveOccurred()) 109 Expect(orgRepo.GetManyOrgsByGuidCallCount()).To(Equal(1)) 110 Expect(orgRepo.GetManyOrgsByGuidArgsForCall(0)).To(ConsistOf("org1-guid", "org2-guid")) 111 112 Expect(len(plans)).To(Equal(2)) 113 Expect(plans[0].Name).To(Equal("service-plan1")) 114 Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"})) 115 Expect(plans[1].Name).To(Equal("service-plan2")) 116 }) 117 118 It("returns errors from the service plan repo", func() { 119 planRepo.ListPlansFromManyServicesError = errors.New("Error") 120 serviceGuids := []string{"service-guid1", "service-guid2"} 121 _, err := builder.GetPlansForManyServicesWithOrgs(serviceGuids) 122 Expect(err).To(HaveOccurred()) 123 }) 124 }) 125 126 Describe(".GetPlansForService", func() { 127 It("returns all the plans for the service with the provided guid", func() { 128 plans, err := builder.GetPlansForService("service-guid1") 129 Expect(err).ToNot(HaveOccurred()) 130 131 Expect(len(plans)).To(Equal(2)) 132 Expect(plans[0].Name).To(Equal("service-plan1")) 133 Expect(plans[0].OrgNames).To(BeNil()) 134 Expect(plans[1].Name).To(Equal("service-plan2")) 135 }) 136 }) 137 138 Describe(".GetPlansForServiceForOrg", func() { 139 It("returns all the plans for the service with the provided guid", func() { 140 orgRepo.FindByNameReturns(org1, nil) 141 plans, err := builder.GetPlansForServiceForOrg("service-guid1", "org1") 142 Expect(err).ToNot(HaveOccurred()) 143 144 Expect(len(plans)).To(Equal(2)) 145 Expect(plans[0].Name).To(Equal("service-plan1")) 146 Expect(plans[0].OrgNames).To(Equal([]string{"org1"})) 147 Expect(plans[1].Name).To(Equal("service-plan2")) 148 }) 149 }) 150 151 Describe(".GetPlansVisibleToOrg", func() { 152 It("returns all the plans visible to the named org", func() { 153 plans, err := builder.GetPlansVisibleToOrg("org1") 154 Expect(err).ToNot(HaveOccurred()) 155 156 Expect(len(plans)).To(Equal(2)) 157 Expect(plans[0].Name).To(Equal("service-plan1")) 158 Expect(plans[0].OrgNames).To(Equal([]string{"org1", "org2"})) 159 }) 160 }) 161 })