1package github
2
3import (
4	"context"
5	"fmt"
6	"net/http"
7	"reflect"
8	"testing"
9)
10
11func TestAdminService_GetAdminStats(t *testing.T) {
12	client, mux, _, teardown := setup()
13	defer teardown()
14
15	mux.HandleFunc("/enterprise/stats/all", func(w http.ResponseWriter, r *http.Request) {
16		testMethod(t, r, "GET")
17
18		fmt.Fprint(w, `
19{
20  "repos": {
21    "total_repos": 212,
22    "root_repos": 194,
23    "fork_repos": 18,
24    "org_repos": 51,
25    "total_pushes": 3082,
26    "total_wikis": 15
27  },
28  "hooks": {
29    "total_hooks": 27,
30    "active_hooks": 23,
31    "inactive_hooks": 4
32  },
33  "pages": {
34    "total_pages": 36
35  },
36  "orgs": {
37    "total_orgs": 33,
38    "disabled_orgs": 0,
39    "total_teams": 60,
40    "total_team_members": 314
41  },
42  "users": {
43    "total_users": 254,
44    "admin_users": 45,
45    "suspended_users": 21
46  },
47  "pulls": {
48    "total_pulls": 86,
49    "merged_pulls": 60,
50    "mergeable_pulls": 21,
51    "unmergeable_pulls": 3
52  },
53  "issues": {
54    "total_issues": 179,
55    "open_issues": 83,
56    "closed_issues": 96
57  },
58  "milestones": {
59    "total_milestones": 7,
60    "open_milestones": 6,
61    "closed_milestones": 1
62  },
63  "gists": {
64    "total_gists": 178,
65    "private_gists": 151,
66    "public_gists": 25
67  },
68  "comments": {
69    "total_commit_comments": 6,
70    "total_gist_comments": 28,
71    "total_issue_comments": 366,
72    "total_pull_request_comments": 30
73  }
74}
75`)
76	})
77
78	stats, _, err := client.Admin.GetAdminStats(context.Background())
79	if err != nil {
80		t.Errorf("AdminService.GetAdminStats returned error: %v", err)
81	}
82
83	want := &AdminStats{
84		Repos: &RepoStats{
85			TotalRepos:  Int(212),
86			RootRepos:   Int(194),
87			ForkRepos:   Int(18),
88			OrgRepos:    Int(51),
89			TotalPushes: Int(3082),
90			TotalWikis:  Int(15),
91		},
92		Hooks: &HookStats{
93			TotalHooks:    Int(27),
94			ActiveHooks:   Int(23),
95			InactiveHooks: Int(4),
96		},
97		Pages: &PageStats{
98			TotalPages: Int(36),
99		},
100		Orgs: &OrgStats{
101			TotalOrgs:        Int(33),
102			DisabledOrgs:     Int(0),
103			TotalTeams:       Int(60),
104			TotalTeamMembers: Int(314),
105		},
106		Users: &UserStats{
107			TotalUsers:     Int(254),
108			AdminUsers:     Int(45),
109			SuspendedUsers: Int(21),
110		},
111		Pulls: &PullStats{
112			TotalPulls:      Int(86),
113			MergedPulls:     Int(60),
114			MergablePulls:   Int(21),
115			UnmergablePulls: Int(3),
116		},
117		Issues: &IssueStats{
118			TotalIssues:  Int(179),
119			OpenIssues:   Int(83),
120			ClosedIssues: Int(96),
121		},
122		Milestones: &MilestoneStats{
123			TotalMilestones:  Int(7),
124			OpenMilestones:   Int(6),
125			ClosedMilestones: Int(1),
126		},
127		Gists: &GistStats{
128			TotalGists:   Int(178),
129			PrivateGists: Int(151),
130			PublicGists:  Int(25),
131		},
132		Comments: &CommentStats{
133			TotalCommitComments:      Int(6),
134			TotalGistComments:        Int(28),
135			TotalIssueComments:       Int(366),
136			TotalPullRequestComments: Int(30),
137		},
138	}
139	if !reflect.DeepEqual(stats, want) {
140		t.Errorf("AdminService.GetAdminStats returned %+v, want %+v", stats, want)
141	}
142}
143