loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'Distinguish between new tags, releases and pre-releases on activity page' (#4782) from mahlzahn/forgejo:repo_activity_releases into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4782
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>

Gusted b0a104d3 471265c4

+43 -9
+3 -1
options/locale/locale_en-US.ini
··· 2119 2119 activity.title.releases_1 = %d release 2120 2120 activity.title.releases_n = %d releases 2121 2121 activity.title.releases_published_by = %s published by %s 2122 - activity.published_release_label = Published 2122 + activity.published_release_label = Release 2123 + activity.published_prerelease_label = Pre-release 2124 + activity.published_tag_label = Tag 2123 2125 activity.no_git_activity = There has not been any commit activity in this period. 2124 2126 activity.git_stats_exclude_merges = Excluding merges, 2125 2127 activity.git_stats_author_1 = %d author
+12 -4
templates/repo/pulse.tmpl
··· 122 122 <div class="list"> 123 123 {{range .Activity.PublishedReleases}} 124 124 <p class="desc"> 125 - <span class="ui green label">{{ctx.Locale.Tr "repo.activity.published_release_label"}}</span> 126 - {{.TagName}} 127 - {{if not .IsTag}} 128 - <a class="title" href="{{$.RepoLink}}/src/{{.TagName | PathEscapeSegments}}">{{.Title | RenderEmoji $.Context | RenderCodeBlock}}</a> 125 + {{if .IsTag}} 126 + <span class="ui yellow label">{{ctx.Locale.Tr "repo.activity.published_tag_label"}}</span> 127 + {{else if .IsPrerelease}} 128 + <span class="ui orange label">{{ctx.Locale.Tr "repo.activity.published_prerelease_label"}}</span> 129 + {{else}} 130 + <span class="ui green label">{{ctx.Locale.Tr "repo.activity.published_release_label"}}</span> 131 + {{end}} 132 + {{if .IsTag}} 133 + <a href="{{$.RepoLink}}/src/{{.TagName | PathEscapeSegments}}">{{.TagName}}</a> 134 + {{else}} 135 + {{.TagName}} 136 + <a class="title" href="{{$.RepoLink}}/releases/tag/{{.TagName | PathEscapeSegments}}">{{.Title | RenderEmoji $.Context | RenderCodeBlock}}</a> 129 137 {{end}} 130 138 {{TimeSinceUnix .CreatedUnix ctx.Locale}} 131 139 </p>
+28 -4
tests/integration/repo_activity_test.go
··· 7 7 "fmt" 8 8 "net/http" 9 9 "net/url" 10 + "sort" 10 11 "strings" 11 12 "testing" 12 13 14 + auth_model "code.gitea.io/gitea/models/auth" 13 15 "code.gitea.io/gitea/models/db" 14 16 repo_model "code.gitea.io/gitea/models/repo" 15 17 unit_model "code.gitea.io/gitea/models/unit" ··· 19 21 repo_service "code.gitea.io/gitea/services/repository" 20 22 "code.gitea.io/gitea/tests" 21 23 24 + "github.com/PuerkitoBio/goquery" 22 25 "github.com/stretchr/testify/assert" 23 26 "github.com/stretchr/testify/require" 24 27 ) ··· 46 49 testNewIssue(t, session, "user2", "repo1", "Issue 2", "Description 2") 47 50 testNewIssue(t, session, "user2", "repo1", "Issue 3", "Description 3") 48 51 49 - // Create releases (1 new release) 50 - createNewRelease(t, session, "/user2/repo1", "v1.0.0", "v1.0.0", false, false) 52 + // Create releases (1 release, 1 pre-release, 1 release-draft, 1 tag) 53 + createNewRelease(t, session, "/user2/repo1", "v1.0.0", "v1 Release", false, false) 54 + createNewRelease(t, session, "/user2/repo1", "v0.1.0", "v0.1 Pre-release", true, false) 55 + createNewRelease(t, session, "/user2/repo1", "v2.0.0", "v2 Release-Draft", false, true) 56 + token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) 57 + createNewTagUsingAPI(t, token, "user2", "repo1", "v3.0.0", "master", "Tag message") 51 58 52 59 // Open Activity page and check stats 53 60 req := NewRequest(t, "GET", "/user2/repo1/activity") 54 61 resp = session.MakeRequest(t, req, http.StatusOK) 55 62 htmlDoc := NewHTMLParser(t, resp.Body) 56 63 57 - // Should be 1 published release 64 + // Should be 3 published releases 58 65 list := htmlDoc.doc.Find("#published-releases").Next().Find("p.desc") 59 - assert.Len(t, list.Nodes, 1) 66 + assert.Len(t, list.Nodes, 3) 67 + var labels []string 68 + var titles []string 69 + list.Each(func(i int, s *goquery.Selection) { 70 + labels = append(labels, s.Find(".label").Text()) 71 + titles = append(titles, s.Find(".title").Text()) 72 + }) 73 + sort.Strings(labels) 74 + sort.Strings(titles) 75 + assert.Equal(t, []string{"Pre-release", "Release", "Tag"}, labels) 76 + assert.Equal(t, []string{"", "v0.1 Pre-release", "v1 Release"}, titles) 60 77 61 78 // Should be 1 merged pull request 62 79 list = htmlDoc.doc.Find("#merged-pull-requests").Next().Find("p.desc") 63 80 assert.Len(t, list.Nodes, 1) 81 + assert.Equal(t, "Merged", list.Find(".label").Text()) 64 82 65 83 // Should be 2 proposed pull requests 66 84 list = htmlDoc.doc.Find("#proposed-pull-requests").Next().Find("p.desc") 67 85 assert.Len(t, list.Nodes, 2) 86 + assert.Equal(t, "Proposed", list.Find(".label").First().Text()) 87 + 88 + // Should be 0 closed issues 89 + list = htmlDoc.doc.Find("#closed-issues").Next().Find("p.desc") 90 + assert.Empty(t, list.Nodes) 68 91 69 92 // Should be 3 new issues 70 93 list = htmlDoc.doc.Find("#new-issues").Next().Find("p.desc") 71 94 assert.Len(t, list.Nodes, 3) 95 + assert.Equal(t, "Opened", list.Find(".label").First().Text()) 72 96 }) 73 97 } 74 98