mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
184 lines
4.1 KiB
Go
184 lines
4.1 KiB
Go
package test
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/entity"
|
|
"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/stretchr/testify/require"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"net/http"
|
|
"testing"
|
|
)
|
|
|
|
func TestSpiderController_Delete(t *testing.T) {
|
|
T.Setup(t)
|
|
e := T.NewExpect(t)
|
|
|
|
s := models.Spider{
|
|
Name: "test spider",
|
|
Description: "this is a test spider",
|
|
ColName: "test col name",
|
|
}
|
|
|
|
// add spider
|
|
res := T.WithAuth(e.POST("/spiders")).
|
|
WithJSON(s).
|
|
Expect().Status(http.StatusOK).
|
|
JSON().Object()
|
|
res.Path("$.data._id").NotNull()
|
|
id := res.Path("$.data._id").String().Raw()
|
|
oid, err := primitive.ObjectIDFromHex(id)
|
|
require.Nil(t, err)
|
|
require.False(t, oid.IsZero())
|
|
|
|
// add tasks
|
|
var taskIds []primitive.ObjectID
|
|
tasks := []models.Task{
|
|
{
|
|
Id: primitive.NewObjectID(),
|
|
SpiderId: oid,
|
|
},
|
|
{
|
|
Id: primitive.NewObjectID(),
|
|
SpiderId: oid,
|
|
},
|
|
}
|
|
for _, task := range tasks {
|
|
// add task
|
|
err := delegate.NewModelDelegate(&task).Add()
|
|
require.Nil(t, err)
|
|
|
|
// add task stat
|
|
err = delegate.NewModelDelegate(&models.TaskStat{
|
|
Id: task.Id,
|
|
}).Add()
|
|
require.Nil(t, err)
|
|
|
|
taskIds = append(taskIds, task.Id)
|
|
}
|
|
|
|
// delete
|
|
T.WithAuth(e.DELETE("/spiders/" + id)).
|
|
Expect().Status(http.StatusOK)
|
|
|
|
// get
|
|
T.WithAuth(e.GET("/spiders/" + id)).
|
|
Expect().Status(http.StatusNotFound)
|
|
|
|
// get tasks
|
|
for _, task := range tasks {
|
|
T.WithAuth(e.GET("/tasks/" + task.Id.Hex())).
|
|
Expect().Status(http.StatusNotFound)
|
|
}
|
|
|
|
// spider stat
|
|
modelSpiderStatSvc := service.NewBaseService(interfaces.ModelIdSpiderStat)
|
|
spiderStatCount, err := modelSpiderStatSvc.Count(bson.M{
|
|
"_id": oid,
|
|
})
|
|
require.Nil(t, err)
|
|
require.Zero(t, spiderStatCount)
|
|
|
|
// task stats
|
|
modelTaskStatSvc := service.NewBaseService(interfaces.ModelIdTaskStat)
|
|
taskStatCount, err := modelTaskStatSvc.Count(bson.M{
|
|
"_id": bson.M{
|
|
"$in": taskIds,
|
|
},
|
|
})
|
|
require.Nil(t, err)
|
|
require.Zero(t, taskStatCount)
|
|
}
|
|
|
|
func TestSpiderController_DeleteList(t *testing.T) {
|
|
T.Setup(t)
|
|
e := T.NewExpect(t)
|
|
|
|
spiders := []models.Spider{
|
|
{
|
|
Id: primitive.NewObjectID(),
|
|
Name: "test spider 1",
|
|
Description: "this is a test spider 1",
|
|
ColName: "test col name 1",
|
|
},
|
|
{
|
|
Id: primitive.NewObjectID(),
|
|
Name: "test spider 2",
|
|
Description: "this is a test spider 2",
|
|
ColName: "test col name 2",
|
|
},
|
|
}
|
|
|
|
// add spiders
|
|
for _, spider := range spiders {
|
|
T.WithAuth(e.POST("/spiders")).
|
|
WithJSON(spider).
|
|
Expect().Status(http.StatusOK)
|
|
}
|
|
|
|
var spiderIds []primitive.ObjectID
|
|
var taskIds []primitive.ObjectID
|
|
for _, spider := range spiders {
|
|
// task id
|
|
taskId := primitive.NewObjectID()
|
|
|
|
// add task
|
|
err := delegate.NewModelDelegate(&models.Task{
|
|
Id: taskId,
|
|
SpiderId: spider.Id,
|
|
}).Add()
|
|
require.Nil(t, err)
|
|
|
|
// add task stats
|
|
err = delegate.NewModelDelegate(&models.TaskStat{
|
|
Id: taskId,
|
|
}).Add()
|
|
require.Nil(t, err)
|
|
|
|
spiderIds = append(spiderIds, spider.Id)
|
|
taskIds = append(taskIds, taskId)
|
|
}
|
|
|
|
// delete spiders
|
|
T.WithAuth(e.DELETE("/spiders")).
|
|
WithJSON(entity.BatchRequestPayload{
|
|
Ids: spiderIds,
|
|
}).Expect().Status(http.StatusOK)
|
|
|
|
// get spiders
|
|
for _, spider := range spiders {
|
|
// get
|
|
T.WithAuth(e.GET("/spiders/" + spider.Id.Hex())).
|
|
Expect().Status(http.StatusNotFound)
|
|
}
|
|
|
|
// get tasks
|
|
for _, taskId := range taskIds {
|
|
T.WithAuth(e.GET("/tasks/" + taskId.Hex())).
|
|
Expect().Status(http.StatusNotFound)
|
|
}
|
|
|
|
// spider stat
|
|
modelSpiderStatSvc := service.NewBaseService(interfaces.ModelIdSpiderStat)
|
|
spiderStatCount, err := modelSpiderStatSvc.Count(bson.M{
|
|
"_id": bson.M{
|
|
"$in": spiderIds,
|
|
},
|
|
})
|
|
require.Nil(t, err)
|
|
require.Zero(t, spiderStatCount)
|
|
|
|
// task stats
|
|
modelTaskStatSvc := service.NewBaseService(interfaces.ModelIdTaskStat)
|
|
taskStatCount, err := modelTaskStatSvc.Count(bson.M{
|
|
"_id": bson.M{
|
|
"$in": taskIds,
|
|
},
|
|
})
|
|
require.Nil(t, err)
|
|
require.Zero(t, taskStatCount)
|
|
}
|