test: coverage for /repos/{owner}/{repo}/issues?project=

Refs: https://codeberg.org/forgejo/forgejo/pulls/4215#issuecomment-2040651
This commit is contained in:
Twenty Panda 2024-06-23 19:57:07 +02:00
parent 299ef6e6db
commit b18ba810a5

View file

@ -18,6 +18,7 @@ import (
auth_model "code.gitea.io/gitea/models/auth" auth_model "code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues" issues_model "code.gitea.io/gitea/models/issues"
project_model "code.gitea.io/gitea/models/project"
repo_model "code.gitea.io/gitea/models/repo" repo_model "code.gitea.io/gitea/models/repo"
unit_model "code.gitea.io/gitea/models/unit" unit_model "code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/models/unittest"
@ -144,6 +145,57 @@ func TestViewIssuesKeyword(t *testing.T) {
}) })
} }
func TestViewIssuesSearchOptions(t *testing.T) {
defer tests.PrepareTestEnv(t)()
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
// there are two issues in repo1, both bound to a project. Add one
// that is not bound to any project.
_, issueNoProject := testIssueWithBean(t, "user2", 1, "Title", "Description")
t.Run("All issues", func(t *testing.T) {
req := NewRequestf(t, "GET", "%s/issues?state=all", repo.Link())
resp := MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
issuesSelection := getIssuesSelection(t, htmlDoc)
assert.EqualValues(t, 3, issuesSelection.Length())
})
t.Run("Issues with no project", func(t *testing.T) {
req := NewRequestf(t, "GET", "%s/issues?state=all&project=-1", repo.Link())
resp := MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
issuesSelection := getIssuesSelection(t, htmlDoc)
assert.EqualValues(t, 1, issuesSelection.Length())
issuesSelection.Each(func(_ int, selection *goquery.Selection) {
issue := getIssue(t, repo.ID, selection)
assert.Equal(t, issueNoProject.ID, issue.ID)
})
})
t.Run("Issues with a specific project", func(t *testing.T) {
project := unittest.AssertExistsAndLoadBean(t, &project_model.Project{ID: 1})
req := NewRequestf(t, "GET", "%s/issues?state=all&project=%d", repo.Link(), project.ID)
resp := MakeRequest(t, req, http.StatusOK)
htmlDoc := NewHTMLParser(t, resp.Body)
issuesSelection := getIssuesSelection(t, htmlDoc)
assert.EqualValues(t, 2, issuesSelection.Length())
found := map[int64]bool{
1: false,
5: false,
}
issuesSelection.Each(func(_ int, selection *goquery.Selection) {
issue := getIssue(t, repo.ID, selection)
found[issue.ID] = true
})
assert.EqualValues(t, 2, len(found))
assert.True(t, found[1])
assert.True(t, found[5])
})
}
func TestNoLoginViewIssue(t *testing.T) { func TestNoLoginViewIssue(t *testing.T) {
defer tests.PrepareTestEnv(t)() defer tests.PrepareTestEnv(t)()