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  }