Skip to content

Commit

Permalink
Add Copilot usage endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
anthony-webart committed Sep 3, 2024
1 parent 71fec50 commit f4e822e
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
28 changes: 28 additions & 0 deletions lib/Github/Api/Copilot/Usage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace Github\Api\Copilot;

use Github\Api\AbstractApi;

class Usage extends AbstractApi
{
public function orgUsageSummary(string $organization, array $params = []): array
{
return $this->get('/orgs/' . rawurlencode($organization) . '/copilot/usage', $params);
}

public function orgTeamUsageSummary(string $organization, string $teamSlug, array $params = []): array
{
return $this->get('/orgs/' . rawurlencode($organization) . '/teams/' . rawurlencode($teamSlug) . '/copilot/usage', $params);
}

public function enterpriseUsageSummary(string $enterprise, array $params = []): array
{
return $this->get('/enterprises/' . rawurlencode($enterprise) . '/copilot/usage', $params);
}

public function enterpriseTeamUsageSummary(string $enterprise, string $teamSlug, array $params = []): array
{
return $this->get('/enterprises/' . rawurlencode($enterprise) . '/teams/' . rawurlencode($teamSlug) . '/copilot/usage', $params);
}
}
5 changes: 5 additions & 0 deletions lib/Github/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,11 @@ public function api($name): AbstractApi
$api = new Api\Organization\OutsideCollaborators($this);
break;

case 'copilotUsage':
case 'copilot_usage':
$api = new Api\Copilot\Usage($this);
break;

default:
throw new InvalidArgumentException(sprintf('Undefined api instance called: "%s"', $name));
}
Expand Down
78 changes: 78 additions & 0 deletions test/Github/Tests/Api/Copilot/UsageTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

namespace Github\Tests\Api\Copilot;

use Github\Api\Copilot\Usage;
use Github\Tests\Api\TestCase;

class UsageTest extends TestCase
{
/**
* @test
*/
public function shouldGetOrgUsageSummary(): void
{
$expectedValue = ['usage1', 'usage2'];

$api = $this->getApiMock();
$api->expects($this->once())
->method('get')
->with('/orgs/KnpLabs/copilot/usage', [])
->will($this->returnValue($expectedValue));

$this->assertEquals($expectedValue, $api->orgUsageSummary('KnpLabs'));
}

/**
* @test
*/
public function shouldGetOrgTeamUsageSummary(): void
{
$expectedValue = ['usage1', 'usage2'];

$api = $this->getApiMock();
$api->expects($this->once())
->method('get')
->with('/orgs/KnpLabs/teams/php-github-api/copilot/usage', [])
->will($this->returnValue($expectedValue));

$this->assertEquals($expectedValue, $api->orgTeamUsageSummary('KnpLabs', 'php-github-api'));
}

/**
* @test
*/
public function shouldGetEnterpriseUsageSummary(): void
{
$expectedValue = ['usage1', 'usage2'];

$api = $this->getApiMock();
$api->expects($this->once())
->method('get')
->with('/enterprises/KnpLabs/copilot/usage', [])
->will($this->returnValue($expectedValue));

$this->assertEquals($expectedValue, $api->enterpriseUsageSummary('KnpLabs'));
}

/**
* @test
*/
public function shouldGetEnterpriseTeamUsageSummary(): void
{
$expectedValue = ['usage1', 'usage2'];

$api = $this->getApiMock();
$api->expects($this->once())
->method('get')
->with('/enterprises/KnpLabs/teams/php-github-api/copilot/usage', [])
->will($this->returnValue($expectedValue));

$this->assertEquals($expectedValue, $api->enterpriseTeamUsageSummary('KnpLabs', 'php-github-api'));
}

protected function getApiClass(): string
{
return Usage::class;
}
}

0 comments on commit f4e822e

Please sign in to comment.