github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/component_factory_test.go (about)

     1  package db_test
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc"
     7  	"github.com/pf-qiu/concourse/v6/atc/db"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("ComponentFactory", func() {
    13  	Describe("Find", func() {
    14  		var (
    15  			err          error
    16  			found        bool
    17  			component    db.Component
    18  			expectedName = "scheduler"
    19  		)
    20  
    21  		BeforeEach(func() {
    22  			_, err = dbConn.Exec("INSERT INTO components (name, interval) VALUES ('scheduler', '100ms') ON CONFLICT (name) DO UPDATE SET interval = EXCLUDED.interval")
    23  			Expect(err).NotTo(HaveOccurred())
    24  		})
    25  
    26  		JustBeforeEach(func() {
    27  			component, found, err = componentFactory.Find(expectedName)
    28  			Expect(found).To(BeTrue())
    29  			Expect(err).NotTo(HaveOccurred())
    30  		})
    31  
    32  		It("returns the db component", func() {
    33  			Expect(component.Name()).To(Equal(expectedName))
    34  			Expect(component.Interval()).To(Equal(100 * time.Millisecond))
    35  			Expect(component.Paused()).To(Equal(false))
    36  		})
    37  	})
    38  
    39  	Describe("CreateOrUpdate", func() {
    40  		It("updates component interval", func() {
    41  			interval := 1 * time.Second
    42  			componentName := "some-component"
    43  
    44  			createdComponent, err := componentFactory.CreateOrUpdate(atc.Component{
    45  				Name:     componentName,
    46  				Interval: interval,
    47  			})
    48  			Expect(err).NotTo(HaveOccurred())
    49  			Expect(createdComponent.ID()).ToNot(BeZero())
    50  			Expect(createdComponent.Name()).To(Equal(componentName))
    51  			Expect(createdComponent.Interval()).To(Equal(interval))
    52  
    53  			updatedComponent, err := componentFactory.CreateOrUpdate(atc.Component{
    54  				Name:     componentName,
    55  				Interval: interval + 1,
    56  			})
    57  			Expect(err).NotTo(HaveOccurred())
    58  			Expect(updatedComponent.ID()).To(Equal(createdComponent.ID()))
    59  			Expect(updatedComponent.Name()).To(Equal(componentName))
    60  			Expect(updatedComponent.Interval()).To(Equal(interval + 1))
    61  
    62  			foundComponent, found, err := componentFactory.Find(componentName)
    63  			Expect(found).To(BeTrue())
    64  			Expect(err).NotTo(HaveOccurred())
    65  			Expect(foundComponent.ID()).To(Equal(updatedComponent.ID()))
    66  			Expect(foundComponent.Name()).To(Equal(componentName))
    67  			Expect(foundComponent.Interval()).To(Equal(interval + 1))
    68  		})
    69  	})
    70  })