Files
gochat/backend/internal/service/conversation_custom_attributes_test.go
T

39 lines
1.4 KiB
Go

package service
import (
"context"
"encoding/json"
"testing"
"github.com/gochat/gochat/internal/channel"
"github.com/gochat/gochat/internal/model"
"github.com/gochat/gochat/internal/repository"
"github.com/stretchr/testify/require"
"gorm.io/datatypes"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestUpdateCustomAttributesMergesConnectorPayload(t *testing.T) {
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, db.AutoMigrate(&model.Conversation{}))
conversation := model.Conversation{
AccountID: 1,
CustomAttributes: datatypes.JSON([]byte(`{"swt_sid":"sid","swt_state":"chatting"}`)),
}
require.NoError(t, db.Create(&conversation).Error)
svc := NewConversationService(repository.NewConversationRepo(db), repository.NewMessageRepo(db), channel.NewDispatcher(), nil, nil, nil, nil)
ctx := WithShangwutongRequestMetadata(context.Background(), true, 0)
updated, err := svc.UpdateCustomAttributes(ctx, 1, conversation.ID, datatypes.JSON([]byte(`{"swt_source_channel":"百度搜索推广"}`)))
require.NoError(t, err)
attributes := map[string]any{}
require.NoError(t, json.Unmarshal(updated.CustomAttributes, &attributes))
require.Equal(t, "sid", attributes["swt_sid"])
require.Equal(t, "chatting", attributes["swt_state"])
require.Equal(t, "百度搜索推广", attributes["swt_source_channel"])
}