feat(inboxes): persist chatwoot working hours
This commit is contained in:
@@ -33,7 +33,7 @@ func TestInboxHandler_ChatwootSerializerParity(t *testing.T) {
|
||||
_ = sqlDB.Close()
|
||||
}
|
||||
})
|
||||
require.NoError(t, db.AutoMigrate(&model.Account{}, &model.Inbox{}))
|
||||
require.NoError(t, db.AutoMigrate(&model.Account{}, &model.Inbox{}, &model.WorkingHour{}))
|
||||
|
||||
account := &model.Account{Name: "Inbox Parity", Locale: "en", Active: true}
|
||||
require.NoError(t, db.Create(account).Error)
|
||||
@@ -123,7 +123,7 @@ func TestInboxHandler_ChatwootCreateUpdateRequestBinding(t *testing.T) {
|
||||
_ = sqlDB.Close()
|
||||
}
|
||||
})
|
||||
require.NoError(t, db.AutoMigrate(&model.Account{}, &model.Inbox{}))
|
||||
require.NoError(t, db.AutoMigrate(&model.Account{}, &model.Inbox{}, &model.WorkingHour{}))
|
||||
|
||||
account := &model.Account{Name: "Inbox Binding", Locale: "en", Active: true}
|
||||
require.NoError(t, db.Create(account).Error)
|
||||
@@ -206,6 +206,41 @@ func TestInboxHandler_ChatwootCreateUpdateRequestBinding(t *testing.T) {
|
||||
require.Equal(t, "Rate this conversation", csatConfig["message"])
|
||||
require.Equal(t, "Please rate us", csatConfig["button_text"])
|
||||
require.ElementsMatch(t, []any{"vip", "priority"}, csatConfig["survey_rules"].(map[string]any)["values"].([]any))
|
||||
|
||||
workingHoursUpdate := inboxParityRequest(t, router, http.MethodPut, fmt.Sprintf("/api/v1/accounts/%d/inboxes/%d", account.ID, websiteID), map[string]any{
|
||||
"working_hours_enabled": true,
|
||||
"out_of_office_message": "We are away",
|
||||
"timezone": "Asia/Shanghai",
|
||||
"working_hours": []map[string]any{
|
||||
{"day_of_week": 0, "closed_all_day": true, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": false},
|
||||
{"day_of_week": 1, "closed_all_day": false, "open_hour": "9", "open_minutes": "30", "close_hour": "18", "close_minutes": "0", "open_all_day": false},
|
||||
{"day_of_week": 2, "closed_all_day": false, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": true},
|
||||
{"day_of_week": 3, "closed_all_day": true, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": false},
|
||||
{"day_of_week": 4, "closed_all_day": true, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": false},
|
||||
{"day_of_week": 5, "closed_all_day": true, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": false},
|
||||
{"day_of_week": 6, "closed_all_day": true, "open_hour": "", "open_minutes": "", "close_hour": "", "close_minutes": "", "open_all_day": false},
|
||||
},
|
||||
"channel": map[string]any{},
|
||||
})
|
||||
require.Equal(t, http.StatusOK, workingHoursUpdate.Code, workingHoursUpdate.Body.String())
|
||||
workingHoursData := inboxParityObject(t, workingHoursUpdate)
|
||||
require.Equal(t, true, workingHoursData["working_hours_enabled"])
|
||||
require.Equal(t, "We are away", workingHoursData["out_of_office_message"])
|
||||
require.Equal(t, "Asia/Shanghai", workingHoursData["timezone"])
|
||||
workingHours := workingHoursData["working_hours"].([]any)
|
||||
require.Len(t, workingHours, 7)
|
||||
monday := workingHours[1].(map[string]any)
|
||||
require.Equal(t, float64(1), monday["day_of_week"])
|
||||
require.Equal(t, float64(9), monday["open_hour"])
|
||||
require.Equal(t, float64(30), monday["open_minutes"])
|
||||
tuesday := workingHours[2].(map[string]any)
|
||||
require.Equal(t, true, tuesday["open_all_day"])
|
||||
require.Equal(t, float64(0), tuesday["open_hour"])
|
||||
require.Equal(t, float64(23), tuesday["close_hour"])
|
||||
|
||||
showUpdated := inboxParityRequest(t, router, http.MethodGet, fmt.Sprintf("/api/v1/accounts/%d/inboxes/%d", account.ID, websiteID), nil)
|
||||
require.Equal(t, http.StatusOK, showUpdated.Code, showUpdated.Body.String())
|
||||
require.Len(t, inboxParityObject(t, showUpdated)["working_hours"].([]any), 7)
|
||||
}
|
||||
|
||||
func setupInboxParityRouter(db *gorm.DB) *gin.Engine {
|
||||
|
||||
Reference in New Issue
Block a user