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  }