39 lines
1.4 KiB
Go
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"])
|
|
}
|