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

     1  package db_test
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/pf-qiu/concourse/v6/atc/db"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("Component", func() {
    12  	var (
    13  		err       error
    14  		found     bool
    15  		component db.Component
    16  	)
    17  
    18  	BeforeEach(func() {
    19  		_, err = dbConn.Exec("INSERT INTO components (name, interval) VALUES ('scheduler', '100ms') ON CONFLICT (name) DO UPDATE SET interval = EXCLUDED.interval")
    20  		Expect(err).NotTo(HaveOccurred())
    21  
    22  		component, found, err = componentFactory.Find("scheduler")
    23  		Expect(err).NotTo(HaveOccurred())
    24  		Expect(found).To(BeTrue())
    25  	})
    26  
    27  	JustBeforeEach(func() {
    28  		reloaded, err := component.Reload()
    29  		Expect(reloaded).To(BeTrue())
    30  		Expect(err).NotTo(HaveOccurred())
    31  	})
    32  
    33  	Describe("IntervalElapsed", func() {
    34  		var elapsed bool
    35  
    36  		JustBeforeEach(func() {
    37  			elapsed = component.IntervalElapsed()
    38  		})
    39  
    40  		Context("when the interval is not reached", func() {
    41  			BeforeEach(func() {
    42  				err = component.UpdateLastRan()
    43  				Expect(err).NotTo(HaveOccurred())
    44  			})
    45  
    46  			It("returns false", func() {
    47  				Expect(elapsed).To(BeFalse())
    48  			})
    49  		})
    50  
    51  		Context("when the interval is reached", func() {
    52  			BeforeEach(func() {
    53  				err = component.UpdateLastRan()
    54  				Expect(err).NotTo(HaveOccurred())
    55  
    56  				time.Sleep(1 * time.Second)
    57  			})
    58  
    59  			It("returns true", func() {
    60  				Expect(elapsed).To(BeTrue())
    61  			})
    62  		})
    63  	})
    64  
    65  	Describe("UpdateLastRan", func() {
    66  		BeforeEach(func() {
    67  			err = component.UpdateLastRan()
    68  			Expect(err).NotTo(HaveOccurred())
    69  		})
    70  
    71  		It("updates component last ran time", func() {
    72  			lastRan := component.LastRan()
    73  			Expect(lastRan).To(BeTemporally("~", time.Now(), time.Second))
    74  		})
    75  	})
    76  })