Fix the Pipeline runs paging issues caused by BlueOcean plugin

Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
This commit is contained in:
rick
2021-03-19 09:14:06 +08:00
parent ac3e83b4eb
commit 8d8f685dc3
3 changed files with 179 additions and 16 deletions

View File

@@ -0,0 +1,106 @@
package jenkins
import (
"fmt"
"github.com/stretchr/testify/assert"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"net/url"
"strconv"
"testing"
)
func TestResetPaging(t *testing.T) {
table := []struct {
path string
rawQuery string
start int
limit int
hasErr bool
message string
}{{
start: 0,
limit: 10,
hasErr: false,
message: "without query, should no errors",
}, {
path: "/fake/path",
rawQuery: "?start=1&limit1",
start: 0,
limit: 10,
hasErr: false,
message: "without a query",
}, {
path: "/fake/path",
rawQuery: "?start=1&limit1",
start: 3,
limit: 13,
hasErr: false,
message: "without a query",
}}
for index, item := range table {
pip := &Pipeline{
Path: item.path,
HttpParameters: &devops.HttpParameters{
Url: &url.URL{
Path: item.path,
RawQuery: item.rawQuery,
},
},
}
resultPath, err := pip.resetPaging(item.start, item.limit)
if item.hasErr {
assert.NotNil(t, err, printTestMessage(index, item.message))
} else {
assert.Nil(t, err, printTestMessage(index, item.message))
assert.Equal(t, item.path, resultPath.Path, printTestMessage(index, item.message))
assert.Equal(t, strconv.Itoa(item.start), pip.HttpParameters.Url.Query().Get("start"),
printTestMessage(index, item.message))
assert.Equal(t, strconv.Itoa(item.limit), pip.HttpParameters.Url.Query().Get("limit"),
printTestMessage(index, item.message))
}
}
}
func TestParsePaging(t *testing.T) {
table := []struct {
targetUrl string
start int
limit int
message string
}{{
targetUrl: "http://localhost?start=0&limit=0",
start: 0,
limit: 0,
message: "should be success",
}, {
targetUrl: "http://localhost?start=1&limit=10",
start: 1,
limit: 10,
message: "should be success",
}, {
targetUrl: "http://localhost?start=5&limit=55",
start: 5,
limit: 55,
message: "should be success",
}}
for index, item := range table {
pipUrl, _ := url.Parse(item.targetUrl)
pip := &Pipeline{
HttpParameters: &devops.HttpParameters{
Url: pipUrl,
},
}
resultStart, resultLimit := pip.parsePaging()
assert.Equal(t, item.start, resultStart, printTestMessage(index, item.message))
assert.Equal(t, item.limit, resultLimit, printTestMessage(index, item.message))
}
}
func printTestMessage(index int, message string) string {
return fmt.Sprintf("index: %d, message: %s", index, message)
}