package serializer import ( "testing" model "github.com/cloudreve/Cloudreve/v3/models" "github.com/cloudreve/Cloudreve/v3/pkg/aria2/rpc" "github.com/cloudreve/Cloudreve/v3/pkg/cache" "github.com/jinzhu/gorm" "github.com/stretchr/testify/assert" ) func TestBuildFinishedListResponse(t *testing.T) { asserts := assert.New(t) tasks := []model.Download{ { StatusInfo: rpc.StatusInfo{ Files: []rpc.FileInfo{ { Path: "/file/name.txt", }, }, }, Task: &model.Task{ Model: gorm.Model{}, Error: "error", }, }, { StatusInfo: rpc.StatusInfo{ Files: []rpc.FileInfo{ { Path: "/file/name1.txt", }, { Path: "/file/name2.txt", }, }, }, }, } tasks[1].StatusInfo.BitTorrent.Info.Name = "name.txt" res := BuildFinishedListResponse(tasks).Data.([]FinishedListResponse) asserts.Len(res, 2) asserts.Equal("name.txt", res[1].Name) asserts.Equal("name.txt", res[0].Name) asserts.Equal("name.txt", res[0].Files[0].Path) asserts.Equal("name1.txt", res[1].Files[0].Path) asserts.Equal("name2.txt", res[1].Files[1].Path) asserts.EqualValues(0, res[0].TaskStatus) asserts.Equal("error", res[0].TaskError) } func TestBuildDownloadingResponse(t *testing.T) { asserts := assert.New(t) cache.Set("setting_aria2_interval", "10", 0) tasks := []model.Download{ { StatusInfo: rpc.StatusInfo{ Files: []rpc.FileInfo{ { Path: "/file/name.txt", }, }, }, Task: &model.Task{ Model: gorm.Model{}, Error: "error", }, }, { StatusInfo: rpc.StatusInfo{ Files: []rpc.FileInfo{ { Path: "/file/name1.txt", }, { Path: "/file/name2.txt", }, }, }, }, } tasks[1].StatusInfo.BitTorrent.Info.Name = "name.txt" tasks[1].ID = 1 res := BuildDownloadingResponse(tasks, map[uint]int{1: 5}).Data.([]DownloadListResponse) asserts.Len(res, 2) asserts.Equal("name1.txt", res[1].Name) asserts.Equal(5, res[1].UpdateInterval) asserts.Equal("name.txt", res[0].Name) asserts.Equal("name.txt", res[0].Info.Files[0].Path) asserts.Equal("name1.txt", res[1].Info.Files[0].Path) asserts.Equal("name2.txt", res[1].Info.Files[1].Path) }