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  }