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 })