It("Should read from light pin", func() { lh.HandleGet(fakeResponseWriter, dummyRequest) Expect(fakeGpio.ReadCallCount()).To(Equal(1)) Expect(fakeGpio.ReadArgsForCall(0)).To(Equal(gpioLightPin)) }) It("Should return unknown light state", func() { lh.HandleGet(fakeResponseWriter, dummyRequest) Expect(fakeResponseWriter.WriteCallCount()).To(Equal(1)) Expect(fakeResponseWriter.WriteArgsForCall(0)).To(Equal(expectedReturn)) }) It("Should respond with HTTP status code 503", func() { lh.HandleGet(fakeResponseWriter, dummyRequest) Expect(fakeResponseWriter.WriteHeaderCallCount()).To(Equal(1)) Expect(fakeResponseWriter.WriteHeaderArgsForCall(0)).To(Equal(http.StatusServiceUnavailable)) }) }) Context("When reading light state contains leading/trailing whitespace", func() { BeforeEach(func() { fakeGpio.ReadReturns("\t0\n", nil) expectedLightState.StateKnown = true expectedLightState.LightOn = false expectedReturn, err = json.Marshal(expectedLightState) Expect(err).NotTo(HaveOccurred()) }) It("Should strip whitespace", func() { lh.HandleGet(fakeResponseWriter, dummyRequest) Expect(fakeResponseWriter.WriteCallCount()).To(Equal(1))