[BUG] Remember topic only in repo search

- Backport of #2489
- If the user is searching repositories with an specific topic, adding
any other filter option, such as showing unrelevant repositories or
using another sort Forgejo should remember that 'topic only' was set.
- Adds integration test.
- Resolves #2461

(cherry picked from commit b4360d504c)
This commit is contained in:
Gusted 2024-02-26 16:17:11 +01:00
parent da9473cd4d
commit 9955e38fa2
No known key found for this signature in database
GPG key ID: FD821B732837125F
2 changed files with 15 additions and 0 deletions

View file

@ -2,6 +2,7 @@
<form class="ui form ignore-dirty gt-f1"> <form class="ui form ignore-dirty gt-f1">
<input type="hidden" name="sort" value="{{$.SortType}}"> <input type="hidden" name="sort" value="{{$.SortType}}">
<input type="hidden" name="language" value="{{$.Language}}"> <input type="hidden" name="language" value="{{$.Language}}">
<input type="hidden" name="topic" value="{{$.TopicOnly}}">
<div class="ui fluid action input"> <div class="ui fluid action input">
{{template "shared/searchinput" dict "Value" .Keyword "AutoFocus" true}} {{template "shared/searchinput" dict "Value" .Keyword "AutoFocus" true}}
{{if .PageIsExploreRepositories}} {{if .PageIsExploreRepositories}}

View file

@ -8,6 +8,8 @@ import (
"testing" "testing"
"code.gitea.io/gitea/tests" "code.gitea.io/gitea/tests"
"github.com/stretchr/testify/assert"
) )
func TestExploreRepos(t *testing.T) { func TestExploreRepos(t *testing.T) {
@ -15,4 +17,16 @@ func TestExploreRepos(t *testing.T) {
req := NewRequest(t, "GET", "/explore/repos") req := NewRequest(t, "GET", "/explore/repos")
MakeRequest(t, req, http.StatusOK) MakeRequest(t, req, http.StatusOK)
t.Run("Persistent parameters", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
req := NewRequest(t, "GET", "/explore/repos?topic=1&language=Go&sort=moststars")
resp := MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
assert.EqualValues(t, "moststars", htmlDoc.Find("input[type='hidden'][name='sort']").AttrOr("value", "not found"))
assert.EqualValues(t, "Go", htmlDoc.Find("input[type='hidden'][name='language']").AttrOr("value", "not found"))
assert.EqualValues(t, "true", htmlDoc.Find("input[type='hidden'][name='topic']").AttrOr("value", "not found"))
})
} }