Skip to content

Commit 5ba9e62

Browse files
committed
feat: add unit testcases
Signed-off-by: Animesh Pathak <[email protected]>
1 parent e41c7c3 commit 5ba9e62

File tree

3 files changed

+324
-65
lines changed

3 files changed

+324
-65
lines changed

coverage.out

Lines changed: 66 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2,62 +2,62 @@ mode: set
22
github.com/sonichigo/gitstats/main.go:10.13,15.59 4 0
33
github.com/sonichigo/gitstats/main.go:15.59,17.3 1 0
44
github.com/sonichigo/gitstats/routes/routes.go:9.20,26.2 11 0
5-
github.com/sonichigo/gitstats/handlers/api.go:14.62,15.32 1 0
6-
github.com/sonichigo/gitstats/handlers/api.go:15.32,18.3 2 0
7-
github.com/sonichigo/gitstats/handlers/api.go:20.2,21.19 2 0
8-
github.com/sonichigo/gitstats/handlers/api.go:21.19,24.3 2 0
9-
github.com/sonichigo/gitstats/handlers/api.go:26.2,27.16 2 0
10-
github.com/sonichigo/gitstats/handlers/api.go:27.16,30.3 2 0
11-
github.com/sonichigo/gitstats/handlers/api.go:33.2,35.22 3 0
12-
github.com/sonichigo/gitstats/handlers/api.go:35.22,39.3 3 0
13-
github.com/sonichigo/gitstats/handlers/api.go:41.2,42.16 2 0
14-
github.com/sonichigo/gitstats/handlers/api.go:42.16,45.3 2 0
15-
github.com/sonichigo/gitstats/handlers/api.go:47.2,51.34 4 0
16-
github.com/sonichigo/gitstats/handlers/api.go:53.64,54.32 1 0
17-
github.com/sonichigo/gitstats/handlers/api.go:54.32,57.3 2 0
18-
github.com/sonichigo/gitstats/handlers/api.go:60.2,61.21 2 0
19-
github.com/sonichigo/gitstats/handlers/api.go:61.21,64.3 2 0
20-
github.com/sonichigo/gitstats/handlers/api.go:67.2,69.22 3 0
21-
github.com/sonichigo/gitstats/handlers/api.go:69.22,73.3 3 0
22-
github.com/sonichigo/gitstats/handlers/api.go:76.2,80.32 2 0
23-
github.com/sonichigo/gitstats/handlers/api.go:80.32,82.17 2 0
24-
github.com/sonichigo/gitstats/handlers/api.go:82.17,85.4 2 0
25-
github.com/sonichigo/gitstats/handlers/api.go:87.3,88.17 2 0
26-
github.com/sonichigo/gitstats/handlers/api.go:88.17,91.4 2 0
27-
github.com/sonichigo/gitstats/handlers/api.go:93.3,93.62 1 0
28-
github.com/sonichigo/gitstats/handlers/api.go:96.2,97.35 2 0
29-
github.com/sonichigo/gitstats/handlers/api.go:99.68,100.32 1 0
5+
github.com/sonichigo/gitstats/handlers/api.go:13.62,14.32 1 1
6+
github.com/sonichigo/gitstats/handlers/api.go:14.32,17.3 2 1
7+
github.com/sonichigo/gitstats/handlers/api.go:19.2,20.19 2 1
8+
github.com/sonichigo/gitstats/handlers/api.go:20.19,23.3 2 1
9+
github.com/sonichigo/gitstats/handlers/api.go:25.2,26.16 2 1
10+
github.com/sonichigo/gitstats/handlers/api.go:26.16,29.3 2 1
11+
github.com/sonichigo/gitstats/handlers/api.go:32.2,34.22 3 0
12+
github.com/sonichigo/gitstats/handlers/api.go:34.22,38.3 3 0
13+
github.com/sonichigo/gitstats/handlers/api.go:40.2,41.16 2 0
14+
github.com/sonichigo/gitstats/handlers/api.go:41.16,44.3 2 0
15+
github.com/sonichigo/gitstats/handlers/api.go:46.2,50.34 4 0
16+
github.com/sonichigo/gitstats/handlers/api.go:52.64,53.32 1 1
17+
github.com/sonichigo/gitstats/handlers/api.go:53.32,56.3 2 1
18+
github.com/sonichigo/gitstats/handlers/api.go:59.2,60.21 2 1
19+
github.com/sonichigo/gitstats/handlers/api.go:60.21,63.3 2 1
20+
github.com/sonichigo/gitstats/handlers/api.go:66.2,68.22 3 0
21+
github.com/sonichigo/gitstats/handlers/api.go:68.22,72.3 3 0
22+
github.com/sonichigo/gitstats/handlers/api.go:75.2,79.32 2 0
23+
github.com/sonichigo/gitstats/handlers/api.go:79.32,81.17 2 0
24+
github.com/sonichigo/gitstats/handlers/api.go:81.17,84.4 2 0
25+
github.com/sonichigo/gitstats/handlers/api.go:86.3,87.17 2 0
26+
github.com/sonichigo/gitstats/handlers/api.go:87.17,90.4 2 0
27+
github.com/sonichigo/gitstats/handlers/api.go:92.3,92.62 1 0
28+
github.com/sonichigo/gitstats/handlers/api.go:95.2,96.35 2 0
29+
github.com/sonichigo/gitstats/handlers/api.go:99.68,100.32 1 1
3030
github.com/sonichigo/gitstats/handlers/api.go:100.32,103.3 2 0
31-
github.com/sonichigo/gitstats/handlers/api.go:105.2,106.15 2 0
32-
github.com/sonichigo/gitstats/handlers/api.go:106.15,109.3 2 0
31+
github.com/sonichigo/gitstats/handlers/api.go:105.2,106.15 2 1
32+
github.com/sonichigo/gitstats/handlers/api.go:106.15,109.3 2 1
3333
github.com/sonichigo/gitstats/handlers/api.go:112.2,114.22 3 0
3434
github.com/sonichigo/gitstats/handlers/api.go:114.22,118.3 3 0
3535
github.com/sonichigo/gitstats/handlers/api.go:120.2,121.16 2 0
3636
github.com/sonichigo/gitstats/handlers/api.go:121.16,124.3 2 0
3737
github.com/sonichigo/gitstats/handlers/api.go:126.2,127.34 2 0
38-
github.com/sonichigo/gitstats/handlers/api.go:130.71,131.32 1 0
38+
github.com/sonichigo/gitstats/handlers/api.go:130.71,131.32 1 1
3939
github.com/sonichigo/gitstats/handlers/api.go:131.32,134.3 2 0
40-
github.com/sonichigo/gitstats/handlers/api.go:136.2,139.36 3 0
41-
github.com/sonichigo/gitstats/handlers/api.go:139.36,142.3 2 0
42-
github.com/sonichigo/gitstats/handlers/api.go:144.2,147.19 2 0
43-
github.com/sonichigo/gitstats/handlers/api.go:147.19,149.17 2 0
40+
github.com/sonichigo/gitstats/handlers/api.go:136.2,139.36 3 1
41+
github.com/sonichigo/gitstats/handlers/api.go:139.36,142.3 2 1
42+
github.com/sonichigo/gitstats/handlers/api.go:144.2,147.19 2 1
43+
github.com/sonichigo/gitstats/handlers/api.go:147.19,149.17 2 1
4444
github.com/sonichigo/gitstats/handlers/api.go:149.17,152.4 2 0
45-
github.com/sonichigo/gitstats/handlers/api.go:153.3,154.9 2 0
45+
github.com/sonichigo/gitstats/handlers/api.go:153.3,154.9 2 1
4646
github.com/sonichigo/gitstats/handlers/api.go:158.2,158.40 1 0
47-
github.com/sonichigo/gitstats/handlers/api.go:161.63,162.32 1 0
47+
github.com/sonichigo/gitstats/handlers/api.go:161.63,162.32 1 1
4848
github.com/sonichigo/gitstats/handlers/api.go:162.32,165.3 2 0
49-
github.com/sonichigo/gitstats/handlers/api.go:167.2,170.31 3 0
50-
github.com/sonichigo/gitstats/handlers/api.go:170.31,173.3 2 0
51-
github.com/sonichigo/gitstats/handlers/api.go:175.2,176.28 2 0
52-
github.com/sonichigo/gitstats/handlers/api.go:176.28,178.3 1 0
53-
github.com/sonichigo/gitstats/handlers/api.go:181.2,182.17 2 0
54-
github.com/sonichigo/gitstats/handlers/api.go:182.17,185.3 2 0
55-
github.com/sonichigo/gitstats/handlers/api.go:188.2,188.16 1 0
56-
github.com/sonichigo/gitstats/handlers/api.go:188.16,191.3 2 0
57-
github.com/sonichigo/gitstats/handlers/api.go:194.2,202.16 3 0
58-
github.com/sonichigo/gitstats/handlers/api.go:202.16,204.3 1 0
59-
github.com/sonichigo/gitstats/handlers/api.go:204.8,208.3 3 0
60-
github.com/sonichigo/gitstats/handlers/api.go:211.2,211.60 1 0
49+
github.com/sonichigo/gitstats/handlers/api.go:168.2,171.31 3 1
50+
github.com/sonichigo/gitstats/handlers/api.go:171.31,174.3 2 1
51+
github.com/sonichigo/gitstats/handlers/api.go:177.2,178.28 2 0
52+
github.com/sonichigo/gitstats/handlers/api.go:178.28,180.3 1 0
53+
github.com/sonichigo/gitstats/handlers/api.go:183.2,185.22 3 0
54+
github.com/sonichigo/gitstats/handlers/api.go:185.22,188.3 2 0
55+
github.com/sonichigo/gitstats/handlers/api.go:191.2,192.16 2 0
56+
github.com/sonichigo/gitstats/handlers/api.go:192.16,195.3 2 0
57+
github.com/sonichigo/gitstats/handlers/api.go:198.2,211.13 2 0
58+
github.com/sonichigo/gitstats/handlers/api.go:211.13,213.3 1 0
59+
github.com/sonichigo/gitstats/handlers/api.go:216.2,219.60 2 0
60+
github.com/sonichigo/gitstats/handlers/api.go:219.60,222.3 2 0
6161
github.com/sonichigo/gitstats/handlers/static.go:5.58,6.23 1 0
6262
github.com/sonichigo/gitstats/handlers/static.go:6.23,9.3 2 0
6363
github.com/sonichigo/gitstats/handlers/static.go:10.2,10.21 1 0
@@ -67,15 +67,16 @@ github.com/sonichigo/gitstats/handlers/static.go:18.62,19.34 1 0
6767
github.com/sonichigo/gitstats/handlers/static.go:19.34,22.3 2 0
6868
github.com/sonichigo/gitstats/handlers/static.go:24.68,25.35 1 0
6969
github.com/sonichigo/gitstats/handlers/static.go:25.35,28.3 2 0
70-
github.com/sonichigo/gitstats/handlers/static.go:31.68,32.39 1 0
71-
github.com/sonichigo/gitstats/handlers/static.go:32.39,35.3 2 0
72-
github.com/sonichigo/gitstats/handlers/utils.go:17.70,23.43 2 0
70+
github.com/sonichigo/gitstats/handlers/static.go:31.67,32.33 1 0
71+
github.com/sonichigo/gitstats/handlers/static.go:32.33,35.3 2 0
72+
github.com/sonichigo/gitstats/handlers/static.go:36.2,36.21 1 0
73+
github.com/sonichigo/gitstats/handlers/utils.go:17.70,23.43 2 1
7374
github.com/sonichigo/gitstats/handlers/utils.go:23.43,25.3 1 0
74-
github.com/sonichigo/gitstats/handlers/utils.go:27.2,27.35 1 0
75-
github.com/sonichigo/gitstats/handlers/utils.go:27.35,34.40 2 0
76-
github.com/sonichigo/gitstats/handlers/utils.go:34.40,41.4 3 0
77-
github.com/sonichigo/gitstats/handlers/utils.go:43.3,44.56 2 0
78-
github.com/sonichigo/gitstats/handlers/utils.go:47.2,47.14 1 0
75+
github.com/sonichigo/gitstats/handlers/utils.go:27.2,27.35 1 1
76+
github.com/sonichigo/gitstats/handlers/utils.go:27.35,34.40 2 1
77+
github.com/sonichigo/gitstats/handlers/utils.go:34.40,41.4 3 1
78+
github.com/sonichigo/gitstats/handlers/utils.go:43.3,44.56 2 1
79+
github.com/sonichigo/gitstats/handlers/utils.go:47.2,47.14 1 1
7980
github.com/sonichigo/gitstats/handlers/utils.go:50.82,55.6 4 0
8081
github.com/sonichigo/gitstats/handlers/utils.go:55.6,61.17 4 0
8182
github.com/sonichigo/gitstats/handlers/utils.go:61.17,63.4 1 0
@@ -95,10 +96,10 @@ github.com/sonichigo/gitstats/handlers/utils.go:102.3,104.30 2 0
9596
github.com/sonichigo/gitstats/handlers/utils.go:104.30,105.9 1 0
9697
github.com/sonichigo/gitstats/handlers/utils.go:108.3,108.9 1 0
9798
github.com/sonichigo/gitstats/handlers/utils.go:111.2,111.25 1 0
98-
github.com/sonichigo/gitstats/handlers/utils.go:115.62,121.35 2 0
99-
github.com/sonichigo/gitstats/handlers/utils.go:121.35,124.24 3 0
100-
github.com/sonichigo/gitstats/handlers/utils.go:124.24,126.4 1 0
101-
github.com/sonichigo/gitstats/handlers/utils.go:129.2,129.60 1 0
99+
github.com/sonichigo/gitstats/handlers/utils.go:115.62,121.35 2 1
100+
github.com/sonichigo/gitstats/handlers/utils.go:121.35,124.24 3 1
101+
github.com/sonichigo/gitstats/handlers/utils.go:124.24,126.4 1 1
102+
github.com/sonichigo/gitstats/handlers/utils.go:129.2,129.60 1 1
102103
github.com/sonichigo/gitstats/handlers/utils.go:131.85,137.6 4 0
103104
github.com/sonichigo/gitstats/handlers/utils.go:137.6,143.17 4 0
104105
github.com/sonichigo/gitstats/handlers/utils.go:143.17,145.4 1 0
@@ -152,13 +153,13 @@ github.com/sonichigo/gitstats/handlers/utils.go:291.4,293.45 2 0
152153
github.com/sonichigo/gitstats/handlers/utils.go:293.45,295.5 1 0
153154
github.com/sonichigo/gitstats/handlers/utils.go:298.3,298.9 1 0
154155
github.com/sonichigo/gitstats/handlers/utils.go:301.2,305.8 1 0
155-
github.com/sonichigo/gitstats/handlers/utils.go:308.61,313.6 4 0
156-
github.com/sonichigo/gitstats/handlers/utils.go:313.6,319.17 4 0
156+
github.com/sonichigo/gitstats/handlers/utils.go:308.61,313.6 4 1
157+
github.com/sonichigo/gitstats/handlers/utils.go:313.6,319.17 4 1
157158
github.com/sonichigo/gitstats/handlers/utils.go:319.17,321.4 1 0
158-
github.com/sonichigo/gitstats/handlers/utils.go:323.3,324.17 2 0
159+
github.com/sonichigo/gitstats/handlers/utils.go:323.3,324.17 2 1
159160
github.com/sonichigo/gitstats/handlers/utils.go:324.17,326.4 1 0
160-
github.com/sonichigo/gitstats/handlers/utils.go:328.3,328.39 1 0
161-
github.com/sonichigo/gitstats/handlers/utils.go:328.39,332.4 3 0
161+
github.com/sonichigo/gitstats/handlers/utils.go:328.3,328.39 1 1
162+
github.com/sonichigo/gitstats/handlers/utils.go:328.39,332.4 3 1
162163
github.com/sonichigo/gitstats/handlers/utils.go:334.3,338.72 2 0
163164
github.com/sonichigo/gitstats/handlers/utils.go:338.72,341.4 2 0
164165
github.com/sonichigo/gitstats/handlers/utils.go:342.3,344.27 2 0
@@ -195,8 +196,8 @@ github.com/sonichigo/gitstats/handlers/utils.go:463.29,465.17 2 0
195196
github.com/sonichigo/gitstats/handlers/utils.go:465.17,468.12 2 0
196197
github.com/sonichigo/gitstats/handlers/utils.go:471.3,471.56 1 0
197198
github.com/sonichigo/gitstats/handlers/utils.go:474.2,475.35 2 0
198-
github.com/sonichigo/gitstats/handlers/utils.go:478.85,480.16 2 0
199-
github.com/sonichigo/gitstats/handlers/utils.go:480.16,483.3 2 0
199+
github.com/sonichigo/gitstats/handlers/utils.go:478.85,480.16 2 1
200+
github.com/sonichigo/gitstats/handlers/utils.go:480.16,483.3 2 1
200201
github.com/sonichigo/gitstats/handlers/utils.go:485.2,487.16 3 0
201202
github.com/sonichigo/gitstats/handlers/utils.go:487.16,490.3 2 0
202203
github.com/sonichigo/gitstats/handlers/utils.go:492.2,496.35 4 0

handlers/api_test.go

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
package handlers
2+
3+
import (
4+
"net/http"
5+
"net/http/httptest"
6+
"strings"
7+
"testing"
8+
)
9+
10+
// Test generated using Keploy
11+
func TestHandleRepoStats_MethodNotAllowed(t *testing.T) {
12+
req, err := http.NewRequest(http.MethodPost, "/repo-stats", nil)
13+
if err != nil {
14+
t.Fatalf("Failed to create request: %v", err)
15+
}
16+
17+
rr := httptest.NewRecorder()
18+
HandleRepoStats(rr, req)
19+
20+
if status := rr.Code; status != http.StatusMethodNotAllowed {
21+
t.Errorf("Expected status code %v, got %v", http.StatusMethodNotAllowed, status)
22+
}
23+
24+
expected := "Method not allowed\n"
25+
if rr.Body.String() != expected {
26+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
27+
}
28+
}
29+
30+
// Test generated using Keploy
31+
func TestHandleRepoStats_MissingRepoParameter(t *testing.T) {
32+
req, err := http.NewRequest(http.MethodGet, "/repo-stats", nil)
33+
if err != nil {
34+
t.Fatalf("Failed to create request: %v", err)
35+
}
36+
37+
rr := httptest.NewRecorder()
38+
HandleRepoStats(rr, req)
39+
40+
if status := rr.Code; status != http.StatusBadRequest {
41+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
42+
}
43+
44+
expected := "Repository URL is required\n"
45+
if rr.Body.String() != expected {
46+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
47+
}
48+
}
49+
50+
// Test generated using Keploy
51+
func TestHandleRepoStats_InvalidRepoURL(t *testing.T) {
52+
req, err := http.NewRequest(http.MethodGet, "/repo-stats?repo=invalid-url", nil)
53+
if err != nil {
54+
t.Fatalf("Failed to create request: %v", err)
55+
}
56+
57+
rr := httptest.NewRecorder()
58+
HandleRepoStats(rr, req)
59+
60+
if status := rr.Code; status != http.StatusBadRequest {
61+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
62+
}
63+
64+
if !strings.Contains(rr.Body.String(), "Invalid repository URL") {
65+
t.Errorf("Expected error message to contain 'Invalid repository URL', got %q", rr.Body.String())
66+
}
67+
}
68+
69+
// Test generated using Keploy
70+
func TestHandleStarHistory_NoRepos(t *testing.T) {
71+
req, err := http.NewRequest(http.MethodGet, "/star-history", nil)
72+
if err != nil {
73+
t.Fatalf("Failed to create request: %v", err)
74+
}
75+
76+
rr := httptest.NewRecorder()
77+
HandleStarHistory(rr, req)
78+
79+
if status := rr.Code; status != http.StatusBadRequest {
80+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
81+
}
82+
83+
expected := "At least one repository URL is required\n"
84+
if rr.Body.String() != expected {
85+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
86+
}
87+
}
88+
89+
// Test generated using Keploy
90+
func TestHandleOrgContributors_MissingOrg(t *testing.T) {
91+
req, err := http.NewRequest(http.MethodGet, "/org-contributors", nil)
92+
if err != nil {
93+
t.Fatalf("Failed to create request: %v", err)
94+
}
95+
96+
rr := httptest.NewRecorder()
97+
HandleOrgContributors(rr, req)
98+
99+
if status := rr.Code; status != http.StatusBadRequest {
100+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
101+
}
102+
103+
expected := "Organization name is required\n"
104+
if rr.Body.String() != expected {
105+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
106+
}
107+
}
108+
109+
// Test generated using Keploy
110+
func TestHandleStargazers_MissingOwnerOrRepo(t *testing.T) {
111+
req, err := http.NewRequest(http.MethodGet, "/stargazers", nil)
112+
if err != nil {
113+
t.Fatalf("Failed to create request: %v", err)
114+
}
115+
116+
rr := httptest.NewRecorder()
117+
HandleStargazers(rr, req)
118+
119+
if status := rr.Code; status != http.StatusBadRequest {
120+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
121+
}
122+
123+
expected := "Both owner and repository name are required\n"
124+
if rr.Body.String() != expected {
125+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
126+
}
127+
}
128+
129+
// Test generated using Keploy
130+
func TestHandleActiveContributors_MissingOrgAndRepo(t *testing.T) {
131+
req, err := http.NewRequest(http.MethodGet, "/active-contributors", nil)
132+
if err != nil {
133+
t.Fatalf("Failed to create request: %v", err)
134+
}
135+
136+
rr := httptest.NewRecorder()
137+
HandleActiveContributors(rr, req)
138+
139+
if status := rr.Code; status != http.StatusBadRequest {
140+
t.Errorf("Expected status code %v, got %v", http.StatusBadRequest, status)
141+
}
142+
143+
expected := "Either organization name or repository URL is required\n"
144+
if rr.Body.String() != expected {
145+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
146+
}
147+
}
148+
149+
// Test generated using Keploy
150+
func TestHandleStarHistory_MethodNotAllowed(t *testing.T) {
151+
req, err := http.NewRequest(http.MethodPost, "/star-history", nil)
152+
if err != nil {
153+
t.Fatalf("Failed to create request: %v", err)
154+
}
155+
rr := httptest.NewRecorder()
156+
HandleStarHistory(rr, req)
157+
if status := rr.Code; status != http.StatusMethodNotAllowed {
158+
t.Errorf("Expected status code %v, got %v", http.StatusMethodNotAllowed, status)
159+
}
160+
expected := "Method not allowed\n"
161+
if rr.Body.String() != expected {
162+
t.Errorf("Expected body %q, got %q", expected, rr.Body.String())
163+
}
164+
}
165+
166+
// Test generated using Keploy
167+
func TestHandleActiveContributors_ValidOrgAndRepo(t *testing.T) {
168+
req, err := http.NewRequest(http.MethodGet, "/active-contributors?repo=https://github.com/keploy/keploy&org=keploy", nil)
169+
if err != nil {
170+
t.Fatalf("Failed to create request: %v", err)
171+
}
172+
rr := httptest.NewRecorder()
173+
HandleActiveContributors(rr, req)
174+
175+
if rr.Body.Len() == 0 {
176+
t.Errorf("Expected non-empty response body")
177+
}
178+
}

0 commit comments

Comments
 (0)