diff options
Diffstat (limited to 'modules/repofiles/diff_test.go')
-rw-r--r-- | modules/repofiles/diff_test.go | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/modules/repofiles/diff_test.go b/modules/repofiles/diff_test.go new file mode 100644 index 0000000000..bc7d4ebad6 --- /dev/null +++ b/modules/repofiles/diff_test.go @@ -0,0 +1,143 @@ +// Copyright 2019 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 repofiles + +import ( + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/test" + + "github.com/stretchr/testify/assert" +) + +func TestGetDiffPreview(t *testing.T) { + models.PrepareTestEnv(t) + ctx := test.MockContext(t, "user2/repo1") + ctx.SetParams(":id", "1") + test.LoadRepo(t, ctx, 1) + test.LoadRepoCommit(t, ctx) + test.LoadUser(t, ctx, 2) + test.LoadGitRepo(t, ctx) + branch := ctx.Repo.Repository.DefaultBranch + treePath := "README.md" + content := "# repo1\n\nDescription for repo1\nthis is a new line" + + expectedDiff := &models.Diff{ + TotalAddition: 2, + TotalDeletion: 1, + Files: []*models.DiffFile{ + { + Name: "README.md", + OldName: "README.md", + Index: 1, + Addition: 2, + Deletion: 1, + Type: 2, + IsCreated: false, + IsDeleted: false, + IsBin: false, + IsLFSFile: false, + IsRenamed: false, + IsSubmodule: false, + Sections: []*models.DiffSection{ + { + Name: "", + Lines: []*models.DiffLine{ + { + LeftIdx: 0, + RightIdx: 0, + Type: 4, + Content: "@@ -1,3 +1,4 @@", + Comments: nil, + }, + { + LeftIdx: 1, + RightIdx: 1, + Type: 1, + Content: " # repo1", + Comments: nil, + }, + { + LeftIdx: 2, + RightIdx: 2, + Type: 1, + Content: " ", + Comments: nil, + }, + { + LeftIdx: 3, + RightIdx: 0, + Type: 3, + Content: "-Description for repo1", + Comments: nil, + }, + { + LeftIdx: 0, + RightIdx: 3, + Type: 2, + Content: "+Description for repo1", + Comments: nil, + }, + { + LeftIdx: 0, + RightIdx: 4, + Type: 2, + Content: "+this is a new line", + Comments: nil, + }, + }, + }, + }, + IsIncomplete: false, + }, + }, + IsIncomplete: false, + } + + t.Run("with given branch", func(t *testing.T) { + diff, err := GetDiffPreview(ctx.Repo.Repository, branch, treePath, content) + assert.Nil(t, err) + assert.EqualValues(t, expectedDiff, diff) + }) + + t.Run("empty branch, same results", func(t *testing.T) { + diff, err := GetDiffPreview(ctx.Repo.Repository, "", treePath, content) + assert.Nil(t, err) + assert.EqualValues(t, expectedDiff, diff) + }) +} + +func TestGetDiffPreviewErrors(t *testing.T) { + models.PrepareTestEnv(t) + ctx := test.MockContext(t, "user2/repo1") + ctx.SetParams(":id", "1") + test.LoadRepo(t, ctx, 1) + test.LoadRepoCommit(t, ctx) + test.LoadUser(t, ctx, 2) + test.LoadGitRepo(t, ctx) + branch := ctx.Repo.Repository.DefaultBranch + treePath := "README.md" + content := "# repo1\n\nDescription for repo1\nthis is a new line" + + t.Run("empty repo", func(t *testing.T) { + diff, err := GetDiffPreview(&models.Repository{}, branch, treePath, content) + assert.Nil(t, diff) + assert.EqualError(t, err, "repository does not exist [id: 0, uid: 0, owner_name: , name: ]") + }) + + t.Run("bad branch", func(t *testing.T) { + badBranch := "bad_branch" + diff, err := GetDiffPreview(ctx.Repo.Repository, badBranch, treePath, content) + assert.Nil(t, diff) + assert.EqualError(t, err, "branch does not exist [name: "+badBranch+"]") + }) + + t.Run("empty treePath", func(t *testing.T) { + diff, err := GetDiffPreview(ctx.Repo.Repository, branch, "", content) + assert.Nil(t, diff) + assert.EqualError(t, err, "path is invalid [path: ]") + }) +} |