[BUG] Ensure all filters are persistent in issue filters
- Ensure that all filters are set in the issue filters links, thus becoming persistent. - Adds integration test - Resolves #4843
This commit is contained in:
parent
7faea490fc
commit
192177fc88
4 changed files with 365 additions and 35 deletions
|
@ -1047,3 +1047,333 @@ func TestFileHistoryPager(t *testing.T) {
|
|||
MakeRequest(t, req, http.StatusNotFound)
|
||||
})
|
||||
}
|
||||
|
||||
func TestRepoIssueFilterLinks(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
t.Run("No filters", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Keyword", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?q=search-on-this")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=search-on-this")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Fuzzy", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?fuzzy=true")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=true")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Sort", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?sort=oldest")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-sort a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=oldest")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Type", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?type=assigned")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-type a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=assigned")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("State", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?state=closed")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.issue-list-toolbar-left a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=closed")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Miilestone", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?milestone=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-milestone a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=1")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Milestone", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?milestone=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-milestone a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=1")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Project", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?project=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-project a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=1")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Assignee", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?assignee=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-assignee a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=1")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Poster", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?poster=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.list-header-poster a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=1")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Labels", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?labels=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']:not(.label-filter a)").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=1")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
|
||||
t.Run("Archived labels", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
req := NewRequest(t, "GET", "/user2/repo1/issues?archived=true")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
|
||||
called := false
|
||||
htmlDoc.Find("#issue-filters a[href^='?']").Each(func(_ int, s *goquery.Selection) {
|
||||
called = true
|
||||
href, _ := s.Attr("href")
|
||||
assert.Contains(t, href, "?q=&")
|
||||
assert.Contains(t, href, "&type=")
|
||||
assert.Contains(t, href, "&sort=")
|
||||
assert.Contains(t, href, "&state=")
|
||||
assert.Contains(t, href, "&labels=")
|
||||
assert.Contains(t, href, "&milestone=")
|
||||
assert.Contains(t, href, "&project=")
|
||||
assert.Contains(t, href, "&assignee=")
|
||||
assert.Contains(t, href, "&poster=")
|
||||
assert.Contains(t, href, "&fuzzy=")
|
||||
assert.Contains(t, href, "&archived=true")
|
||||
})
|
||||
assert.True(t, called)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue