) }) Context("when a container does not exist for the session", func() { BeforeEach(func() { workerClient.FindContainerForIdentifierReturns(nil, false, nil) }) Context("when a worker is found", func() { var satisfyingWorker *wfakes.FakeWorker BeforeEach(func() { satisfyingWorker = new(wfakes.FakeWorker) workerClient.SatisfyingReturns(satisfyingWorker, nil) satisfyingWorker.CreateContainerReturns(fakeContainer, nil) }) Context("when the worker supports volume management", func() { var fakeBaggageclaimClient *bfakes.FakeClient BeforeEach(func() { fakeBaggageclaimClient = new(bfakes.FakeClient) satisfyingWorker.VolumeManagerReturns(fakeBaggageclaimClient, true) }) Context("when the cache is already present", func() { var foundVolume *bfakes.FakeVolume BeforeEach(func() { foundVolume = new(bfakes.FakeVolume)
) BeforeEach(func() { workerA = new(fakes.FakeWorker) workerB = new(fakes.FakeWorker) workerC = new(fakes.FakeWorker) workerA.ActiveContainersReturns(3) workerB.ActiveContainersReturns(2) workerA.SatisfyingReturns(workerA, nil) workerB.SatisfyingReturns(workerB, nil) workerC.SatisfyingReturns(nil, errors.New("nope")) fakeContainer = new(fakes.FakeContainer) workerA.CreateContainerReturns(fakeContainer, nil) workerB.CreateContainerReturns(fakeContainer, nil) workerC.CreateContainerReturns(fakeContainer, nil) fakeProvider.WorkersReturns([]Worker{workerA, workerB, workerC}, nil) }) It("succeeds", func() { Expect(createErr).NotTo(HaveOccurred()) }) It("returns the created container", func() { Expect(createdContainer).To(Equal(fakeContainer)) }) It("checks that the workers satisfy the given spec", func() {