resultsChan := make(chan storeadapter.WatchEvent, 1) storeNode := storeadapter.StoreNode{Value: []byte("valuable-string")} resultsChan <- storeadapter.WatchEvent{Type: storeadapter.UpdateEvent, Node: &storeNode} database.WatchRouteChangesReturns(resultsChan, nil, nil) }) It("emits events from changes in the db", func() { reader := sse.NewReadCloser(response.Body) event, err := reader.Next() Expect(err).NotTo(HaveOccurred()) expectedEvent := sse.Event{ID: "0", Name: "Upsert", Data: []byte("valuable-string")} Expect(event).To(Equal(expectedEvent)) filterString := database.WatchRouteChangesArgsForCall(0) Expect(filterString).To(Equal(db.HTTP_ROUTE_BASE_KEY)) }) It("sets the content-type to text/event-stream", func() { Expect(response.Header.Get("Content-Type")).Should(Equal("text/event-stream; charset=utf-8")) Expect(response.Header.Get("Cache-Control")).Should(Equal("no-cache, no-store, must-revalidate")) Expect(response.Header.Get("Connection")).Should(Equal("keep-alive")) }) Context("when the event is Invalid", func() { BeforeEach(func() { resultsChan := make(chan storeadapter.WatchEvent, 1) resultsChan <- storeadapter.WatchEvent{Type: storeadapter.InvalidEvent} database.WatchRouteChangesReturns(resultsChan, nil, nil) })