feat(csat): send surveys on resolved conversations
This commit is contained in:
@@ -201,12 +201,12 @@ type publicCsatUpdateBody struct {
|
||||
Rating int `json:"rating"`
|
||||
FeedbackMessage string `json:"feedback_message"`
|
||||
Message struct {
|
||||
SubmittedValues []map[string]any `json:"submitted_values"`
|
||||
SubmittedValues any `json:"submitted_values"`
|
||||
} `json:"message"`
|
||||
}
|
||||
|
||||
func (b publicCsatUpdateBody) submittedValues() []map[string]any {
|
||||
if len(b.Message.SubmittedValues) > 0 {
|
||||
func (b publicCsatUpdateBody) submittedValues() any {
|
||||
if b.Message.SubmittedValues != nil {
|
||||
return b.Message.SubmittedValues
|
||||
}
|
||||
if b.Rating != 0 || b.FeedbackMessage != "" {
|
||||
|
||||
@@ -232,7 +232,7 @@ func (s *CsatSurveyHandlerTestSuite) TestPublicCsatShowAndUpdate_Success() {
|
||||
assert.Equal(s.T(), "Rate this chat", showResp["content"])
|
||||
assert.Equal(s.T(), "CSAT Inbox", showResp["inbox_name"])
|
||||
|
||||
body := `{"message":{"submitted_values":[{"csat_survey_response":{"rating":4,"feedback_message":"Helpful"}}]}}`
|
||||
body := `{"message":{"submitted_values":{"csat_survey_response":{"rating":4,"feedback_message":"Helpful"}}}}`
|
||||
wUpdate := httptest.NewRecorder()
|
||||
reqUpdate, _ := http.NewRequest("PATCH", "/public/api/v1/csat_survey/"+conversation.UUID, bytes.NewBufferString(body))
|
||||
reqUpdate.Header.Set("Content-Type", "application/json")
|
||||
@@ -257,7 +257,22 @@ func (s *CsatSurveyHandlerTestSuite) TestPublicCsatShowAndUpdate_Success() {
|
||||
s.Require().NoError(s.db.First(&storedMessage, message.ID).Error)
|
||||
var attrs map[string]any
|
||||
s.Require().NoError(json.Unmarshal(storedMessage.ContentAttributes, &attrs))
|
||||
assert.NotEmpty(s.T(), attrs["submitted_values"])
|
||||
submittedValues := attrs["submitted_values"].(map[string]any)
|
||||
assert.Contains(s.T(), submittedValues, "csat_survey_response")
|
||||
|
||||
secondBody := `{"message":{"submitted_values":{"csat_survey_response":{"rating":2,"feedback_message":"Could be better"}}}}`
|
||||
wSecondUpdate := httptest.NewRecorder()
|
||||
reqSecondUpdate, _ := http.NewRequest("PATCH", "/public/api/v1/csat_survey/"+conversation.UUID, bytes.NewBufferString(secondBody))
|
||||
reqSecondUpdate.Header.Set("Content-Type", "application/json")
|
||||
r.ServeHTTP(wSecondUpdate, reqSecondUpdate)
|
||||
assert.Equal(s.T(), http.StatusOK, wSecondUpdate.Code)
|
||||
|
||||
var count int64
|
||||
s.Require().NoError(s.db.Model(&automation.CsatSurveyResponse{}).Where("message_id = ?", message.ID).Count(&count).Error)
|
||||
assert.Equal(s.T(), int64(1), count)
|
||||
s.Require().NoError(s.db.Where("message_id = ?", message.ID).First(&stored).Error)
|
||||
assert.Equal(s.T(), 2, stored.Rating)
|
||||
assert.Equal(s.T(), "Could be better", stored.FeedbackMessage)
|
||||
}
|
||||
|
||||
func (s *CsatSurveyHandlerTestSuite) TestPublicCsatUpdate_LockedAfter14Days() {
|
||||
|
||||
Reference in New Issue
Block a user