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