Files
crawlab/core/result/test/base.go
2024-06-14 15:59:48 +08:00

77 lines
1.4 KiB
Go

package test
import (
"github.com/crawlab-team/crawlab/core/interfaces"
"github.com/crawlab-team/crawlab/core/models/delegate"
"github.com/crawlab-team/crawlab/core/models/models"
"github.com/crawlab-team/crawlab/core/models/service"
"github.com/crawlab-team/crawlab/core/result"
"github.com/crawlab-team/crawlab/db/mongo"
"go.uber.org/dig"
"testing"
)
func init() {
T = NewTest()
}
var T *Test
type Test struct {
// dependencies
modelSvc service.ModelService
resultSvc interfaces.ResultService
// test data
TestColName string
TestCol *mongo.Col
TestDc *models.DataCollection
}
func (t *Test) Setup(t2 *testing.T) {
t2.Cleanup(t.Cleanup)
}
func (t *Test) Cleanup() {
_ = t.modelSvc.DropAll()
}
func NewTest() *Test {
var err error
// test
t := &Test{
TestColName: "test_results",
}
// dependency injection
c := dig.New()
if err := c.Provide(service.NewService); err != nil {
panic(err)
}
if err := c.Invoke(func(
modelSvc service.ModelService,
) {
t.modelSvc = modelSvc
}); err != nil {
panic(err)
}
// data collection
t.TestDc = &models.DataCollection{
Name: t.TestColName,
}
if err := delegate.NewModelDelegate(t.TestDc).Add(); err != nil {
panic(err)
}
t.TestCol = mongo.GetMongoCol(t.TestColName)
// result service
t.resultSvc, err = result.GetResultService(t.TestDc.GetId())
if err != nil {
panic(err)
}
return t
}