Skip to content

Commit 77617da

Browse files
committed
Add PR branch deletion integration test
1 parent bede0e2 commit 77617da

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

integrations/editor_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,51 @@ func testEditFile(t *testing.T, session *TestSession, user, repo, branch, filePa
126126
return resp
127127
}
128128

129+
func testEditFileToNewBranch(t *testing.T, session *TestSession, user, repo, branch, targetBranch, filePath string) *TestResponse {
130+
131+
newContent := "Hello, World (Edited)\n"
132+
133+
// Get to the 'edit this file' page
134+
req := NewRequest(t, "GET", path.Join(user, repo, "_edit", branch, filePath))
135+
resp := session.MakeRequest(t, req)
136+
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
137+
138+
htmlDoc := NewHTMLParser(t, resp.Body)
139+
lastCommit := htmlDoc.GetInputValueByName("last_commit")
140+
assert.NotEmpty(t, lastCommit)
141+
142+
// Submit the edits
143+
req = NewRequestWithValues(t, "POST", path.Join(user, repo, "_edit", branch, filePath),
144+
map[string]string{
145+
"_csrf": htmlDoc.GetCSRF(),
146+
"last_commit": lastCommit,
147+
"tree_path": filePath,
148+
"content": newContent,
149+
"commit_choice": "commit-to-new-branch",
150+
"new_branch_name": targetBranch,
151+
},
152+
)
153+
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
154+
resp = session.MakeRequest(t, req)
155+
assert.EqualValues(t, http.StatusFound, resp.HeaderCode)
156+
157+
// Verify the change
158+
req = NewRequest(t, "GET", path.Join(user, repo, "raw", targetBranch, filePath))
159+
resp = session.MakeRequest(t, req)
160+
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
161+
assert.EqualValues(t, newContent, string(resp.Body))
162+
163+
return resp
164+
}
165+
129166
func TestEditFile(t *testing.T) {
130167
prepareTestEnv(t)
131168
session := loginUser(t, "user2")
132169
testEditFile(t, session, "user2", "repo1", "master", "README.md")
133170
}
171+
172+
func TestEditFileToNewBranch(t *testing.T) {
173+
prepareTestEnv(t)
174+
session := loginUser(t, "user2")
175+
testEditFileToNewBranch(t, session, "user2", "repo1", "master", "feature/test", "README.md")
176+
}

integrations/pull_create_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package integrations
77
import (
88
"net/http"
99
"path"
10+
"strings"
1011
"testing"
1112

1213
"github.com/stretchr/testify/assert"
@@ -21,6 +22,9 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo, branch strin
2122
htmlDoc := NewHTMLParser(t, resp.Body)
2223
link, exists := htmlDoc.doc.Find("button.ui.green.small.button").Parent().Attr("href")
2324
assert.True(t, exists, "The template has changed")
25+
if branch != "master" {
26+
link = strings.Replace(link, ":master", ":"+branch, 1)
27+
}
2428

2529
req = NewRequest(t, "GET", link)
2630
resp = session.MakeRequest(t, req)

integrations/pull_merge_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,25 @@ func testPullMerge(t *testing.T, session *TestSession, user, repo, pullnum strin
3232
return resp
3333
}
3434

35+
func testPullCleanUp(t *testing.T, session *TestSession, user, repo, pullnum string) *TestResponse {
36+
req := NewRequest(t, "GET", path.Join(user, repo, "pulls", pullnum))
37+
resp := session.MakeRequest(t, req)
38+
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
39+
40+
// Click the little green button to craete a pull
41+
htmlDoc := NewHTMLParser(t, resp.Body)
42+
link, exists := htmlDoc.doc.Find(".comments .merge .delete-button").Attr("data-url")
43+
assert.True(t, exists, "The template has changed")
44+
req = NewRequestWithValues(t, "POST", link, map[string]string{
45+
"_csrf": htmlDoc.GetCSRF(),
46+
})
47+
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
48+
resp = session.MakeRequest(t, req)
49+
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
50+
51+
return resp
52+
}
53+
3554
func TestPullMerge(t *testing.T) {
3655
prepareTestEnv(t)
3756
session := loginUser(t, "user1")
@@ -46,3 +65,40 @@ func TestPullMerge(t *testing.T) {
4665
assert.EqualValues(t, "pulls", elem[3])
4766
testPullMerge(t, session, elem[1], elem[2], elem[4])
4867
}
68+
69+
func TestPullCleanUpAfterMerge(t *testing.T) {
70+
prepareTestEnv(t)
71+
session := loginUser(t, "user1")
72+
testRepoFork(t, session)
73+
testEditFileToNewBranch(t, session, "user1", "repo1", "master", "feature/test", "README.md")
74+
75+
resp := testPullCreate(t, session, "user1", "repo1", "feature/test")
76+
redirectedURL := resp.Headers["Location"]
77+
assert.NotEmpty(t, redirectedURL, "Redirected URL is not found")
78+
79+
elem := strings.Split(redirectedURL[0], "/")
80+
assert.EqualValues(t, "pulls", elem[3])
81+
testPullMerge(t, session, elem[1], elem[2], elem[4])
82+
83+
// Check PR branch deletion
84+
resp = testPullCleanUp(t, session, elem[1], elem[2], elem[4])
85+
respJSON := struct {
86+
Redirect string
87+
}{}
88+
DecodeJSON(t, resp, &respJSON)
89+
90+
assert.NotEmpty(t, respJSON.Redirect, "Redirected URL is not found")
91+
92+
elem = strings.Split(respJSON.Redirect, "/")
93+
assert.EqualValues(t, "pulls", elem[3])
94+
95+
// Check branch deletion result
96+
req := NewRequest(t, "GET", respJSON.Redirect)
97+
resp = session.MakeRequest(t, req)
98+
assert.EqualValues(t, http.StatusOK, resp.HeaderCode)
99+
100+
htmlDoc := NewHTMLParser(t, resp.Body)
101+
resultMsg := htmlDoc.doc.Find(".ui.message>p").Text()
102+
103+
assert.EqualValues(t, "user1/feature/test has been deleted.", resultMsg)
104+
}

0 commit comments

Comments
 (0)