Align GoChat with Chatwoot frontend contracts
This commit is contained in:
@@ -88,8 +88,10 @@ func (s *NotificationSettingHandlerTestSuite) TestShow_Success() {
|
||||
assert.NotContains(s.T(), body, "notification_setting")
|
||||
assert.Equal(s.T(), float64(s.account.ID), body["account_id"])
|
||||
assert.Equal(s.T(), float64(11), body["user_id"])
|
||||
s.Require().Contains(body, "all_email_flags")
|
||||
s.Require().Contains(body, "selected_email_flags")
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllEmailFlagNames()), body["all_email_flags"])
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllPushFlagNames()), body["all_push_flags"])
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllEmailFlagNames()), body["selected_email_flags"])
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllPushFlagNames()), body["selected_push_flags"])
|
||||
}
|
||||
|
||||
func (s *NotificationSettingHandlerTestSuite) TestUpdate_BadRequest_InvalidAccountID() {
|
||||
@@ -109,6 +111,10 @@ func (s *NotificationSettingHandlerTestSuite) TestUpdate_BadRequest_InvalidAccou
|
||||
|
||||
func (s *NotificationSettingHandlerTestSuite) TestUpdate_ReturnsRawChatwootPayload() {
|
||||
r := gin.New()
|
||||
r.GET("/api/v1/accounts/:account_id/notification_settings", func(c *gin.Context) {
|
||||
c.Set("user_id", float64(12))
|
||||
s.handler.Show(c)
|
||||
})
|
||||
r.PATCH("/api/v1/accounts/:account_id/notification_settings", func(c *gin.Context) {
|
||||
c.Set("user_id", float64(12))
|
||||
s.handler.Update(c)
|
||||
@@ -128,6 +134,30 @@ func (s *NotificationSettingHandlerTestSuite) TestUpdate_ReturnsRawChatwootPaylo
|
||||
assert.NotContains(s.T(), data, "notification_setting")
|
||||
assert.Equal(s.T(), float64(s.account.ID), data["account_id"])
|
||||
assert.Equal(s.T(), float64(12), data["user_id"])
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllEmailFlagNames()), data["all_email_flags"])
|
||||
assert.Equal(s.T(), stringSliceToInterfaceSlice(model.AllPushFlagNames()), data["all_push_flags"])
|
||||
assert.Equal(s.T(), []interface{}{"email_conversation_assignment"}, data["selected_email_flags"])
|
||||
assert.Equal(s.T(), []interface{}{"push_conversation_mention"}, data["selected_push_flags"])
|
||||
|
||||
var persisted model.NotificationSetting
|
||||
s.Require().NoError(s.db.Where("account_id = ? AND user_id = ?", s.account.ID, 12).First(&persisted).Error)
|
||||
assert.Equal(s.T(), []string{"email_conversation_assignment"}, persisted.SelectedEmailFlagNames())
|
||||
assert.Equal(s.T(), []string{"push_conversation_mention"}, persisted.SelectedPushFlagNames())
|
||||
|
||||
w = httptest.NewRecorder()
|
||||
req, _ = http.NewRequest("GET", fmt.Sprintf("/api/v1/accounts/%d/notification_settings", s.account.ID), nil)
|
||||
r.ServeHTTP(w, req)
|
||||
|
||||
assert.Equal(s.T(), http.StatusOK, w.Code)
|
||||
s.Require().NoError(json.Unmarshal(w.Body.Bytes(), &data))
|
||||
assert.Equal(s.T(), []interface{}{"email_conversation_assignment"}, data["selected_email_flags"])
|
||||
assert.Equal(s.T(), []interface{}{"push_conversation_mention"}, data["selected_push_flags"])
|
||||
}
|
||||
|
||||
func stringSliceToInterfaceSlice(values []string) []interface{} {
|
||||
items := make([]interface{}, 0, len(values))
|
||||
for _, value := range values {
|
||||
items = append(items, value)
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user