152 lines
3.4 KiB
Go
Executable File
152 lines
3.4 KiB
Go
Executable File
package dao
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"testing"
|
|
|
|
// 这里的依赖需要被导入,否则会报错
|
|
"atom/container"
|
|
"atom/database/models"
|
|
"atom/database/query"
|
|
_ "atom/providers"
|
|
"atom/utils"
|
|
|
|
"github.com/brianvoe/gofakeit/v6"
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/suite"
|
|
"go.uber.org/dig"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type RoleInjectParams struct {
|
|
dig.In
|
|
DB *gorm.DB
|
|
Dao RoleDao
|
|
Query *query.Query
|
|
Faker *gofakeit.Faker
|
|
}
|
|
|
|
type RoleSuite struct {
|
|
suite.Suite
|
|
RoleInjectParams
|
|
}
|
|
|
|
func init() {
|
|
if err := container.Container.Provide(NewRoleDao); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func Test_RoleSuite(t *testing.T) {
|
|
err := container.Container.Invoke(func(p RoleInjectParams) {
|
|
s := &RoleSuite{}
|
|
s.RoleInjectParams = p
|
|
|
|
suite.Run(t, s)
|
|
})
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func (s *RoleSuite) BeforeTest(suiteName, testName string) {
|
|
log.Println("BeforeTest: ", testName)
|
|
utils.TruncateTable(s.DB, s.Query.SysRole.TableName())
|
|
switch testName {
|
|
case "Test_FindByID", "Test_UpdateByID", "Test_DeleteByID", "Test_DeletePermanentlyByID":
|
|
log.Println("BeforeTest: insert test data")
|
|
_, _ = s.Dao.Create(context.Background(), &models.SysRole{
|
|
UUID: s.Faker.UUID(),
|
|
Name: s.Faker.Name(),
|
|
ParentID: s.Faker.Uint64(),
|
|
DefaultRouter: s.Faker.Animal(),
|
|
})
|
|
}
|
|
}
|
|
|
|
func (s *RoleSuite) AfterTest(suiteName, testName string) {
|
|
|
|
}
|
|
|
|
///////////////////
|
|
// start testing cases
|
|
//////////////////
|
|
|
|
func (s *RoleSuite) Test_Create() {
|
|
Convey("Test_Create", s.T(), func() {
|
|
Reset(func() {
|
|
s.BeforeTest("_", "Test_Create")
|
|
})
|
|
|
|
Convey("create", func() {
|
|
model, err := s.Dao.Create(context.Background(), &models.SysRole{
|
|
UUID: s.Faker.UUID(),
|
|
Name: s.Faker.Name(),
|
|
ParentID: s.Faker.Uint64(),
|
|
DefaultRouter: s.Faker.Animal(),
|
|
})
|
|
So(err, ShouldBeNil)
|
|
So(model.ID, ShouldEqual, 1)
|
|
})
|
|
})
|
|
}
|
|
|
|
func (s *RoleSuite) Test_FindByID() {
|
|
Convey("Test_FindByID", s.T(), func() {
|
|
model, err := s.Dao.FindByID(context.Background(), 1)
|
|
So(err, ShouldBeNil)
|
|
So(model.ID, ShouldEqual, 1)
|
|
})
|
|
}
|
|
|
|
func (s *RoleSuite) Test_UpdateByID() {
|
|
Convey("Test_UpdateByID", s.T(), func() {
|
|
model, err := s.Dao.FindByID(context.Background(), 1)
|
|
So(err, ShouldBeNil)
|
|
So(model.ID, ShouldEqual, 1)
|
|
|
|
name := "TEST_UpdateByID"
|
|
model.Name = name
|
|
newModel, err := s.Dao.UpdateByID(context.Background(), model)
|
|
So(err, ShouldBeNil)
|
|
So(newModel.Name, ShouldEqual, name)
|
|
})
|
|
}
|
|
|
|
func (s *RoleSuite) Test_DeleteByID() {
|
|
Convey("Test_DeleteByID", s.T(), func() {
|
|
model, err := s.Dao.FindByID(context.Background(), 1)
|
|
So(err, ShouldBeNil)
|
|
So(model.ID, ShouldEqual, 1)
|
|
|
|
err = s.Dao.DeleteByID(context.Background(), model.ID)
|
|
So(err, ShouldBeNil)
|
|
|
|
model, err = s.Query.SysRole.
|
|
WithContext(context.TODO()).
|
|
Unscoped().
|
|
Where(s.Query.SysRole.ID.Eq(1)).
|
|
First()
|
|
So(err, ShouldBeNil)
|
|
So(model.DeletedAt, ShouldNotBeNil)
|
|
})
|
|
}
|
|
|
|
func (s *RoleSuite) Test_DeletePermanentlyByID() {
|
|
Convey("Test_DeletePermanentlyByID", s.T(), func() {
|
|
model, err := s.Dao.FindByID(context.Background(), 1)
|
|
So(err, ShouldBeNil)
|
|
So(model.ID, ShouldEqual, 1)
|
|
|
|
err = s.Dao.DeletePermanentlyByID(context.Background(), model.ID)
|
|
So(err, ShouldBeNil)
|
|
|
|
_, err = s.Query.SysRole.
|
|
WithContext(context.TODO()).
|
|
Unscoped().
|
|
Where(s.Query.SysRole.ID.Eq(1)).
|
|
First()
|
|
So(err, ShouldNotBeNil)
|
|
})
|
|
}
|