github.com/google/go-github/v49@v49.1.0/github/admin_stats_test.go (about) 1 package github 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "testing" 8 9 "github.com/google/go-cmp/cmp" 10 ) 11 12 func TestAdminService_GetAdminStats(t *testing.T) { 13 client, mux, _, teardown := setup() 14 defer teardown() 15 16 mux.HandleFunc("/enterprise/stats/all", func(w http.ResponseWriter, r *http.Request) { 17 testMethod(t, r, "GET") 18 19 fmt.Fprint(w, ` 20 { 21 "repos": { 22 "total_repos": 212, 23 "root_repos": 194, 24 "fork_repos": 18, 25 "org_repos": 51, 26 "total_pushes": 3082, 27 "total_wikis": 15 28 }, 29 "hooks": { 30 "total_hooks": 27, 31 "active_hooks": 23, 32 "inactive_hooks": 4 33 }, 34 "pages": { 35 "total_pages": 36 36 }, 37 "orgs": { 38 "total_orgs": 33, 39 "disabled_orgs": 0, 40 "total_teams": 60, 41 "total_team_members": 314 42 }, 43 "users": { 44 "total_users": 254, 45 "admin_users": 45, 46 "suspended_users": 21 47 }, 48 "pulls": { 49 "total_pulls": 86, 50 "merged_pulls": 60, 51 "mergeable_pulls": 21, 52 "unmergeable_pulls": 3 53 }, 54 "issues": { 55 "total_issues": 179, 56 "open_issues": 83, 57 "closed_issues": 96 58 }, 59 "milestones": { 60 "total_milestones": 7, 61 "open_milestones": 6, 62 "closed_milestones": 1 63 }, 64 "gists": { 65 "total_gists": 178, 66 "private_gists": 151, 67 "public_gists": 25 68 }, 69 "comments": { 70 "total_commit_comments": 6, 71 "total_gist_comments": 28, 72 "total_issue_comments": 366, 73 "total_pull_request_comments": 30 74 } 75 } 76 `) 77 }) 78 79 ctx := context.Background() 80 stats, _, err := client.Admin.GetAdminStats(ctx) 81 if err != nil { 82 t.Errorf("AdminService.GetAdminStats returned error: %v", err) 83 } 84 85 if want := testAdminStats; !cmp.Equal(stats, want) { 86 t.Errorf("AdminService.GetAdminStats returned %+v, want %+v", stats, want) 87 } 88 89 const methodName = "GetAdminStats" 90 testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { 91 got, resp, err := client.Admin.GetAdminStats(ctx) 92 if got != nil { 93 t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got) 94 } 95 return resp, err 96 }) 97 } 98 99 func TestAdminService_Stringify(t *testing.T) { 100 want := "github.AdminStats{Issues:github.IssueStats{TotalIssues:179, OpenIssues:83, ClosedIssues:96}, Hooks:github.HookStats{TotalHooks:27, ActiveHooks:23, InactiveHooks:4}, Milestones:github.MilestoneStats{TotalMilestones:7, OpenMilestones:6, ClosedMilestones:1}, Orgs:github.OrgStats{TotalOrgs:33, DisabledOrgs:0, TotalTeams:60, TotalTeamMembers:314}, Comments:github.CommentStats{TotalCommitComments:6, TotalGistComments:28, TotalIssueComments:366, TotalPullRequestComments:30}, Pages:github.PageStats{TotalPages:36}, Users:github.UserStats{TotalUsers:254, AdminUsers:45, SuspendedUsers:21}, Gists:github.GistStats{TotalGists:178, PrivateGists:151, PublicGists:25}, Pulls:github.PullStats{TotalPulls:86, MergedPulls:60, MergablePulls:21, UnmergablePulls:3}, Repos:github.RepoStats{TotalRepos:212, RootRepos:194, ForkRepos:18, OrgRepos:51, TotalPushes:3082, TotalWikis:15}}" 101 if got := testAdminStats.String(); got != want { 102 t.Errorf("testAdminStats.String = %q, want %q", got, want) 103 } 104 105 want = "github.IssueStats{TotalIssues:179, OpenIssues:83, ClosedIssues:96}" 106 if got := testAdminStats.Issues.String(); got != want { 107 t.Errorf("testAdminStats.Issues.String = %q, want %q", got, want) 108 } 109 110 want = "github.HookStats{TotalHooks:27, ActiveHooks:23, InactiveHooks:4}" 111 if got := testAdminStats.Hooks.String(); got != want { 112 t.Errorf("testAdminStats.Hooks.String = %q, want %q", got, want) 113 } 114 115 want = "github.MilestoneStats{TotalMilestones:7, OpenMilestones:6, ClosedMilestones:1}" 116 if got := testAdminStats.Milestones.String(); got != want { 117 t.Errorf("testAdminStats.Milestones.String = %q, want %q", got, want) 118 } 119 120 want = "github.OrgStats{TotalOrgs:33, DisabledOrgs:0, TotalTeams:60, TotalTeamMembers:314}" 121 if got := testAdminStats.Orgs.String(); got != want { 122 t.Errorf("testAdminStats.Orgs.String = %q, want %q", got, want) 123 } 124 125 want = "github.CommentStats{TotalCommitComments:6, TotalGistComments:28, TotalIssueComments:366, TotalPullRequestComments:30}" 126 if got := testAdminStats.Comments.String(); got != want { 127 t.Errorf("testAdminStats.Comments.String = %q, want %q", got, want) 128 } 129 130 want = "github.PageStats{TotalPages:36}" 131 if got := testAdminStats.Pages.String(); got != want { 132 t.Errorf("testAdminStats.Pages.String = %q, want %q", got, want) 133 } 134 135 want = "github.UserStats{TotalUsers:254, AdminUsers:45, SuspendedUsers:21}" 136 if got := testAdminStats.Users.String(); got != want { 137 t.Errorf("testAdminStats.Users.String = %q, want %q", got, want) 138 } 139 140 want = "github.GistStats{TotalGists:178, PrivateGists:151, PublicGists:25}" 141 if got := testAdminStats.Gists.String(); got != want { 142 t.Errorf("testAdminStats.Gists.String = %q, want %q", got, want) 143 } 144 145 want = "github.PullStats{TotalPulls:86, MergedPulls:60, MergablePulls:21, UnmergablePulls:3}" 146 if got := testAdminStats.Pulls.String(); got != want { 147 t.Errorf("testAdminStats.Pulls.String = %q, want %q", got, want) 148 } 149 150 want = "github.RepoStats{TotalRepos:212, RootRepos:194, ForkRepos:18, OrgRepos:51, TotalPushes:3082, TotalWikis:15}" 151 if got := testAdminStats.Repos.String(); got != want { 152 t.Errorf("testAdminStats.Repos.String = %q, want %q", got, want) 153 } 154 } 155 156 var testAdminStats = &AdminStats{ 157 Repos: &RepoStats{ 158 TotalRepos: Int(212), 159 RootRepos: Int(194), 160 ForkRepos: Int(18), 161 OrgRepos: Int(51), 162 TotalPushes: Int(3082), 163 TotalWikis: Int(15), 164 }, 165 Hooks: &HookStats{ 166 TotalHooks: Int(27), 167 ActiveHooks: Int(23), 168 InactiveHooks: Int(4), 169 }, 170 Pages: &PageStats{ 171 TotalPages: Int(36), 172 }, 173 Orgs: &OrgStats{ 174 TotalOrgs: Int(33), 175 DisabledOrgs: Int(0), 176 TotalTeams: Int(60), 177 TotalTeamMembers: Int(314), 178 }, 179 Users: &UserStats{ 180 TotalUsers: Int(254), 181 AdminUsers: Int(45), 182 SuspendedUsers: Int(21), 183 }, 184 Pulls: &PullStats{ 185 TotalPulls: Int(86), 186 MergedPulls: Int(60), 187 MergablePulls: Int(21), 188 UnmergablePulls: Int(3), 189 }, 190 Issues: &IssueStats{ 191 TotalIssues: Int(179), 192 OpenIssues: Int(83), 193 ClosedIssues: Int(96), 194 }, 195 Milestones: &MilestoneStats{ 196 TotalMilestones: Int(7), 197 OpenMilestones: Int(6), 198 ClosedMilestones: Int(1), 199 }, 200 Gists: &GistStats{ 201 TotalGists: Int(178), 202 PrivateGists: Int(151), 203 PublicGists: Int(25), 204 }, 205 Comments: &CommentStats{ 206 TotalCommitComments: Int(6), 207 TotalGistComments: Int(28), 208 TotalIssueComments: Int(366), 209 TotalPullRequestComments: Int(30), 210 }, 211 } 212 213 func TestIssueStats_Marshal(t *testing.T) { 214 testJSONMarshal(t, &IssueStats{}, "{}") 215 216 u := &IssueStats{ 217 TotalIssues: Int(1), 218 OpenIssues: Int(1), 219 ClosedIssues: Int(1), 220 } 221 222 want := `{ 223 "total_issues": 1, 224 "open_issues": 1, 225 "closed_issues": 1 226 }` 227 228 testJSONMarshal(t, u, want) 229 } 230 231 func TestHookStats_Marshal(t *testing.T) { 232 testJSONMarshal(t, &HookStats{}, "{}") 233 234 u := &HookStats{ 235 TotalHooks: Int(1), 236 ActiveHooks: Int(1), 237 InactiveHooks: Int(1), 238 } 239 240 want := `{ 241 "total_hooks": 1, 242 "active_hooks": 1, 243 "inactive_hooks": 1 244 }` 245 246 testJSONMarshal(t, u, want) 247 } 248 249 func TestMilestoneStats_Marshal(t *testing.T) { 250 testJSONMarshal(t, &MilestoneStats{}, "{}") 251 252 u := &MilestoneStats{ 253 TotalMilestones: Int(1), 254 OpenMilestones: Int(1), 255 ClosedMilestones: Int(1), 256 } 257 258 want := `{ 259 "total_milestones": 1, 260 "open_milestones": 1, 261 "closed_milestones": 1 262 }` 263 264 testJSONMarshal(t, u, want) 265 } 266 267 func TestOrgStats_Marshal(t *testing.T) { 268 testJSONMarshal(t, &OrgStats{}, "{}") 269 270 u := &OrgStats{ 271 TotalOrgs: Int(1), 272 DisabledOrgs: Int(1), 273 TotalTeams: Int(1), 274 TotalTeamMembers: Int(1), 275 } 276 277 want := `{ 278 "total_orgs": 1, 279 "disabled_orgs": 1, 280 "total_teams": 1, 281 "total_team_members": 1 282 }` 283 284 testJSONMarshal(t, u, want) 285 } 286 287 func TestCommentStats_Marshal(t *testing.T) { 288 testJSONMarshal(t, &CommentStats{}, "{}") 289 290 u := &CommentStats{ 291 TotalCommitComments: Int(1), 292 TotalGistComments: Int(1), 293 TotalIssueComments: Int(1), 294 TotalPullRequestComments: Int(1), 295 } 296 297 want := `{ 298 "total_commit_comments": 1, 299 "total_gist_comments": 1, 300 "total_issue_comments": 1, 301 "total_pull_request_comments": 1 302 }` 303 304 testJSONMarshal(t, u, want) 305 } 306 307 func TestPageStats_Marshal(t *testing.T) { 308 testJSONMarshal(t, &PageStats{}, "{}") 309 310 u := &PageStats{ 311 TotalPages: Int(1), 312 } 313 314 want := `{ 315 "total_pages": 1 316 }` 317 318 testJSONMarshal(t, u, want) 319 } 320 321 func TestUserStats_Marshal(t *testing.T) { 322 testJSONMarshal(t, &UserStats{}, "{}") 323 324 u := &UserStats{ 325 TotalUsers: Int(1), 326 AdminUsers: Int(1), 327 SuspendedUsers: Int(1), 328 } 329 330 want := `{ 331 "total_users": 1, 332 "admin_users": 1, 333 "suspended_users": 1 334 }` 335 336 testJSONMarshal(t, u, want) 337 } 338 339 func TestGistStats_Marshal(t *testing.T) { 340 testJSONMarshal(t, &GistStats{}, "{}") 341 342 u := &GistStats{ 343 TotalGists: Int(1), 344 PrivateGists: Int(1), 345 PublicGists: Int(1), 346 } 347 348 want := `{ 349 "total_gists": 1, 350 "private_gists": 1, 351 "public_gists": 1 352 }` 353 354 testJSONMarshal(t, u, want) 355 } 356 357 func TestPullStats_Marshal(t *testing.T) { 358 testJSONMarshal(t, &PullStats{}, "{}") 359 360 u := &PullStats{ 361 TotalPulls: Int(1), 362 MergedPulls: Int(1), 363 MergablePulls: Int(1), 364 UnmergablePulls: Int(1), 365 } 366 367 want := `{ 368 "total_pulls": 1, 369 "merged_pulls": 1, 370 "mergeable_pulls": 1, 371 "unmergeable_pulls": 1 372 }` 373 374 testJSONMarshal(t, u, want) 375 } 376 377 func TestRepoStats_Marshal(t *testing.T) { 378 testJSONMarshal(t, &RepoStats{}, "{}") 379 380 u := &RepoStats{ 381 TotalRepos: Int(1), 382 RootRepos: Int(1), 383 ForkRepos: Int(1), 384 OrgRepos: Int(1), 385 TotalPushes: Int(1), 386 TotalWikis: Int(1), 387 } 388 389 want := `{ 390 "total_repos": 1, 391 "root_repos": 1, 392 "fork_repos": 1, 393 "org_repos": 1, 394 "total_pushes": 1, 395 "total_wikis": 1 396 }` 397 398 testJSONMarshal(t, u, want) 399 } 400 401 func TestAdminStats_Marshal(t *testing.T) { 402 testJSONMarshal(t, &AdminStats{}, "{}") 403 404 u := &AdminStats{ 405 Repos: &RepoStats{ 406 TotalRepos: Int(212), 407 RootRepos: Int(194), 408 ForkRepos: Int(18), 409 OrgRepos: Int(51), 410 TotalPushes: Int(3082), 411 TotalWikis: Int(15), 412 }, 413 Hooks: &HookStats{ 414 TotalHooks: Int(27), 415 ActiveHooks: Int(23), 416 InactiveHooks: Int(4), 417 }, 418 Pages: &PageStats{ 419 TotalPages: Int(36), 420 }, 421 Orgs: &OrgStats{ 422 TotalOrgs: Int(33), 423 DisabledOrgs: Int(0), 424 TotalTeams: Int(60), 425 TotalTeamMembers: Int(314), 426 }, 427 Users: &UserStats{ 428 TotalUsers: Int(254), 429 AdminUsers: Int(45), 430 SuspendedUsers: Int(21), 431 }, 432 Pulls: &PullStats{ 433 TotalPulls: Int(86), 434 MergedPulls: Int(60), 435 MergablePulls: Int(21), 436 UnmergablePulls: Int(3), 437 }, 438 Issues: &IssueStats{ 439 TotalIssues: Int(179), 440 OpenIssues: Int(83), 441 ClosedIssues: Int(96), 442 }, 443 Milestones: &MilestoneStats{ 444 TotalMilestones: Int(7), 445 OpenMilestones: Int(6), 446 ClosedMilestones: Int(1), 447 }, 448 Gists: &GistStats{ 449 TotalGists: Int(178), 450 PrivateGists: Int(151), 451 PublicGists: Int(25), 452 }, 453 Comments: &CommentStats{ 454 TotalCommitComments: Int(6), 455 TotalGistComments: Int(28), 456 TotalIssueComments: Int(366), 457 TotalPullRequestComments: Int(30), 458 }, 459 } 460 461 want := `{ 462 "repos": { 463 "total_repos": 212, 464 "root_repos": 194, 465 "fork_repos": 18, 466 "org_repos": 51, 467 "total_pushes": 3082, 468 "total_wikis": 15 469 }, 470 "hooks": { 471 "total_hooks": 27, 472 "active_hooks": 23, 473 "inactive_hooks": 4 474 }, 475 "pages": { 476 "total_pages": 36 477 }, 478 "orgs": { 479 "total_orgs": 33, 480 "disabled_orgs": 0, 481 "total_teams": 60, 482 "total_team_members": 314 483 }, 484 "users": { 485 "total_users": 254, 486 "admin_users": 45, 487 "suspended_users": 21 488 }, 489 "pulls": { 490 "total_pulls": 86, 491 "merged_pulls": 60, 492 "mergeable_pulls": 21, 493 "unmergeable_pulls": 3 494 }, 495 "issues": { 496 "total_issues": 179, 497 "open_issues": 83, 498 "closed_issues": 96 499 }, 500 "milestones": { 501 "total_milestones": 7, 502 "open_milestones": 6, 503 "closed_milestones": 1 504 }, 505 "gists": { 506 "total_gists": 178, 507 "private_gists": 151, 508 "public_gists": 25 509 }, 510 "comments": { 511 "total_commit_comments": 6, 512 "total_gist_comments": 28, 513 "total_issue_comments": 366, 514 "total_pull_request_comments": 30 515 } 516 }` 517 518 testJSONMarshal(t, u, want) 519 }