feat(conversations): align toggle priority fallback
This commit is contained in:
@@ -576,9 +576,11 @@ func (h *ConversationHandler) TogglePriority(c *gin.Context) {
|
||||
var req struct {
|
||||
Priority *string `json:"priority"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.AbortWithStatusError(c, http.StatusBadRequest, response.ErrValidation, err.Error())
|
||||
return
|
||||
if c.Request.Body != nil && c.Request.Body != http.NoBody {
|
||||
if err := c.ShouldBindJSON(&req); err != nil && !errors.Is(err, io.EOF) {
|
||||
response.AbortWithStatusError(c, http.StatusBadRequest, response.ErrValidation, err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
priority := ""
|
||||
if req.Priority != nil {
|
||||
|
||||
@@ -125,6 +125,7 @@ func (s *ConversationCrudTestSuite) SetupSuite() {
|
||||
conversations.DELETE("/:conversation_id", handler.Delete)
|
||||
conversations.POST("/:conversation_id/assign", handler.AssignAgent)
|
||||
conversations.POST("/:conversation_id/toggle_status", handler.ToggleStatus)
|
||||
conversations.POST("/:conversation_id/toggle_priority", handler.TogglePriority)
|
||||
conversations.POST("/:conversation_id/mute", handler.Mute)
|
||||
conversations.POST("/:conversation_id/unmute", handler.Unmute)
|
||||
conversations.POST("/:conversation_id/labels", handler.UpdateLabels)
|
||||
@@ -1553,6 +1554,30 @@ func (s *ConversationCrudTestSuite) TestUpdatePriority_NotFound() {
|
||||
assert.Equal(s.T(), http.StatusNotFound, w.Code)
|
||||
}
|
||||
|
||||
func (s *ConversationCrudTestSuite) TestTogglePriority_EmptyBodyClearsPriorityLikeChatwoot() {
|
||||
s.Require().NoError(s.db.Model(&model.Conversation{}).Where("id = ?", s.testConv.ID).Update("priority", "urgent").Error)
|
||||
|
||||
w := httptest.NewRecorder()
|
||||
req, _ := http.NewRequest("POST", s.convURL(s.testConv.ID)+"/toggle_priority", nil)
|
||||
s.router.ServeHTTP(w, req)
|
||||
|
||||
assert.Equal(s.T(), http.StatusOK, w.Code)
|
||||
assert.Empty(s.T(), w.Body.String())
|
||||
|
||||
var conversation model.Conversation
|
||||
s.Require().NoError(s.db.First(&conversation, s.testConv.ID).Error)
|
||||
assert.Equal(s.T(), "none", conversation.Priority)
|
||||
}
|
||||
|
||||
func (s *ConversationCrudTestSuite) TestTogglePriority_InvalidJSON() {
|
||||
w := httptest.NewRecorder()
|
||||
req, _ := http.NewRequest("POST", s.convURL(s.testConv.ID)+"/toggle_priority", bytes.NewReader([]byte("{bad json")))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
s.router.ServeHTTP(w, req)
|
||||
|
||||
assert.Equal(s.T(), http.StatusBadRequest, w.Code)
|
||||
}
|
||||
|
||||
// ========== AssignTeam Handler Tests ==========
|
||||
|
||||
func (s *ConversationCrudTestSuite) TestAssignTeam_Success() {
|
||||
|
||||
Reference in New Issue
Block a user