diff --git a/notice.go b/notice.go index cc025bc..8bbaffe 100644 --- a/notice.go +++ b/notice.go @@ -60,11 +60,16 @@ func (h *NoticeHandler) route() { if err != nil { continue } + now := time.Now() h.notices <- Notice{ PeerID: msg.ID, Message: message, - Timestamp: time.Now(), + Timestamp: now, } + h.envoy.Observer().Record(msg.ID, NoticeReceived{ + Message: message, + At: now, + }) } } } diff --git a/notice_test.go b/notice_test.go index 4e7d426..a8ae0cd 100644 --- a/notice_test.go +++ b/notice_test.go @@ -48,9 +48,17 @@ func TestNoticeHandler(t *testing.T) { }) t.Run("observer notified", func(t *testing.T) { - // wire mockObserver via envoy (requires constructor option or mock envoy) - // p.receive(envelope.EncloseNotice("hello")) - // Eventually: mockObserver recorded NoticeReceived{Message: "hello"} + obs := &mockObserver{} + p, envoy := newMockEnvoy(t, WithEmbassyObserver(obs)) + h := NewNoticeHandler(envoy) + t.Cleanup(h.Close) + + p.receive([]byte(envelope.EncloseNotice("hello"))) + + Eventually(t, func() bool { + events := EventsOf[NoticeReceived](obs) + return len(events) == 1 && events[0].Message == "hello" + }, "NoticeReceived observable not recorded") }) t.Run("close cleans up", func(t *testing.T) {