1// Copyright 2017 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
5package integrations
6
7import (
8	"net/http"
9	"net/url"
10	"strings"
11	"testing"
12
13	repo_model "code.gitea.io/gitea/models/repo"
14	"code.gitea.io/gitea/modules/test"
15
16	"github.com/stretchr/testify/assert"
17)
18
19func TestRepoActivity(t *testing.T) {
20	onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
21
22		session := loginUser(t, "user1")
23
24		// Create PRs (1 merged & 2 proposed)
25		testRepoFork(t, session, "user2", "repo1", "user1", "repo1")
26		testEditFile(t, session, "user1", "repo1", "master", "README.md", "Hello, World (Edited)\n")
27		resp := testPullCreate(t, session, "user1", "repo1", "master", "This is a pull title")
28		elem := strings.Split(test.RedirectURL(resp), "/")
29		assert.EqualValues(t, "pulls", elem[3])
30		testPullMerge(t, session, elem[1], elem[2], elem[4], repo_model.MergeStyleMerge)
31
32		testEditFileToNewBranch(t, session, "user1", "repo1", "master", "feat/better_readme", "README.md", "Hello, World (Edited Again)\n")
33		testPullCreate(t, session, "user1", "repo1", "feat/better_readme", "This is a pull title")
34
35		testEditFileToNewBranch(t, session, "user1", "repo1", "master", "feat/much_better_readme", "README.md", "Hello, World (Edited More)\n")
36		testPullCreate(t, session, "user1", "repo1", "feat/much_better_readme", "This is a pull title")
37
38		// Create issues (3 new issues)
39		testNewIssue(t, session, "user2", "repo1", "Issue 1", "Description 1")
40		testNewIssue(t, session, "user2", "repo1", "Issue 2", "Description 2")
41		testNewIssue(t, session, "user2", "repo1", "Issue 3", "Description 3")
42
43		// Create releases (1 new release)
44		createNewRelease(t, session, "/user2/repo1", "v1.0.0", "v1.0.0", false, false)
45
46		// Open Activity page and check stats
47		req := NewRequest(t, "GET", "/user2/repo1/activity")
48		resp = session.MakeRequest(t, req, http.StatusOK)
49		htmlDoc := NewHTMLParser(t, resp.Body)
50
51		// Should be 1 published release
52		list := htmlDoc.doc.Find("#published-releases").Next().Find("p.desc")
53		assert.Len(t, list.Nodes, 1)
54
55		// Should be 1 merged pull request
56		list = htmlDoc.doc.Find("#merged-pull-requests").Next().Find("p.desc")
57		assert.Len(t, list.Nodes, 1)
58
59		// Should be 2 proposed pull requests
60		list = htmlDoc.doc.Find("#proposed-pull-requests").Next().Find("p.desc")
61		assert.Len(t, list.Nodes, 2)
62
63		// Should be 3 new issues
64		list = htmlDoc.doc.Find("#new-issues").Next().Find("p.desc")
65		assert.Len(t, list.Nodes, 3)
66	})
67}
68