From 42f8af8895a68b425b353b0e0153bf6b3b4c6977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Lundstr=C3=B6m?= Date: Thu, 21 Nov 2024 10:13:41 +0100 Subject: [PATCH] refactor: Remove the beta endpoint for Copilot usage --- github/copilot.go | 137 ------ github/copilot_test.go | 804 -------------------------------- github/github-accessors.go | 16 - github/github-accessors_test.go | 22 - 4 files changed, 979 deletions(-) diff --git a/github/copilot.go b/github/copilot.go index 19cfd977ceb..a2b2aa09953 100644 --- a/github/copilot.go +++ b/github/copilot.go @@ -66,39 +66,6 @@ type SeatCancellations struct { SeatsCancelled int `json:"seats_cancelled"` } -// CopilotUsageSummaryListOptions represents the optional parameters to the CopilotService.GetOrganizationUsage method. -type CopilotUsageSummaryListOptions struct { - Since *time.Time `url:"since,omitempty"` - Until *time.Time `url:"until,omitempty"` - - ListOptions -} - -// CopilotUsageBreakdown represents the breakdown of Copilot usage for a specific language and editor. -type CopilotUsageBreakdown struct { - Language string `json:"language"` - Editor string `json:"editor"` - SuggestionsCount int64 `json:"suggestions_count"` - AcceptancesCount int64 `json:"acceptances_count"` - LinesSuggested int64 `json:"lines_suggested"` - LinesAccepted int64 `json:"lines_accepted"` - ActiveUsers int `json:"active_users"` -} - -// CopilotUsageSummary represents the daily breakdown of aggregated usage metrics for Copilot completions and Copilot Chat in the IDE across an organization. -type CopilotUsageSummary struct { - Day string `json:"day"` - TotalSuggestionsCount int64 `json:"total_suggestions_count"` - TotalAcceptancesCount int64 `json:"total_acceptances_count"` - TotalLinesSuggested int64 `json:"total_lines_suggested"` - TotalLinesAccepted int64 `json:"total_lines_accepted"` - TotalActiveUsers int64 `json:"total_active_users"` - TotalChatAcceptances int64 `json:"total_chat_acceptances"` - TotalChatTurns int64 `json:"total_chat_turns"` - TotalActiveChatUsers int `json:"total_active_chat_users"` - Breakdown []*CopilotUsageBreakdown `json:"breakdown"` -} - // CopilotMetricsListOptions represents the optional parameters to the CopilotService get metrics methods. type CopilotMetricsListOptions struct { Since *time.Time `url:"since,omitempty"` @@ -498,110 +465,6 @@ func (s *CopilotService) GetSeatDetails(ctx context.Context, org, user string) ( return seatDetails, resp, nil } -// GetOrganizationUsage gets daily breakdown of aggregated usage metrics for Copilot completions and Copilot Chat in the IDE across an organization. -// -// GitHub API docs: https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-organization-members -// -//meta:operation GET /orgs/{org}/copilot/usage -func (s *CopilotService) GetOrganizationUsage(ctx context.Context, org string, opts *CopilotUsageSummaryListOptions) ([]*CopilotUsageSummary, *Response, error) { - u := fmt.Sprintf("orgs/%v/copilot/usage", org) - u, err := addOptions(u, opts) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", u, nil) - if err != nil { - return nil, nil, err - } - - var usage []*CopilotUsageSummary - resp, err := s.client.Do(ctx, req, &usage) - if err != nil { - return nil, resp, err - } - - return usage, resp, nil -} - -// GetEnterpriseUsage gets daily breakdown of aggregated usage metrics for Copilot completions and Copilot Chat in the IDE across an enterprise. -// -// GitHub API docs: https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-enterprise-members -// -//meta:operation GET /enterprises/{enterprise}/copilot/usage -func (s *CopilotService) GetEnterpriseUsage(ctx context.Context, enterprise string, opts *CopilotUsageSummaryListOptions) ([]*CopilotUsageSummary, *Response, error) { - u := fmt.Sprintf("enterprises/%v/copilot/usage", enterprise) - u, err := addOptions(u, opts) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", u, nil) - if err != nil { - return nil, nil, err - } - - var usage []*CopilotUsageSummary - resp, err := s.client.Do(ctx, req, &usage) - if err != nil { - return nil, resp, err - } - - return usage, resp, nil -} - -// GetEnterpriseTeamUsage gets daily breakdown of aggregated usage metrics for Copilot completions and Copilot Chat in the IDE for a team in the enterprise. -// -// GitHub API docs: https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-an-enterprise-team -// -//meta:operation GET /enterprises/{enterprise}/team/{team_slug}/copilot/usage -func (s *CopilotService) GetEnterpriseTeamUsage(ctx context.Context, enterprise, team string, opts *CopilotUsageSummaryListOptions) ([]*CopilotUsageSummary, *Response, error) { - u := fmt.Sprintf("enterprises/%v/team/%v/copilot/usage", enterprise, team) - u, err := addOptions(u, opts) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", u, nil) - if err != nil { - return nil, nil, err - } - - var usage []*CopilotUsageSummary - resp, err := s.client.Do(ctx, req, &usage) - if err != nil { - return nil, resp, err - } - - return usage, resp, nil -} - -// GetOrganizationTeamUsage gets daily breakdown of aggregated usage metrics for Copilot completions and Copilot Chat in the IDE for a team in the organization. -// -// GitHub API docs: https://docs.github.com/rest/copilot/copilot-usage#get-a-summary-of-copilot-usage-for-a-team -// -//meta:operation GET /orgs/{org}/team/{team_slug}/copilot/usage -func (s *CopilotService) GetOrganizationTeamUsage(ctx context.Context, org, team string, opts *CopilotUsageSummaryListOptions) ([]*CopilotUsageSummary, *Response, error) { - u := fmt.Sprintf("orgs/%v/team/%v/copilot/usage", org, team) - u, err := addOptions(u, opts) - if err != nil { - return nil, nil, err - } - - req, err := s.client.NewRequest("GET", u, nil) - if err != nil { - return nil, nil, err - } - - var usage []*CopilotUsageSummary - resp, err := s.client.Do(ctx, req, &usage) - if err != nil { - return nil, resp, err - } - - return usage, resp, nil -} - // GetEnterpriseMetrics gets Copilot usage metrics for an enterprise. // // GitHub API docs: https://docs.github.com/rest/copilot/copilot-metrics#get-copilot-metrics-for-an-enterprise diff --git a/github/copilot_test.go b/github/copilot_test.go index a299bf0735a..fd5efa9f0bf 100644 --- a/github/copilot_test.go +++ b/github/copilot_test.go @@ -1127,810 +1127,6 @@ func TestCopilotService_GetSeatDetails(t *testing.T) { }) } -func TestCopilotService_GetOrganisationUsage(t *testing.T) { - t.Parallel() - client, mux, _ := setup(t) - - mux.HandleFunc("/orgs/o/copilot/usage", func(w http.ResponseWriter, r *http.Request) { - testMethod(t, r, "GET") - fmt.Fprint(w, `[ - { - "day": "2023-10-15", - "total_suggestions_count": 1000, - "total_acceptances_count": 800, - "total_lines_suggested": 1800, - "total_lines_accepted": 1200, - "total_active_users": 10, - "total_chat_acceptances": 32, - "total_chat_turns": 200, - "total_active_chat_users": 4, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 250, - "lines_suggested": 900, - "lines_accepted": 700, - "active_users": 5 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 400, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 400, - "acceptances_count": 350, - "lines_suggested": 500, - "lines_accepted": 200, - "active_users": 3 - } - ] - }, - { - "day": "2023-10-16", - "total_suggestions_count": 800, - "total_acceptances_count": 600, - "total_lines_suggested": 1100, - "total_lines_accepted": 700, - "total_active_users": 12, - "total_chat_acceptances": 57, - "total_chat_turns": 426, - "total_active_chat_users": 8, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 600, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 150, - "lines_suggested": 300, - "lines_accepted": 250, - "active_users": 6 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 200, - "acceptances_count": 150, - "lines_suggested": 200, - "lines_accepted": 150, - "active_users": 3 - } - ] - } - ]`) - }) - - summaryOne := time.Date(2023, time.October, 15, 0, 0, 0, 0, time.UTC) - summaryTwoDate := time.Date(2023, time.October, 16, 0, 0, 0, 0, time.UTC) - ctx := context.Background() - got, _, err := client.Copilot.GetOrganizationUsage(ctx, "o", &CopilotUsageSummaryListOptions{}) - if err != nil { - t.Errorf("Copilot.GetOrganizationUsage returned error: %v", err) - } - - want := []*CopilotUsageSummary{ - { - Day: summaryOne.Format("2006-01-02"), - TotalSuggestionsCount: 1000, - TotalAcceptancesCount: 800, - TotalLinesSuggested: 1800, - TotalLinesAccepted: 1200, - TotalActiveUsers: 10, - TotalChatAcceptances: 32, - TotalChatTurns: 200, - TotalActiveChatUsers: 4, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 250, - LinesSuggested: 900, - LinesAccepted: 700, - ActiveUsers: 5, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 400, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 400, - AcceptancesCount: 350, - LinesSuggested: 500, - LinesAccepted: 200, - ActiveUsers: 3, - }, - }, - }, - { - Day: summaryTwoDate.Format("2006-01-02"), - TotalSuggestionsCount: 800, - TotalAcceptancesCount: 600, - TotalLinesSuggested: 1100, - TotalLinesAccepted: 700, - TotalActiveUsers: 12, - TotalChatAcceptances: 57, - TotalChatTurns: 426, - TotalActiveChatUsers: 8, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 600, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 150, - LinesSuggested: 300, - LinesAccepted: 250, - ActiveUsers: 6, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 200, - AcceptancesCount: 150, - LinesSuggested: 200, - LinesAccepted: 150, - ActiveUsers: 3, - }, - }, - }, - } - - if !cmp.Equal(got, want) { - t.Errorf("Copilot.GetOrganizationUsage returned %+v, want %+v", got, want) - } - - const methodName = "GetOrganizationUsage" - - testBadOptions(t, methodName, func() (err error) { - _, _, err = client.Copilot.GetOrganizationUsage(ctx, "\n", &CopilotUsageSummaryListOptions{}) - return err - }) - - testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Copilot.GetOrganizationUsage(ctx, "o", &CopilotUsageSummaryListOptions{}) - if got != nil { - t.Errorf("Copilot.GetOrganizationUsage returned %+v, want nil", got) - } - return resp, err - }) -} - -func TestCopilotService_GetEnterpriseUsage(t *testing.T) { - t.Parallel() - client, mux, _ := setup(t) - - mux.HandleFunc("/enterprises/e/copilot/usage", func(w http.ResponseWriter, r *http.Request) { - testMethod(t, r, "GET") - fmt.Fprint(w, `[ - { - "day": "2023-10-15", - "total_suggestions_count": 5000, - "total_acceptances_count": 3000, - "total_lines_suggested": 7000, - "total_lines_accepted": 3500, - "total_active_users": 15, - "total_chat_acceptances": 45, - "total_chat_turns": 350, - "total_active_chat_users": 8, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 3000, - "acceptances_count": 2000, - "lines_suggested": 3000, - "lines_accepted": 1500, - "active_users": 5 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 1000, - "acceptances_count": 500, - "lines_suggested": 2000, - "lines_accepted": 1000, - "active_users": 5 - }, - { - "language": "javascript", - "editor": "vscode", - "suggestions_count": 1000, - "acceptances_count": 500, - "lines_suggested": 2000, - "lines_accepted": 1000, - "active_users": 5 - } - ] - }, - { - "day": "2023-10-16", - "total_suggestions_count": 5200, - "total_acceptances_count": 5100, - "total_lines_suggested": 5300, - "total_lines_accepted": 5000, - "total_active_users": 15, - "total_chat_acceptances": 57, - "total_chat_turns": 455, - "total_active_chat_users": 12, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 3100, - "acceptances_count": 3000, - "lines_suggested": 3200, - "lines_accepted": 3100, - "active_users": 5 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 1100, - "acceptances_count": 1000, - "lines_suggested": 1200, - "lines_accepted": 1100, - "active_users": 5 - }, - { - "language": "javascript", - "editor": "vscode", - "suggestions_count": 1000, - "acceptances_count": 900, - "lines_suggested": 1100, - "lines_accepted": 1000, - "active_users": 5 - } - ] - } - ]`) - }) - - summaryOne := time.Date(2023, time.October, 15, 0, 0, 0, 0, time.UTC) - summaryTwoDate := time.Date(2023, time.October, 16, 0, 0, 0, 0, time.UTC) - ctx := context.Background() - got, _, err := client.Copilot.GetEnterpriseUsage(ctx, "e", &CopilotUsageSummaryListOptions{}) - if err != nil { - t.Errorf("Copilot.GetEnterpriseUsage returned error: %v", err) - } - - want := []*CopilotUsageSummary{ - { - Day: summaryOne.Format("2006-01-02"), - TotalSuggestionsCount: 5000, - TotalAcceptancesCount: 3000, - TotalLinesSuggested: 7000, - TotalLinesAccepted: 3500, - TotalActiveUsers: 15, - TotalChatAcceptances: 45, - TotalChatTurns: 350, - TotalActiveChatUsers: 8, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 3000, - AcceptancesCount: 2000, - LinesSuggested: 3000, - LinesAccepted: 1500, - ActiveUsers: 5, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 1000, - AcceptancesCount: 500, - LinesSuggested: 2000, - LinesAccepted: 1000, - ActiveUsers: 5, - }, - { - Language: "javascript", - Editor: "vscode", - SuggestionsCount: 1000, - AcceptancesCount: 500, - LinesSuggested: 2000, - LinesAccepted: 1000, - ActiveUsers: 5, - }, - }, - }, - { - Day: summaryTwoDate.Format("2006-01-02"), - TotalSuggestionsCount: 5200, - TotalAcceptancesCount: 5100, - TotalLinesSuggested: 5300, - TotalLinesAccepted: 5000, - TotalActiveUsers: 15, - TotalChatAcceptances: 57, - TotalChatTurns: 455, - TotalActiveChatUsers: 12, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 3100, - AcceptancesCount: 3000, - LinesSuggested: 3200, - LinesAccepted: 3100, - ActiveUsers: 5, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 1100, - AcceptancesCount: 1000, - LinesSuggested: 1200, - LinesAccepted: 1100, - ActiveUsers: 5, - }, - { - Language: "javascript", - Editor: "vscode", - SuggestionsCount: 1000, - AcceptancesCount: 900, - LinesSuggested: 1100, - LinesAccepted: 1000, - ActiveUsers: 5, - }, - }, - }, - } - - if !cmp.Equal(got, want) { - t.Errorf("Copilot.GetEnterpriseUsage returned %+v, want %+v", got, want) - } - - const methodName = "GetEnterpriseUsage" - - testBadOptions(t, methodName, func() (err error) { - _, _, err = client.Copilot.GetEnterpriseUsage(ctx, "\n", &CopilotUsageSummaryListOptions{}) - return err - }) - - testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Copilot.GetEnterpriseUsage(ctx, "e", &CopilotUsageSummaryListOptions{}) - if got != nil { - t.Errorf("Copilot.GetEnterpriseUsage returned %+v, want nil", got) - } - return resp, err - }) -} - -func TestCopilotService_GetEnterpriseTeamUsage(t *testing.T) { - t.Parallel() - client, mux, _ := setup(t) - - mux.HandleFunc("/enterprises/e/team/t/copilot/usage", func(w http.ResponseWriter, r *http.Request) { - testMethod(t, r, "GET") - fmt.Fprint(w, `[ - { - "day": "2023-10-15", - "total_suggestions_count": 1000, - "total_acceptances_count": 800, - "total_lines_suggested": 1800, - "total_lines_accepted": 1200, - "total_active_users": 10, - "total_chat_acceptances": 32, - "total_chat_turns": 200, - "total_active_chat_users": 4, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 250, - "lines_suggested": 900, - "lines_accepted": 700, - "active_users": 5 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 400, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 400, - "acceptances_count": 350, - "lines_suggested": 500, - "lines_accepted": 200, - "active_users": 3 - } - ] - }, - { - "day": "2023-10-16", - "total_suggestions_count": 800, - "total_acceptances_count": 600, - "total_lines_suggested": 1100, - "total_lines_accepted": 700, - "total_active_users": 12, - "total_chat_acceptances": 57, - "total_chat_turns": 426, - "total_active_chat_users": 8, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 600, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 150, - "lines_suggested": 300, - "lines_accepted": 250, - "active_users": 6 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 200, - "acceptances_count": 150, - "lines_suggested": 200, - "lines_accepted": 150, - "active_users": 3 - } - ] - } - ]`) - }) - - summaryOne := time.Date(2023, time.October, 15, 0, 0, 0, 0, time.UTC) - summaryTwoDate := time.Date(2023, time.October, 16, 0, 0, 0, 0, time.UTC) - ctx := context.Background() - got, _, err := client.Copilot.GetEnterpriseTeamUsage(ctx, "e", "t", &CopilotUsageSummaryListOptions{}) - if err != nil { - t.Errorf("Copilot.GetEnterpriseTeamUsage returned error: %v", err) - } - - want := []*CopilotUsageSummary{ - { - Day: summaryOne.Format("2006-01-02"), - TotalSuggestionsCount: 1000, - TotalAcceptancesCount: 800, - TotalLinesSuggested: 1800, - TotalLinesAccepted: 1200, - TotalActiveUsers: 10, - TotalChatAcceptances: 32, - TotalChatTurns: 200, - TotalActiveChatUsers: 4, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 250, - LinesSuggested: 900, - LinesAccepted: 700, - ActiveUsers: 5, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 400, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 400, - AcceptancesCount: 350, - LinesSuggested: 500, - LinesAccepted: 200, - ActiveUsers: 3, - }, - }, - }, - { - Day: summaryTwoDate.Format("2006-01-02"), - TotalSuggestionsCount: 800, - TotalAcceptancesCount: 600, - TotalLinesSuggested: 1100, - TotalLinesAccepted: 700, - TotalActiveUsers: 12, - TotalChatAcceptances: 57, - TotalChatTurns: 426, - TotalActiveChatUsers: 8, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 600, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 150, - LinesSuggested: 300, - LinesAccepted: 250, - ActiveUsers: 6, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 200, - AcceptancesCount: 150, - LinesSuggested: 200, - LinesAccepted: 150, - ActiveUsers: 3, - }, - }, - }, - } - - if !cmp.Equal(got, want) { - t.Errorf("Copilot.GetEnterpriseTeamUsage returned %+v, want %+v", got, want) - } - - const methodName = "GetEnterpriseTeamUsage" - - testBadOptions(t, methodName, func() (err error) { - _, _, err = client.Copilot.GetEnterpriseTeamUsage(ctx, "\n", "\n", &CopilotUsageSummaryListOptions{}) - return err - }) - - testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Copilot.GetEnterpriseTeamUsage(ctx, "e", "t", &CopilotUsageSummaryListOptions{}) - if got != nil { - t.Errorf("Copilot.GetEnterpriseTeamUsage returned %+v, want nil", got) - } - return resp, err - }) -} - -func TestCopilotService_GetOrganizationTeamUsage(t *testing.T) { - t.Parallel() - client, mux, _ := setup(t) - - mux.HandleFunc("/orgs/o/team/t/copilot/usage", func(w http.ResponseWriter, r *http.Request) { - testMethod(t, r, "GET") - fmt.Fprint(w, `[ - { - "day": "2023-10-15", - "total_suggestions_count": 1000, - "total_acceptances_count": 800, - "total_lines_suggested": 1800, - "total_lines_accepted": 1200, - "total_active_users": 10, - "total_chat_acceptances": 32, - "total_chat_turns": 200, - "total_active_chat_users": 4, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 250, - "lines_suggested": 900, - "lines_accepted": 700, - "active_users": 5 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 400, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 400, - "acceptances_count": 350, - "lines_suggested": 500, - "lines_accepted": 200, - "active_users": 3 - } - ] - }, - { - "day": "2023-10-16", - "total_suggestions_count": 800, - "total_acceptances_count": 600, - "total_lines_suggested": 1100, - "total_lines_accepted": 700, - "total_active_users": 12, - "total_chat_acceptances": 57, - "total_chat_turns": 426, - "total_active_chat_users": 8, - "breakdown": [ - { - "language": "python", - "editor": "vscode", - "suggestions_count": 300, - "acceptances_count": 200, - "lines_suggested": 600, - "lines_accepted": 300, - "active_users": 2 - }, - { - "language": "python", - "editor": "jetbrains", - "suggestions_count": 300, - "acceptances_count": 150, - "lines_suggested": 300, - "lines_accepted": 250, - "active_users": 6 - }, - { - "language": "ruby", - "editor": "vscode", - "suggestions_count": 200, - "acceptances_count": 150, - "lines_suggested": 200, - "lines_accepted": 150, - "active_users": 3 - } - ] - } - ]`) - }) - - summaryOne := time.Date(2023, time.October, 15, 0, 0, 0, 0, time.UTC) - summaryTwoDate := time.Date(2023, time.October, 16, 0, 0, 0, 0, time.UTC) - ctx := context.Background() - got, _, err := client.Copilot.GetOrganizationTeamUsage(ctx, "o", "t", &CopilotUsageSummaryListOptions{}) - if err != nil { - t.Errorf("Copilot.GetOrganizationTeamUsage returned error: %v", err) - } - - want := []*CopilotUsageSummary{ - { - Day: summaryOne.Format("2006-01-02"), - TotalSuggestionsCount: 1000, - TotalAcceptancesCount: 800, - TotalLinesSuggested: 1800, - TotalLinesAccepted: 1200, - TotalActiveUsers: 10, - TotalChatAcceptances: 32, - TotalChatTurns: 200, - TotalActiveChatUsers: 4, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 250, - LinesSuggested: 900, - LinesAccepted: 700, - ActiveUsers: 5, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 400, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 400, - AcceptancesCount: 350, - LinesSuggested: 500, - LinesAccepted: 200, - ActiveUsers: 3, - }, - }, - }, - { - Day: summaryTwoDate.Format("2006-01-02"), - TotalSuggestionsCount: 800, - TotalAcceptancesCount: 600, - TotalLinesSuggested: 1100, - TotalLinesAccepted: 700, - TotalActiveUsers: 12, - TotalChatAcceptances: 57, - TotalChatTurns: 426, - TotalActiveChatUsers: 8, - Breakdown: []*CopilotUsageBreakdown{ - { - Language: "python", - Editor: "vscode", - SuggestionsCount: 300, - AcceptancesCount: 200, - LinesSuggested: 600, - LinesAccepted: 300, - ActiveUsers: 2, - }, - { - Language: "python", - Editor: "jetbrains", - SuggestionsCount: 300, - AcceptancesCount: 150, - LinesSuggested: 300, - LinesAccepted: 250, - ActiveUsers: 6, - }, - { - Language: "ruby", - Editor: "vscode", - SuggestionsCount: 200, - AcceptancesCount: 150, - LinesSuggested: 200, - LinesAccepted: 150, - ActiveUsers: 3, - }, - }, - }, - } - - if !cmp.Equal(got, want) { - t.Errorf("Copilot.GetOrganizationTeamUsage returned %+v, want %+v", got, want) - } - - const methodName = "GetOrganizationTeamUsage" - - testBadOptions(t, methodName, func() (err error) { - _, _, err = client.Copilot.GetOrganizationTeamUsage(ctx, "\n", "\n", &CopilotUsageSummaryListOptions{}) - return err - }) - - testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) { - got, resp, err := client.Copilot.GetOrganizationTeamUsage(ctx, "o", "t", &CopilotUsageSummaryListOptions{}) - if got != nil { - t.Errorf("Copilot.GetOrganizationTeamUsage returned %+v, want nil", got) - } - return resp, err - }) -} - func TestCopilotService_GetEnterpriseMetrics(t *testing.T) { t.Parallel() client, mux, _ := setup(t) diff --git a/github/github-accessors.go b/github/github-accessors.go index 0c7f150ed7e..0782ba2f326 100644 --- a/github/github-accessors.go +++ b/github/github-accessors.go @@ -4454,22 +4454,6 @@ func (c *CopilotSeatDetails) GetUpdatedAt() Timestamp { return *c.UpdatedAt } -// GetSince returns the Since field if it's non-nil, zero value otherwise. -func (c *CopilotUsageSummaryListOptions) GetSince() time.Time { - if c == nil || c.Since == nil { - return time.Time{} - } - return *c.Since -} - -// GetUntil returns the Until field if it's non-nil, zero value otherwise. -func (c *CopilotUsageSummaryListOptions) GetUntil() time.Time { - if c == nil || c.Until == nil { - return time.Time{} - } - return *c.Until -} - // GetCompletedAt returns the CompletedAt field if it's non-nil, zero value otherwise. func (c *CreateCheckRunOptions) GetCompletedAt() Timestamp { if c == nil || c.CompletedAt == nil { diff --git a/github/github-accessors_test.go b/github/github-accessors_test.go index 28d75f3e3f3..b0a96dea810 100644 --- a/github/github-accessors_test.go +++ b/github/github-accessors_test.go @@ -5766,28 +5766,6 @@ func TestCopilotSeatDetails_GetUpdatedAt(tt *testing.T) { c.GetUpdatedAt() } -func TestCopilotUsageSummaryListOptions_GetSince(tt *testing.T) { - tt.Parallel() - var zeroValue time.Time - c := &CopilotUsageSummaryListOptions{Since: &zeroValue} - c.GetSince() - c = &CopilotUsageSummaryListOptions{} - c.GetSince() - c = nil - c.GetSince() -} - -func TestCopilotUsageSummaryListOptions_GetUntil(tt *testing.T) { - tt.Parallel() - var zeroValue time.Time - c := &CopilotUsageSummaryListOptions{Until: &zeroValue} - c.GetUntil() - c = &CopilotUsageSummaryListOptions{} - c.GetUntil() - c = nil - c.GetUntil() -} - func TestCreateCheckRunOptions_GetCompletedAt(tt *testing.T) { tt.Parallel() var zeroValue Timestamp