2019-06-26 11:51:32 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-06-26 11:51:32 +03:00
package context
import (
"net/url"
"strconv"
"testing"
"code.gitea.io/gitea/modules/setting"
"github.com/stretchr/testify/assert"
)
func TestGenAPILinks ( t * testing . T ) {
setting . AppURL = "http://localhost:3000/"
2022-01-20 20:46:10 +03:00
kases := map [ string ] [ ] string {
2019-06-26 11:51:32 +03:00
"api/v1/repos/jerrykan/example-repo/issues?state=all" : {
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last" ` ,
} ,
"api/v1/repos/jerrykan/example-repo/issues?state=all&page=1" : {
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last" ` ,
} ,
"api/v1/repos/jerrykan/example-repo/issues?state=all&page=2" : {
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=3&state=all>; rel="next" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="prev" ` ,
} ,
"api/v1/repos/jerrykan/example-repo/issues?state=all&page=5" : {
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first" ` ,
` <http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=4&state=all>; rel="prev" ` ,
} ,
}
for req , response := range kases {
u , err := url . Parse ( setting . AppURL + req )
assert . NoError ( t , err )
p := u . Query ( ) . Get ( "page" )
curPage , _ := strconv . Atoi ( p )
links := genAPILinks ( u , 100 , 20 , curPage )
assert . EqualValues ( t , links , response )
}
}