}) }) }) Describe("FindContainerForIdentifier", func() { var identifier Identifier BeforeEach(func() { identifier = Identifier{ ResourceID: 1234, } }) Context("when looking up the container info contains an error", func() { BeforeEach(func() { fakeProvider.FindContainerForIdentifierReturns(db.Container{}, false, errors.New("disaster")) }) It("returns the error", func() { container, found, err := pool.FindContainerForIdentifier(logger, identifier) Expect(err).To(HaveOccurred()) Expect(container).To(BeNil()) Expect(found).To(BeFalse()) }) }) Context("when looking up the container info does not find the container info", func() { BeforeEach(func() { fakeProvider.FindContainerForIdentifierReturns(db.Container{}, false, nil) })
JustBeforeEach(func() { foundContainer, found, lookupErr = worker.FindContainerForIdentifier(logger, id) }) Context("when the container can be found", func() { var ( fakeContainer *gfakes.FakeContainer ) BeforeEach(func() { fakeContainer = new(gfakes.FakeContainer) fakeContainer.HandleReturns("provider-handle") fakeWorkerProvider.FindContainerForIdentifierReturns(db.Container{ Handle: "provider-handle", }, true, nil) fakeGardenClient.LookupReturns(fakeContainer, nil) }) It("succeeds", func() { Expect(lookupErr).NotTo(HaveOccurred()) }) It("looks for containers with matching properties via the Garden client", func() { Expect(fakeWorkerProvider.FindContainerForIdentifierCallCount()).To(Equal(1)) Expect(fakeWorkerProvider.FindContainerForIdentifierArgsForCall(0)).To(Equal(id)) Expect(fakeGardenClient.LookupCallCount()).To(Equal(1)) lookupHandle := fakeGardenClient.LookupArgsForCall(0)