Skip to content

Commit c9678ea

Browse files
committed
Add tests for Combine
1 parent b053be0 commit c9678ea

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package commitstatus
5+
6+
import "testing"
7+
8+
func TestCombine(t *testing.T) {
9+
tests := []struct {
10+
name string
11+
states CommitStatusStates
12+
expected CombinedStatusState
13+
}{
14+
// 0 states
15+
{
16+
name: "empty",
17+
states: CommitStatusStates{},
18+
expected: CombinedStatusPending,
19+
},
20+
// 1 state
21+
{
22+
name: "pending",
23+
states: CommitStatusStates{CommitStatusPending},
24+
expected: CombinedStatusPending,
25+
},
26+
{
27+
name: "success",
28+
states: CommitStatusStates{CommitStatusSuccess},
29+
expected: CombinedStatusSuccess,
30+
},
31+
{
32+
name: "error",
33+
states: CommitStatusStates{CommitStatusError},
34+
expected: CombinedStatusFailure,
35+
},
36+
{
37+
name: "failure",
38+
states: CommitStatusStates{CommitStatusFailure},
39+
expected: CombinedStatusFailure,
40+
},
41+
{
42+
name: "warning",
43+
states: CommitStatusStates{CommitStatusWarning},
44+
expected: CombinedStatusSuccess,
45+
},
46+
// 2 states
47+
{
48+
name: "pending and success",
49+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess},
50+
expected: CombinedStatusPending,
51+
},
52+
{
53+
name: "pending and error",
54+
states: CommitStatusStates{CommitStatusPending, CommitStatusError},
55+
expected: CombinedStatusFailure,
56+
},
57+
{
58+
name: "pending and failure",
59+
states: CommitStatusStates{CommitStatusPending, CommitStatusFailure},
60+
expected: CombinedStatusFailure,
61+
},
62+
{
63+
name: "pending and warning",
64+
states: CommitStatusStates{CommitStatusPending, CommitStatusWarning},
65+
expected: CombinedStatusPending,
66+
},
67+
{
68+
name: "success and error",
69+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusError},
70+
expected: CombinedStatusFailure,
71+
},
72+
{
73+
name: "success and failure",
74+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusFailure},
75+
expected: CombinedStatusFailure,
76+
},
77+
{
78+
name: "success and warning",
79+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusWarning},
80+
expected: CombinedStatusSuccess,
81+
},
82+
{
83+
name: "error and failure",
84+
states: CommitStatusStates{CommitStatusError, CommitStatusFailure},
85+
expected: CombinedStatusFailure,
86+
},
87+
{
88+
name: "error and warning",
89+
states: CommitStatusStates{CommitStatusError, CommitStatusWarning},
90+
expected: CombinedStatusFailure,
91+
},
92+
{
93+
name: "failure and warning",
94+
states: CommitStatusStates{CommitStatusFailure, CommitStatusWarning},
95+
expected: CombinedStatusFailure,
96+
},
97+
// 3 states
98+
{
99+
name: "pending, success and warning",
100+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusWarning},
101+
expected: CombinedStatusPending,
102+
},
103+
{
104+
name: "pending, success and error",
105+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusError},
106+
expected: CombinedStatusFailure,
107+
},
108+
{
109+
name: "pending, success and failure",
110+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusFailure},
111+
expected: CombinedStatusFailure,
112+
},
113+
{
114+
name: "pending, error and failure",
115+
states: CommitStatusStates{CommitStatusPending, CommitStatusError, CommitStatusFailure},
116+
expected: CombinedStatusFailure,
117+
},
118+
{
119+
name: "success, error and warning",
120+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusError, CommitStatusWarning},
121+
expected: CombinedStatusFailure,
122+
},
123+
{
124+
name: "success, failure and warning",
125+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusFailure, CommitStatusWarning},
126+
expected: CombinedStatusFailure,
127+
},
128+
{
129+
name: "error, failure and warning",
130+
states: CommitStatusStates{CommitStatusError, CommitStatusFailure, CommitStatusWarning},
131+
expected: CombinedStatusFailure,
132+
},
133+
// All success
134+
{
135+
name: "all success",
136+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusSuccess, CommitStatusSuccess},
137+
expected: CombinedStatusSuccess,
138+
},
139+
// All pending
140+
{
141+
name: "all pending",
142+
states: CommitStatusStates{CommitStatusPending, CommitStatusPending, CommitStatusPending},
143+
expected: CombinedStatusPending,
144+
},
145+
// 4 states
146+
{
147+
name: "pending, success, error and warning",
148+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusError, CommitStatusWarning},
149+
expected: CombinedStatusFailure,
150+
},
151+
{
152+
name: "pending, success, failure and warning",
153+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusFailure, CommitStatusWarning},
154+
expected: CombinedStatusFailure,
155+
},
156+
{
157+
name: "pending, error, failure and warning",
158+
states: CommitStatusStates{CommitStatusPending, CommitStatusError, CommitStatusFailure, CommitStatusWarning},
159+
expected: CombinedStatusFailure,
160+
},
161+
{
162+
name: "success, error, failure and warning",
163+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusError, CommitStatusFailure, CommitStatusWarning},
164+
expected: CombinedStatusFailure,
165+
},
166+
{
167+
name: "mixed states",
168+
states: CommitStatusStates{CommitStatusPending, CommitStatusSuccess, CommitStatusError, CommitStatusWarning},
169+
expected: CombinedStatusFailure,
170+
},
171+
{
172+
name: "mixed states with all success",
173+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusSuccess, CommitStatusPending, CommitStatusWarning},
174+
expected: CombinedStatusPending,
175+
},
176+
{
177+
name: "all success with warning",
178+
states: CommitStatusStates{CommitStatusSuccess, CommitStatusSuccess, CommitStatusSuccess, CommitStatusWarning},
179+
expected: CombinedStatusSuccess,
180+
},
181+
}
182+
183+
for _, tt := range tests {
184+
t.Run(tt.name, func(t *testing.T) {
185+
result := tt.states.Combine()
186+
if result != tt.expected {
187+
t.Errorf("expected %v, got %v", tt.expected, result)
188+
}
189+
})
190+
}
191+
}

0 commit comments

Comments
 (0)