}) }) Describe("Create", func() { It("sends a create request and returns a container", func() { spec := garden.ContainerSpec{ RootFSPath: "/some/roofs", } fakeConnection.CreateReturns("some-handle", nil) container, err := client.Create(spec) Ω(err).ShouldNot(HaveOccurred()) Ω(container).ShouldNot(BeNil()) Ω(fakeConnection.CreateArgsForCall(0)).Should(Equal(spec)) Ω(container.Handle()).Should(Equal("some-handle")) }) Context("when there is a connection error", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakeConnection.CreateReturns("", disaster) }) It("returns it", func() { _, err := client.Create(garden.ContainerSpec{}) Ω(err).Should(Equal(disaster)) })
var gotHandle string itRetries(func() error { var err error gotHandle, err = conn.Create(spec) return err }, func(err error) { innerConnection.CreateReturns("bach", err) }, func() int { return innerConnection.CreateCallCount() }, func() { It("calls through to garden", func() { Ω(innerConnection.CreateCallCount()).Should(Equal(1)) calledSpec := innerConnection.CreateArgsForCall(0) Ω(calledSpec).Should(Equal(spec)) }) It("returns the container handle", func() { Ω(gotHandle).Should(Equal("bach")) }) }) }) Describe("Destroy", func() { handle := "mozart" itRetries(func() error { return conn.Destroy(handle) }, func(err error) {