feat(captain): align streaming fallbacks
This commit is contained in:
@@ -237,6 +237,48 @@ func TestCopilotThreadMessagesListAndCreateUseNestedPayloads(t *testing.T) {
|
||||
require.Len(t, messages, 4)
|
||||
}
|
||||
|
||||
func TestCopilotMessagePayloadUsesThreadPushShape(t *testing.T) {
|
||||
f := newCopilotParityFixture(t)
|
||||
thread := f.createThread(t, "Need help")
|
||||
threadID := uintString(uint(thread["id"].(float64)))
|
||||
path := f.captainPath("/copilot_threads/" + threadID + "/copilot_messages/")
|
||||
|
||||
w := f.request(f.router, http.MethodGet, path, nil)
|
||||
require.Equal(t, http.StatusOK, w.Code, w.Body.String())
|
||||
messages := decodeMap(t, w)["payload"].([]any)
|
||||
message := messages[0].(map[string]any)
|
||||
nestedThread := message["copilot_thread"].(map[string]any)
|
||||
|
||||
require.Equal(t, thread["id"], nestedThread["id"])
|
||||
require.NotNil(t, nestedThread["user"])
|
||||
require.Equal(t, thread["account_id"], nestedThread["account_id"])
|
||||
require.Nil(t, nestedThread["assistant"])
|
||||
require.NotNil(t, message["account_id"])
|
||||
}
|
||||
|
||||
func TestCopilotMessagePushPayloadMatchesChatwootEventData(t *testing.T) {
|
||||
f := newCopilotParityFixture(t)
|
||||
thread := f.createThread(t, "Need help")
|
||||
threadID := uintString(uint(thread["id"].(float64)))
|
||||
path := f.captainPath("/copilot_threads/" + threadID + "/copilot_messages/")
|
||||
w := f.request(f.router, http.MethodPost, path, map[string]any{"message": "Follow up", "conversation_id": 123})
|
||||
require.Equal(t, http.StatusOK, w.Code, w.Body.String())
|
||||
created := decodeMap(t, w)
|
||||
|
||||
var stored model.CopilotMessage
|
||||
require.NoError(t, f.db.Preload("CopilotThread.User").Preload("CopilotThread.Assistant").First(&stored, uint(created["id"].(float64))).Error)
|
||||
push := copilotMessagePushPayload(&stored)
|
||||
nestedThread := push["copilot_thread"].(gin.H)
|
||||
|
||||
require.Equal(t, created["id"], float64(push["id"].(uint)))
|
||||
require.Equal(t, "user", string(push["message_type"].(model.CopilotMessageType)))
|
||||
require.Equal(t, "Follow up", push["message"].(map[string]any)["content"])
|
||||
require.Nil(t, push["account_id"])
|
||||
require.Equal(t, stored.CopilotThreadID, nestedThread["id"])
|
||||
require.Nil(t, nestedThread["assistant"])
|
||||
require.NotNil(t, nestedThread["user"])
|
||||
}
|
||||
|
||||
func TestCopilotThreadMessagesAreAccountAndUserScoped(t *testing.T) {
|
||||
f := newCopilotParityFixture(t)
|
||||
thread := f.createThread(t, "Private thread")
|
||||
|
||||
Reference in New Issue
Block a user