88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
/*
 | 
						|
 * Copyright 2025 coze-dev Authors
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
package dao
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	. "github.com/bytedance/mockey"
 | 
						|
	. "github.com/smartystreets/goconvey/convey"
 | 
						|
	"github.com/stretchr/testify/suite"
 | 
						|
	"gorm.io/gorm"
 | 
						|
 | 
						|
	"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/model"
 | 
						|
	"github.com/coze-dev/coze-studio/backend/domain/knowledge/internal/dal/query"
 | 
						|
	"github.com/coze-dev/coze-studio/backend/internal/mock/infra/contract/orm"
 | 
						|
)
 | 
						|
 | 
						|
func TestKnowledgeSuite(t *testing.T) {
 | 
						|
	suite.Run(t, new(KnowledgeSuite))
 | 
						|
}
 | 
						|
 | 
						|
type KnowledgeSuite struct {
 | 
						|
	suite.Suite
 | 
						|
 | 
						|
	ctx context.Context
 | 
						|
	db  *gorm.DB
 | 
						|
	dao *KnowledgeDAO
 | 
						|
}
 | 
						|
 | 
						|
func (suite *KnowledgeSuite) SetupSuite() {
 | 
						|
	suite.ctx = context.Background()
 | 
						|
	mockDB := orm.NewMockDB()
 | 
						|
	mockDB.AddTable(&model.Knowledge{})
 | 
						|
	db, err := mockDB.DB()
 | 
						|
	if err != nil {
 | 
						|
		panic(err)
 | 
						|
	}
 | 
						|
	suite.db = db
 | 
						|
	suite.dao = &KnowledgeDAO{
 | 
						|
		DB:    db,
 | 
						|
		Query: query.Use(db),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (suite *KnowledgeSuite) TearDownTest() {
 | 
						|
	suite.db.WithContext(suite.ctx).Unscoped().Delete(&model.Knowledge{})
 | 
						|
}
 | 
						|
 | 
						|
func (suite *KnowledgeSuite) TestCRUD() {
 | 
						|
	PatchConvey("test crud", suite.T(), func() {
 | 
						|
		ctx := suite.ctx
 | 
						|
		q := suite.dao.Query.Knowledge
 | 
						|
 | 
						|
		err := suite.dao.Create(ctx, &model.Knowledge{
 | 
						|
			ID:   123,
 | 
						|
			Name: "test",
 | 
						|
		})
 | 
						|
		So(err, ShouldBeNil)
 | 
						|
		k, err := q.WithContext(ctx).Where(q.ID.Eq(123)).First()
 | 
						|
		So(err, ShouldBeNil)
 | 
						|
		So(k.Name, ShouldEqual, "test")
 | 
						|
 | 
						|
		err = suite.dao.Upsert(ctx, &model.Knowledge{
 | 
						|
			ID:   123,
 | 
						|
			Name: "testtest",
 | 
						|
		})
 | 
						|
		So(err, ShouldBeNil)
 | 
						|
		k, err = q.WithContext(ctx).Where(q.ID.Eq(123)).First()
 | 
						|
		So(err, ShouldBeNil)
 | 
						|
		So(k.Name, ShouldEqual, "testtest")
 | 
						|
	})
 | 
						|
}
 |