code.gitea.io/gitea@v1.19.3/modules/context/api_test.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package context 5 6 import ( 7 "net/url" 8 "strconv" 9 "testing" 10 11 "code.gitea.io/gitea/modules/setting" 12 13 "github.com/stretchr/testify/assert" 14 ) 15 16 func TestGenAPILinks(t *testing.T) { 17 setting.AppURL = "http://localhost:3000/" 18 kases := map[string][]string{ 19 "api/v1/repos/jerrykan/example-repo/issues?state=all": { 20 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next"`, 21 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`, 22 }, 23 "api/v1/repos/jerrykan/example-repo/issues?state=all&page=1": { 24 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next"`, 25 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`, 26 }, 27 "api/v1/repos/jerrykan/example-repo/issues?state=all&page=2": { 28 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=3&state=all>; rel="next"`, 29 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`, 30 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first"`, 31 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="prev"`, 32 }, 33 "api/v1/repos/jerrykan/example-repo/issues?state=all&page=5": { 34 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first"`, 35 `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=4&state=all>; rel="prev"`, 36 }, 37 } 38 39 for req, response := range kases { 40 u, err := url.Parse(setting.AppURL + req) 41 assert.NoError(t, err) 42 43 p := u.Query().Get("page") 44 curPage, _ := strconv.Atoi(p) 45 46 links := genAPILinks(u, 100, 20, curPage) 47 48 assert.EqualValues(t, links, response) 49 } 50 }