Example #1
0
			disaster := errors.New("oh no!")

			BeforeEach(func() {
				fakeConnection.CreateReturns("", disaster)
			})

			It("returns it", func() {
				_, err := client.Create(garden.ContainerSpec{})
				Ω(err).Should(Equal(disaster))
			})
		})
	})

	Describe("Containers", func() {
		It("sends a list request and returns all containers", func() {
			fakeConnection.ListReturns([]string{"handle-a", "handle-b"}, nil)

			props := garden.Properties{"foo": "bar"}

			containers, err := client.Containers(props)
			Ω(err).ShouldNot(HaveOccurred())

			Ω(fakeConnection.ListArgsForCall(0)).Should(Equal(props))

			Ω(containers).Should(HaveLen(2))
			Ω(containers[0].Handle()).Should(Equal("handle-a"))
			Ω(containers[1].Handle()).Should(Equal("handle-b"))
		})

		Context("when there is a connection error", func() {
			disaster := errors.New("oh no!")
		})
	})

	Describe("List", func() {
		properties := garden.Properties{
			"A": "B",
		}

		var gotHandles []string

		itRetries(func() error {
			var err error
			gotHandles, err = conn.List(properties)
			return err
		}, func(err error) {
			innerConnection.ListReturns([]string{"a", "b"}, err)
		}, func() int {
			return innerConnection.ListCallCount()
		}, func() {
			It("calls through to garden", func() {
				Ω(innerConnection.ListCallCount()).Should(Equal(1))

				listedProperties := innerConnection.ListArgsForCall(0)
				Ω(listedProperties).Should(Equal(properties))
			})

			It("returns the handles", func() {
				Ω(gotHandles).Should(Equal([]string{"a", "b"}))
			})
		})
	})