code.gitea.io/gitea@v1.22.3/services/repository/contributors_graph_test.go (about) 1 // Copyright 2024 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package repository 5 6 import ( 7 "slices" 8 "testing" 9 10 "code.gitea.io/gitea/models/db" 11 repo_model "code.gitea.io/gitea/models/repo" 12 "code.gitea.io/gitea/models/unittest" 13 "code.gitea.io/gitea/modules/cache" 14 "code.gitea.io/gitea/modules/setting" 15 16 "github.com/stretchr/testify/assert" 17 ) 18 19 func TestRepository_ContributorsGraph(t *testing.T) { 20 assert.NoError(t, unittest.PrepareTestDatabase()) 21 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2}) 22 assert.NoError(t, repo.LoadOwner(db.DefaultContext)) 23 mockCache, err := cache.NewStringCache(setting.Cache{}) 24 assert.NoError(t, err) 25 26 generateContributorStats(nil, mockCache, "key", repo, "404ref") 27 var data map[string]*ContributorData 28 _, getErr := mockCache.GetJSON("key", &data) 29 assert.NotNil(t, getErr) 30 assert.ErrorContains(t, getErr.ToError(), "object does not exist") 31 32 generateContributorStats(nil, mockCache, "key2", repo, "master") 33 exist, _ := mockCache.GetJSON("key2", &data) 34 assert.True(t, exist) 35 var keys []string 36 for k := range data { 37 keys = append(keys, k) 38 } 39 slices.Sort(keys) 40 assert.EqualValues(t, []string{ 41 "ethantkoenig@gmail.com", 42 "jimmy.praet@telenet.be", 43 "jon@allspice.io", 44 "total", // generated summary 45 }, keys) 46 47 assert.EqualValues(t, &ContributorData{ 48 Name: "Ethan Koenig", 49 AvatarLink: "https://secure.gravatar.com/avatar/b42fb195faa8c61b8d88abfefe30e9e3?d=identicon", 50 TotalCommits: 1, 51 Weeks: map[int64]*WeekData{ 52 1511654400000: { 53 Week: 1511654400000, // sunday 2017-11-26 54 Additions: 3, 55 Deletions: 0, 56 Commits: 1, 57 }, 58 }, 59 }, data["ethantkoenig@gmail.com"]) 60 assert.EqualValues(t, &ContributorData{ 61 Name: "Total", 62 AvatarLink: "", 63 TotalCommits: 3, 64 Weeks: map[int64]*WeekData{ 65 1511654400000: { 66 Week: 1511654400000, // sunday 2017-11-26 (2017-11-26 20:31:18 -0800) 67 Additions: 3, 68 Deletions: 0, 69 Commits: 1, 70 }, 71 1607817600000: { 72 Week: 1607817600000, // sunday 2020-12-13 (2020-12-15 15:23:11 -0500) 73 Additions: 10, 74 Deletions: 0, 75 Commits: 1, 76 }, 77 1624752000000: { 78 Week: 1624752000000, // sunday 2021-06-27 (2021-06-29 21:54:09 +0200) 79 Additions: 2, 80 Deletions: 0, 81 Commits: 1, 82 }, 83 }, 84 }, data["total"]) 85 }