36 lines
987 B
Go
36 lines
987 B
Go
package services
|
|
|
|
import (
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/inchstep/server/internal/models"
|
|
"github.com/stretchr/testify/suite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func strPtr(s string) *string { return &s }
|
|
|
|
// ServiceTestSuite 提供内存 SQLite 数据库用于服务层测试
|
|
type ServiceTestSuite struct {
|
|
suite.Suite
|
|
db *gorm.DB
|
|
svc *UserService
|
|
svcCk *CheckInService
|
|
svcPts *PointsService
|
|
}
|
|
|
|
func (s *ServiceTestSuite) SetupSuite() {
|
|
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
|
|
s.Require().NoError(err)
|
|
s.Require().NoError(db.AutoMigrate(&models.User{}, &models.CheckInItem{}, &models.CheckInRecord{}, &models.Achievement{}, &models.Admin{}))
|
|
s.db = db
|
|
s.svc = NewUserService(db)
|
|
s.svcCk = NewCheckInService(db)
|
|
s.svcPts = NewPointsService(db)
|
|
}
|
|
|
|
func (s *ServiceTestSuite) TearDownTest() {
|
|
s.db.Exec("DELETE FROM users")
|
|
s.db.Exec("DELETE FROM check_in_items")
|
|
s.db.Exec("DELETE FROM check_in_records")
|
|
s.db.Exec("DELETE FROM achievements")
|
|
} |