github.com/ManabuSeki/goa-v1@v1.4.3/context_test.go (about) 1 package goa_test 2 3 import ( 4 "net/http" 5 "net/url" 6 7 "context" 8 9 "github.com/goadesign/goa" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("ResponseData", func() { 15 var data *goa.ResponseData 16 var rw http.ResponseWriter 17 var req *http.Request 18 var params url.Values 19 20 BeforeEach(func() { 21 var err error 22 req, err = http.NewRequest("GET", "google.com", nil) 23 Ω(err).ShouldNot(HaveOccurred()) 24 rw = &TestResponseWriter{Status: 42} 25 params = url.Values{"query": []string{"value"}} 26 ctx := goa.NewContext(context.Background(), rw, req, params) 27 data = goa.ContextResponse(ctx) 28 }) 29 30 Context("SwitchWriter", func() { 31 var rwo http.ResponseWriter 32 33 It("sets the response writer and returns the previous one", func() { 34 Ω(rwo).Should(BeNil()) 35 rwo = data.SwitchWriter(&TestResponseWriter{Status: 43}) 36 Ω(rwo).ShouldNot(BeNil()) 37 Ω(rwo).Should(BeAssignableToTypeOf(&TestResponseWriter{})) 38 trw := rwo.(*TestResponseWriter) 39 Ω(trw.Status).Should(Equal(42)) 40 }) 41 }) 42 43 Context("Write", func() { 44 It("should call WriteHeader(http.StatusOK) if WriteHeader has not yet been called", func() { 45 _, err := data.Write(nil) 46 Ω(err).Should(BeNil()) 47 Ω(data.Status).Should(Equal(http.StatusOK)) 48 }) 49 50 It("should not affect Status if WriteHeader has been called", func() { 51 status := http.StatusBadRequest 52 data.WriteHeader(status) 53 _, err := data.Write(nil) 54 Ω(err).Should(BeNil()) 55 Ω(data.Status).Should(Equal(status)) 56 }) 57 }) 58 })