@@ -12,8 +12,13 @@ import (
1212 "testing"
1313
1414 auth_model "code.gitea.io/gitea/models/auth"
15+ "code.gitea.io/gitea/models/db"
16+ git_model "code.gitea.io/gitea/models/git"
17+ repo_model "code.gitea.io/gitea/models/repo"
18+ "code.gitea.io/gitea/models/unittest"
1519 "code.gitea.io/gitea/modules/json"
1620 "code.gitea.io/gitea/modules/setting"
21+ "code.gitea.io/gitea/modules/structs"
1722 api "code.gitea.io/gitea/modules/structs"
1823 "code.gitea.io/gitea/tests"
1924
@@ -203,3 +208,74 @@ func TestRepoCommitsStatusMultiple(t *testing.T) {
203208 sel := doc .doc .Find ("#commits-table tbody tr td.message [data-tippy=\" commit-statuses\" ] .commit-status" )
204209 assert .Equal (t , 1 , sel .Length ())
205210}
211+
212+ // Test_GetLatestCommitStatusForPairs tests GetLatestCommitStatusForPairs with multiple databases in integration tests
213+ // But unit tests in CI will only test with sqlite
214+ func Test_GetLatestCommitStatusForPairs (t * testing.T ) {
215+ defer tests .PrepareTestEnv (t )()
216+
217+ repo1 := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
218+ repoStatuses , err := git_model .GetLatestCommitStatusForPairs (db .DefaultContext , []git_model.RepoSHA {
219+ {RepoID : repo1 .ID , SHA : "1234123412341234123412341234123412341234" },
220+ })
221+ assert .NoError (t , err )
222+ assert .Len (t , repoStatuses , 1 )
223+ assert .Len (t , repoStatuses [repo1 .ID ], 3 )
224+
225+ assert .EqualValues (t , 5 , repoStatuses [repo1 .ID ][0 ].Index )
226+ assert .EqualValues (t , structs .CommitStatusError , repoStatuses [repo1 .ID ][0 ].State )
227+ assert .EqualValues (t , "deploy/awesomeness" , repoStatuses [repo1 .ID ][0 ].Context )
228+ assert .EqualValues (t , "https://example.com/builds/" , repoStatuses [repo1 .ID ][0 ].TargetURL )
229+ assert .EqualValues (t , "My awesome deploy service" , repoStatuses [repo1 .ID ][0 ].Description )
230+ assert .EqualValues (t , "ae9547713a6665fc4261d0756904932085a41cf2" , repoStatuses [repo1 .ID ][0 ].ContextHash )
231+
232+ assert .EqualValues (t , 4 , repoStatuses [repo1 .ID ][1 ].Index )
233+ assert .EqualValues (t , structs .CommitStatusFailure , repoStatuses [repo1 .ID ][1 ].State )
234+ assert .EqualValues (t , "ci/awesomeness" , repoStatuses [repo1 .ID ][1 ].Context )
235+ assert .EqualValues (t , "https://example.com/builds/" , repoStatuses [repo1 .ID ][1 ].TargetURL )
236+ assert .EqualValues (t , "My awesome CI-service" , repoStatuses [repo1 .ID ][1 ].Description )
237+ assert .EqualValues (t , "c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7" , repoStatuses [repo1 .ID ][1 ].ContextHash )
238+
239+ assert .EqualValues (t , 3 , repoStatuses [repo1 .ID ][2 ].Index )
240+ // warning + success = success
241+ assert .EqualValues (t , structs .CommitStatusSuccess , repoStatuses [repo1 .ID ][2 ].State )
242+ assert .EqualValues (t , "cov/awesomeness" , repoStatuses [repo1 .ID ][2 ].Context )
243+ assert .EqualValues (t , "https://example.com/converage/" , repoStatuses [repo1 .ID ][2 ].TargetURL )
244+ assert .EqualValues (t , "My awesome Coverage service" , repoStatuses [repo1 .ID ][2 ].Description )
245+ assert .EqualValues (t , "3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe" , repoStatuses [repo1 .ID ][2 ].ContextHash )
246+ }
247+
248+ func Test_GetLatestCommitStatusForRepoCommitIDs (t * testing.T ) {
249+ defer tests .PrepareTestEnv (t )()
250+
251+ commitID := "1234123412341234123412341234123412341234"
252+ repo1 := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
253+ repoStatuses , err := git_model .GetLatestCommitStatusForRepoCommitIDs (db .DefaultContext , repo1 .ID , []string {
254+ commitID ,
255+ })
256+ assert .NoError (t , err )
257+ assert .Len (t , repoStatuses , 1 )
258+ assert .Len (t , repoStatuses [commitID ], 3 )
259+
260+ assert .EqualValues (t , 5 , repoStatuses [commitID ][0 ].Index )
261+ assert .EqualValues (t , structs .CommitStatusError , repoStatuses [commitID ][0 ].State )
262+ assert .EqualValues (t , "deploy/awesomeness" , repoStatuses [commitID ][0 ].Context )
263+ assert .EqualValues (t , "https://example.com/builds/" , repoStatuses [commitID ][0 ].TargetURL )
264+ assert .EqualValues (t , "My awesome deploy service" , repoStatuses [commitID ][0 ].Description )
265+ assert .EqualValues (t , "ae9547713a6665fc4261d0756904932085a41cf2" , repoStatuses [commitID ][0 ].ContextHash )
266+
267+ assert .EqualValues (t , 4 , repoStatuses [commitID ][1 ].Index )
268+ assert .EqualValues (t , structs .CommitStatusFailure , repoStatuses [commitID ][1 ].State )
269+ assert .EqualValues (t , "ci/awesomeness" , repoStatuses [commitID ][1 ].Context )
270+ assert .EqualValues (t , "https://example.com/builds/" , repoStatuses [commitID ][1 ].TargetURL )
271+ assert .EqualValues (t , "My awesome CI-service" , repoStatuses [commitID ][1 ].Description )
272+ assert .EqualValues (t , "c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7" , repoStatuses [commitID ][1 ].ContextHash )
273+
274+ assert .EqualValues (t , 3 , repoStatuses [commitID ][2 ].Index )
275+ // warning + success = success
276+ assert .EqualValues (t , structs .CommitStatusSuccess , repoStatuses [commitID ][2 ].State )
277+ assert .EqualValues (t , "cov/awesomeness" , repoStatuses [commitID ][2 ].Context )
278+ assert .EqualValues (t , "https://example.com/converage/" , repoStatuses [commitID ][2 ].TargetURL )
279+ assert .EqualValues (t , "My awesome Coverage service" , repoStatuses [commitID ][2 ].Description )
280+ assert .EqualValues (t , "3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe" , repoStatuses [commitID ][2 ].ContextHash )
281+ }
0 commit comments