gitea源码

treelist_test.go 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package repo
  4. import (
  5. "html/template"
  6. "testing"
  7. pull_model "code.gitea.io/gitea/models/pull"
  8. "code.gitea.io/gitea/modules/fileicon"
  9. "code.gitea.io/gitea/modules/git"
  10. "code.gitea.io/gitea/services/gitdiff"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestTransformDiffTreeForWeb(t *testing.T) {
  14. renderedIconPool := fileicon.NewRenderedIconPool()
  15. ret := transformDiffTreeForWeb(renderedIconPool, &gitdiff.DiffTree{Files: []*gitdiff.DiffTreeRecord{
  16. {
  17. Status: "changed",
  18. HeadPath: "dir-a/dir-a-x/file-deep",
  19. HeadMode: git.EntryModeBlob,
  20. },
  21. {
  22. Status: "added",
  23. HeadPath: "file1",
  24. HeadMode: git.EntryModeBlob,
  25. },
  26. }}, map[string]pull_model.ViewedState{
  27. "dir-a/dir-a-x/file-deep": pull_model.Viewed,
  28. })
  29. mockIconForFile := func(id string) template.HTML {
  30. return template.HTML(`<svg class="svg git-entry-icon octicon-file" width="16" height="16" aria-hidden="true"><use xlink:href="#` + id + `"></use></svg>`)
  31. }
  32. assert.Equal(t, WebDiffFileTree{
  33. TreeRoot: WebDiffFileItem{
  34. Children: []*WebDiffFileItem{
  35. {
  36. EntryMode: "tree",
  37. DisplayName: "dir-a/dir-a-x",
  38. FullName: "dir-a/dir-a-x",
  39. Children: []*WebDiffFileItem{
  40. {
  41. EntryMode: "",
  42. DisplayName: "file-deep",
  43. FullName: "dir-a/dir-a-x/file-deep",
  44. NameHash: "4acf7eef1c943a09e9f754e93ff190db8583236b",
  45. DiffStatus: "changed",
  46. IsViewed: true,
  47. FileIcon: mockIconForFile(`svg-mfi-file`),
  48. },
  49. },
  50. },
  51. {
  52. EntryMode: "",
  53. DisplayName: "file1",
  54. FullName: "file1",
  55. NameHash: "60b27f004e454aca81b0480209cce5081ec52390",
  56. DiffStatus: "added",
  57. FileIcon: mockIconForFile(`svg-mfi-file`),
  58. },
  59. },
  60. },
  61. }, ret)
  62. }