github.com/LGUG2Z/story@v0.4.1/manifest/utils_test.go (about) 1 package manifest_test 2 3 import ( 4 "fmt" 5 6 "github.com/LGUG2Z/story/manifest" 7 "github.com/spf13/afero" 8 ) 9 10 type MockRadius struct { 11 Radius []string 12 } 13 14 type BlastRadiusBuilder struct { 15 blastRadius *MockRadius 16 } 17 18 func NewBlastRadiusBuilder() *BlastRadiusBuilder { 19 blastRadius := &MockRadius{} 20 b := &BlastRadiusBuilder{blastRadius: blastRadius} 21 return b 22 } 23 24 func (b *BlastRadiusBuilder) BlastRadius(projects ...string) *BlastRadiusBuilder { 25 for _, project := range projects { 26 b.blastRadius.Radius = append(b.blastRadius.Radius, project) 27 } 28 29 return b 30 } 31 32 func (b *BlastRadiusBuilder) Build() *MockRadius { 33 return b.blastRadius 34 } 35 36 func (r *MockRadius) Calculate(fs afero.Fs, metarepo, project string) ([]string, error) { 37 return r.Radius, nil 38 } 39 40 type StoryBuilder struct { 41 story *manifest.Story 42 } 43 44 func NewStoryBuilder() *StoryBuilder { 45 story := &manifest.Story{} 46 b := &StoryBuilder{story: story} 47 return b 48 } 49 50 func (b *StoryBuilder) Name(name string) *StoryBuilder { 51 b.story.Name = name 52 return b 53 } 54 55 func (b *StoryBuilder) Organisation(organisation string) *StoryBuilder { 56 b.story.Orgranisation = organisation 57 return b 58 } 59 60 func (b *StoryBuilder) Artifacts(status bool, artifacts ...string) *StoryBuilder { 61 b.story.Artifacts = make(map[string]bool) 62 63 for _, artifact := range artifacts { 64 b.story.Artifacts[artifact] = status 65 } 66 67 return b 68 } 69 70 func (b *StoryBuilder) Projects(projects ...string) *StoryBuilder { 71 b.story.Projects = make(map[string]string) 72 73 for _, project := range projects { 74 b.story.Projects[project] = fmt.Sprintf("git@github.com:%s/%s.git", b.story.Orgranisation, project) 75 } 76 77 return b 78 } 79 80 func (b *StoryBuilder) AllProjects(projects ...string) *StoryBuilder { 81 b.story.AllProjects = make(map[string]string) 82 83 for _, project := range projects { 84 b.story.AllProjects[project] = fmt.Sprintf("git@github.com:%s/%s.git", b.story.Orgranisation, project) 85 } 86 87 return b 88 } 89 90 func (b *StoryBuilder) BlastRadius(blastRadius map[string][]string) *StoryBuilder { 91 b.story.BlastRadius = blastRadius 92 return b 93 } 94 95 func (b *StoryBuilder) Build() *manifest.Story { 96 return b.story 97 } 98 99 type MetaBuilder struct { 100 meta *manifest.Meta 101 } 102 103 func NewMetaBuilder() *MetaBuilder { 104 meta := &manifest.Meta{} 105 b := &MetaBuilder{meta: meta} 106 return b 107 } 108 109 func (b *MetaBuilder) Artifacts(artifacts ...string) *MetaBuilder { 110 b.meta.Artifacts = make(map[string]bool) 111 112 for _, artifact := range artifacts { 113 b.meta.Artifacts[artifact] = false 114 } 115 116 return b 117 } 118 119 func (b *MetaBuilder) Organisation(orgranisation string) *MetaBuilder { 120 b.meta.Organisation = orgranisation 121 return b 122 } 123 124 func (b *MetaBuilder) Projects(projects ...string) *MetaBuilder { 125 b.meta.Projects = make(map[string]string) 126 127 for _, project := range projects { 128 b.meta.Projects[project] = fmt.Sprintf("git@github.com:%s/%s.git", b.meta.Organisation, project) 129 } 130 131 return b 132 } 133 134 func (b *MetaBuilder) Build() *manifest.Meta { 135 return b.meta 136 }