github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/dbtest/scenario.go (about) 1 package dbtest 2 3 import ( 4 "github.com/pf-qiu/concourse/v6/atc" 5 "github.com/pf-qiu/concourse/v6/atc/db" 6 . "github.com/onsi/gomega" 7 ) 8 9 // Scenario represents the state of the world for testing. 10 type Scenario struct { 11 Team db.Team 12 Pipeline db.Pipeline 13 Workers []db.Worker 14 15 SpanContext db.SpanContext 16 } 17 18 type SetupFunc func(*Scenario) error 19 20 func Setup(setup ...SetupFunc) *Scenario { 21 scenario := &Scenario{} 22 scenario.Run(setup...) 23 return scenario 24 } 25 26 func (scenario *Scenario) Run(setup ...SetupFunc) { 27 for _, f := range setup { 28 err := f(scenario) 29 Expect(err).ToNot(HaveOccurred()) 30 } 31 } 32 33 func (scenario Scenario) Job(name string) db.Job { 34 Expect(scenario.Pipeline).ToNot(BeNil(), "pipeline not set in scenario") 35 36 job, found, err := scenario.Pipeline.Job(name) 37 Expect(err).ToNot(HaveOccurred()) 38 Expect(found).To(BeTrue(), "job '%s' not found", name) 39 40 return job 41 } 42 43 func (scenario Scenario) Resource(name string) db.Resource { 44 Expect(scenario.Pipeline).ToNot(BeNil(), "pipeline not set in scenario") 45 46 resource, found, err := scenario.Pipeline.Resource(name) 47 Expect(err).ToNot(HaveOccurred()) 48 Expect(found).To(BeTrue(), "resource '%s' not found", name) 49 50 return resource 51 } 52 53 func (scenario Scenario) ResourceType(name string) db.ResourceType { 54 Expect(scenario.Pipeline).ToNot(BeNil(), "pipeline not set in scenario") 55 56 resourceType, found, err := scenario.Pipeline.ResourceType(name) 57 Expect(err).ToNot(HaveOccurred()) 58 Expect(found).To(BeTrue(), "resource type '%s' not found", name) 59 60 return resourceType 61 } 62 63 func (scenario Scenario) ResourceVersion(name string, version atc.Version) db.ResourceConfigVersion { 64 Expect(scenario.Pipeline).ToNot(BeNil(), "pipeline not set in scenario") 65 66 resource, found, err := scenario.Pipeline.Resource(name) 67 Expect(err).ToNot(HaveOccurred()) 68 Expect(found).To(BeTrue(), "resource '%s' not found", name) 69 70 rcv, found, err := resource.FindVersion(version) 71 Expect(err).ToNot(HaveOccurred()) 72 Expect(found).To(BeTrue(), "resource version '%v' of '%s' not found", version, name) 73 74 return rcv 75 }