Add notify to message api
This commit is contained in:
parent
4e3d00ea98
commit
98b7bcc2d6
|
|
@ -22,9 +22,15 @@ type MessageDatabase interface {
|
||||||
CreateMessage(message *model.Message) error
|
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.
|
// The MessageAPI provides handlers for managing messages.
|
||||||
type MessageAPI struct {
|
type MessageAPI struct {
|
||||||
DB MessageDatabase
|
DB MessageDatabase
|
||||||
|
Notifier Notifier
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMessages returns all messages from a user.
|
// GetMessages returns all messages from a user.
|
||||||
|
|
@ -79,6 +85,7 @@ func (a *MessageAPI) CreateMessage(ctx *gin.Context) {
|
||||||
message.ApplicationID = auth.GetTokenID(ctx)
|
message.ApplicationID = auth.GetTokenID(ctx)
|
||||||
message.Date = time.Now()
|
message.Date = time.Now()
|
||||||
a.DB.CreateMessage(&message)
|
a.DB.CreateMessage(&message)
|
||||||
|
a.Notifier.Notify(auth.GetUserID(ctx), &message)
|
||||||
ctx.JSON(200, message)
|
ctx.JSON(200, message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ type MessageSuite struct {
|
||||||
a *MessageAPI
|
a *MessageAPI
|
||||||
ctx *gin.Context
|
ctx *gin.Context
|
||||||
recorder *httptest.ResponseRecorder
|
recorder *httptest.ResponseRecorder
|
||||||
|
notified bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) BeforeTest(suiteName, testName string) {
|
func (s *MessageSuite) BeforeTest(suiteName, testName string) {
|
||||||
|
|
@ -34,7 +35,12 @@ func (s *MessageSuite) BeforeTest(suiteName, testName string) {
|
||||||
s.recorder = httptest.NewRecorder()
|
s.recorder = httptest.NewRecorder()
|
||||||
s.ctx, _ = gin.CreateTestContext(s.recorder)
|
s.ctx, _ = gin.CreateTestContext(s.recorder)
|
||||||
s.db = &apimock.MockMessageDatabase{}
|
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() {
|
func (s *MessageSuite) Test_GetMessages() {
|
||||||
|
|
@ -166,6 +172,7 @@ func (s *MessageSuite) Test_CreateMessage_onJson_allParams() {
|
||||||
|
|
||||||
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
||||||
assert.Equal(s.T(), 200, s.recorder.Code)
|
assert.Equal(s.T(), 200, s.recorder.Code)
|
||||||
|
assert.True(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_onlyRequired() {
|
func (s *MessageSuite) Test_CreateMessage_onlyRequired() {
|
||||||
|
|
@ -184,6 +191,7 @@ func (s *MessageSuite) Test_CreateMessage_onlyRequired() {
|
||||||
|
|
||||||
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
||||||
assert.Equal(s.T(), 200, s.recorder.Code)
|
assert.Equal(s.T(), 200, s.recorder.Code)
|
||||||
|
assert.True(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() {
|
func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() {
|
||||||
|
|
@ -196,6 +204,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenNoMessage() {
|
||||||
|
|
||||||
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
||||||
assert.Equal(s.T(), 400, s.recorder.Code)
|
assert.Equal(s.T(), 400, s.recorder.Code)
|
||||||
|
assert.False(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_failWhenNoTitle() {
|
func (s *MessageSuite) Test_CreateMessage_failWhenNoTitle() {
|
||||||
|
|
@ -208,6 +217,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenNoTitle() {
|
||||||
|
|
||||||
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
||||||
assert.Equal(s.T(), 400, s.recorder.Code)
|
assert.Equal(s.T(), 400, s.recorder.Code)
|
||||||
|
assert.False(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() {
|
func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() {
|
||||||
|
|
@ -220,6 +230,7 @@ func (s *MessageSuite) Test_CreateMessage_failWhenPriorityNotNumber() {
|
||||||
|
|
||||||
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
s.db.AssertNotCalled(s.T(), "CreateMessage", mock.Anything)
|
||||||
assert.Equal(s.T(), 400, s.recorder.Code)
|
assert.Equal(s.T(), 400, s.recorder.Code)
|
||||||
|
assert.False(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_onQueryData() {
|
func (s *MessageSuite) Test_CreateMessage_onQueryData() {
|
||||||
|
|
@ -238,6 +249,7 @@ func (s *MessageSuite) Test_CreateMessage_onQueryData() {
|
||||||
|
|
||||||
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
||||||
assert.Equal(s.T(), 200, s.recorder.Code)
|
assert.Equal(s.T(), 200, s.recorder.Code)
|
||||||
|
assert.True(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MessageSuite) Test_CreateMessage_onFormData() {
|
func (s *MessageSuite) Test_CreateMessage_onFormData() {
|
||||||
|
|
@ -256,4 +268,5 @@ func (s *MessageSuite) Test_CreateMessage_onFormData() {
|
||||||
|
|
||||||
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
s.db.AssertCalled(s.T(), "CreateMessage", expected)
|
||||||
assert.Equal(s.T(), 200, s.recorder.Code)
|
assert.Equal(s.T(), 200, s.recorder.Code)
|
||||||
|
assert.True(s.T(), s.notified)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue