github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/cf/actors/planbuilder/plan_builder_test.go (about) 1 package planbuilder_test 2 3 import ( 4 "errors" 5 6 "github.com/liamawhite/cli-with-i18n/cf/actors/planbuilder" 7 "github.com/liamawhite/cli-with-i18n/cf/api/apifakes" 8 "github.com/liamawhite/cli-with-i18n/cf/api/organizations/organizationsfakes" 9 "github.com/liamawhite/cli-with-i18n/cf/models" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Plan builder", func() { 15 var ( 16 builder planbuilder.PlanBuilder 17 18 planRepo *apifakes.OldFakeServicePlanRepo 19 visibilityRepo *apifakes.FakeServicePlanVisibilityRepository 20 orgRepo *organizationsfakes.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 planbuilder.PlanToOrgsVisibilityMap = nil 31 planbuilder.OrgToPlansVisibilityMap = nil 32 planRepo = new(apifakes.OldFakeServicePlanRepo) 33 visibilityRepo = new(apifakes.FakeServicePlanVisibilityRepository) 34 orgRepo = new(organizationsfakes.FakeOrganizationRepository) 35 builder = planbuilder.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": {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 })