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  }