diff options
author | Lauris BH <lauris@nix.lv> | 2017-05-07 17:40:31 +0300 |
---|---|---|
committer | Bo-Yi Wu <appleboy.tw@gmail.com> | 2017-05-07 22:40:31 +0800 |
commit | 79494047b062069fd8e692152d29773a22877d76 (patch) | |
tree | 59f8f66828e25ee9f9c13f2baf50494e5474bbcd /integrations/repo_commits_test.go | |
parent | c864ccf9b1414dfdae1fd271511853e058b9e7c9 (diff) | |
download | gitea-79494047b062069fd8e692152d29773a22877d76.tar.gz gitea-79494047b062069fd8e692152d29773a22877d76.zip |
Show commit status icon in commits table (#1688)
* Show commit status icon in commits table
* Add comments
* Fix icons
* Few more places where commit table is displayed
* Change integration test to use goquery for parsing html
* Add integration tests for commit table and status icons
* Fix status to return lates status correctly on all databases
* Rewrote lates commit status selects
Diffstat (limited to 'integrations/repo_commits_test.go')
-rw-r--r-- | integrations/repo_commits_test.go | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/integrations/repo_commits_test.go b/integrations/repo_commits_test.go new file mode 100644 index 0000000000..9be9b78e53 --- /dev/null +++ b/integrations/repo_commits_test.go @@ -0,0 +1,94 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package integrations + +import ( + "bytes" + "net/http" + "path" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRepoCommits(t *testing.T) { + prepareTestEnv(t) + + session := loginUser(t, "user2", "password") + + // Request repository commits page + req, err := http.NewRequest("GET", "/user2/repo1/commits/master", nil) + assert.NoError(t, err) + resp := session.MakeRequest(t, req) + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) + + doc, err := NewHtmlParser(resp.Body) + assert.NoError(t, err) + commitURL, exists := doc.doc.Find("#commits-table tbody tr td.sha a").Attr("href") + assert.True(t, exists) + assert.NotEmpty(t, commitURL) +} + +func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) { + prepareTestEnv(t) + + session := loginUser(t, "user2", "password") + + // Request repository commits page + req, err := http.NewRequest("GET", "/user2/repo1/commits/master", nil) + assert.NoError(t, err) + resp := session.MakeRequest(t, req) + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) + + doc, err := NewHtmlParser(resp.Body) + assert.NoError(t, err) + // Get first commit URL + commitURL, exists := doc.doc.Find("#commits-table tbody tr td.sha a").Attr("href") + assert.True(t, exists) + assert.NotEmpty(t, commitURL) + + // Call API to add status for commit + req, err = http.NewRequest("POST", "/api/v1/repos/user2/repo1/statuses/"+path.Base(commitURL), + bytes.NewBufferString("{\"state\":\""+state+"\", \"target_url\": \"http://test.ci/\", \"description\": \"\", \"context\": \"testci\"}")) + + assert.NoError(t, err) + req.Header.Add("Content-Type", "application/json") + resp = session.MakeRequest(t, req) + assert.EqualValues(t, http.StatusCreated, resp.HeaderCode) + + req, err = http.NewRequest("GET", "/user2/repo1/commits/master", nil) + assert.NoError(t, err) + resp = session.MakeRequest(t, req) + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) + + doc, err = NewHtmlParser(resp.Body) + assert.NoError(t, err) + // Check if commit status is displayed in message column + sel := doc.doc.Find("#commits-table tbody tr td.message i.commit-status") + assert.Equal(t, sel.Length(), 1) + for _, class := range classes { + assert.True(t, sel.HasClass(class)) + } +} + +func TestRepoCommitsWithStatusPending(t *testing.T) { + doTestRepoCommitWithStatus(t, "pending", "circle", "yellow") +} + +func TestRepoCommitsWithStatusSuccess(t *testing.T) { + doTestRepoCommitWithStatus(t, "success", "check", "green") +} + +func TestRepoCommitsWithStatusError(t *testing.T) { + doTestRepoCommitWithStatus(t, "error", "warning", "red") +} + +func TestRepoCommitsWithStatusFailure(t *testing.T) { + doTestRepoCommitWithStatus(t, "failure", "remove", "red") +} + +func TestRepoCommitsWithStatusWarning(t *testing.T) { + doTestRepoCommitWithStatus(t, "warning", "warning", "sign", "yellow") +} |