本站源代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 line
1.9KB

  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package context
  5. import (
  6. "net/url"
  7. "strconv"
  8. "testing"
  9. "code.gitea.io/gitea/modules/setting"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestGenAPILinks(t *testing.T) {
  13. setting.AppURL = "http://localhost:3000/"
  14. var kases = map[string][]string{
  15. "api/v1/repos/jerrykan/example-repo/issues?state=all": {
  16. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=2&state=all>; rel="next"`,
  17. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`,
  18. },
  19. "api/v1/repos/jerrykan/example-repo/issues?state=all&page=1": {
  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=2": {
  24. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=3&state=all>; rel="next"`,
  25. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=5&state=all>; rel="last"`,
  26. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="first"`,
  27. `<http://localhost:3000/api/v1/repos/jerrykan/example-repo/issues?page=1&state=all>; rel="prev"`,
  28. },
  29. "api/v1/repos/jerrykan/example-repo/issues?state=all&page=5": {
  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=4&state=all>; rel="prev"`,
  32. },
  33. }
  34. for req, response := range kases {
  35. u, err := url.Parse(setting.AppURL + req)
  36. assert.NoError(t, err)
  37. p := u.Query().Get("page")
  38. curPage, _ := strconv.Atoi(p)
  39. links := genAPILinks(u, 100, 20, curPage)
  40. assert.EqualValues(t, links, response)
  41. }
  42. }
上海开阖软件有限公司 沪ICP备12045867号-1