From 98b7bcc2d64d57a9cd7c3c954db1e3231199f657 Mon Sep 17 00:00:00 2001 From: Jannis Mattheis Date: Sat, 3 Feb 2018 18:14:29 +0100 Subject: [PATCH] Add notify to message api --- api/message.go | 7 +++++++ api/message_test.go | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/api/message.go b/api/message.go index 358f236..499c6d9 100644 --- a/api/message.go +++ b/api/message.go @@ -22,9 +22,15 @@ type MessageDatabase interface { CreateMessage(message *model.Message) error } +// Notifier notifies when a new message was created. +type Notifier interface { + Notify(userID uint, message *model.Message) +} + // The MessageAPI provides handlers for managing messages. type MessageAPI struct { DB MessageDatabase + Notifier Notifier } // GetMessages returns all messages from a user. @@ -79,6 +85,7 @@ func (a *MessageAPI) CreateMessage(ctx *gin.Context) { message.ApplicationID = auth.GetTokenID(ctx) message.Date = time.Now() a.DB.CreateMessage(&message) + a.Notifier.Notify(auth.GetUserID(ctx), &message) ctx.JSON(200, message) } } diff --git a/api/message_test.go b/api/message_test.go index 63b7e8b..3f06a78 100644 --- a/api/message_test.go +++ b/api/message_test.go @@ -27,6 +27,7 @@ type MessageSuite struct { a *MessageAPI ctx *gin.Context recorder *httptest.ResponseRecorder + notified bool } func (s *MessageSuite) BeforeTest(suiteName, testName string) { @@ -34,7 +35,12 @@ func (s *MessageSuite) BeforeTest(suiteName, testName string) { s.recorder = httptest.NewRecorder() s.ctx, _ = gin.CreateTestContext(s.recorder) s.db = &apimock.MockMessageDatabase{} - s.a = &MessageAPI{DB: s.db} + s.notified = false + s.a = &MessageAPI{DB: s.db, Notifier: s} +} + +func (s *MessageSuite) Notify(userID uint, msg *model.Message) { + s.notified = true } func (s *MessageSuite) Test_GetMessages() { @@ -166,6 +172,7 @@ func (s *MessageSuite) Test_CreateMessage_onJson_allParams() { s.db.AssertCalled(s.T(), "CreateMessage", expected) assert.Equal(s.T(), 200, s.recorder.Code) + assert.True(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_onlyRequired() { @@ -184,6 +191,7 @@ func (s *MessageSuite) Test_CreateMessage_onlyRequired() { s.db.AssertCalled(s.T(), "CreateMessage", expected) assert.Equal(s.T(), 200, s.recorder.Code) + assert.True(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() { @@ -196,6 +204,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() { s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything) assert.Equal(s.T(), 400, s.recorder.Code) + assert.False(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_failWhenNoTitle() { @@ -208,6 +217,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenNoTitle() { s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything) assert.Equal(s.T(), 400, s.recorder.Code) + assert.False(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() { @@ -220,6 +230,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() { s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything) assert.Equal(s.T(), 400, s.recorder.Code) + assert.False(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_onQueryData() { @@ -238,6 +249,7 @@ func (s *MessageSuite) Test_CreateMessage_onQueryData() { s.db.AssertCalled(s.T(), "CreateMessage", expected) assert.Equal(s.T(), 200, s.recorder.Code) + assert.True(s.T(), s.notified) } func (s *MessageSuite) Test_CreateMessage_onFormData() { @@ -256,4 +268,5 @@ func (s *MessageSuite) Test_CreateMessage_onFormData() { s.db.AssertCalled(s.T(), "CreateMessage", expected) assert.Equal(s.T(), 200, s.recorder.Code) + assert.True(s.T(), s.notified) }