Skip to content

Commit

Permalink
chore: Add Account Capabilities API
Browse files Browse the repository at this point in the history
Signed-off-by: Bruno Gaspar <[email protected]>
  • Loading branch information
brunogaspar committed Dec 21, 2019
1 parent ee264af commit 74644ce
Show file tree
Hide file tree
Showing 3 changed files with 181 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/Api/Account.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,14 @@ public function accountLinks()
{
return new Account\AccountLink($this->config);
}

/**
* Returns an account capabilities api instance.
*
* @return \Cartalyst\Stripe\Api\Account\Capabilities
*/
public function capabilities()
{
return new Account\Capabilities($this->config);
}
}
63 changes: 63 additions & 0 deletions src/Api/Account/Capabilities.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

/**
* Part of the Stripe package.
*
* NOTICE OF LICENSE
*
* Licensed under the 3-clause BSD License.
*
* This source file is subject to the 3-clause BSD License that is
* bundled with this package in the LICENSE file.
*
* @package Stripe
* @version 2.3.0
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2019, Cartalyst LLC
* @link http://cartalyst.com
*/

namespace Cartalyst\Stripe\Api\Account;

use Cartalyst\Stripe\Api\Api;

class Capabilities extends Api
{
/**
* Retrieves an existing capability.
*
* @param string $accountId
* @param string $capabilityId
* @return array
*/
public function find($accountId, $capabilityId)
{
return $this->_get("accounts/{$accountId}/capabilities/{$capabilityId}");
}

/**
* Updates an existing capability.
*
* @param string $accountId
* @param string $capabilityId
* @param array $parameters
* @return array
*/
public function update($accountId, $capabilityId, array $parameters = [])
{
return $this->_post("accounts/{$accountId}/capabilities/{$capabilityId}", $parameters);
}

/**
* Lists all capabilities.
*
* @param string $accountId
* @param array $parameters
* @return array
*/
public function all($accountId, array $parameters = [])
{
return $this->_get("accounts/{$accountId}/capabilities", $parameters);
}
}
108 changes: 108 additions & 0 deletions tests/Api/Account/CapabilitiesTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?php

/**
* Part of the Stripe package.
*
* NOTICE OF LICENSE
*
* Licensed under the 3-clause BSD License.
*
* This source file is subject to the 3-clause BSD License that is
* bundled with this package in the LICENSE file.
*
* @package Stripe
* @version 2.3.0
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2019, Cartalyst LLC
* @link http://cartalyst.com
*/

namespace Cartalyst\Stripe\Tests\Api\Account;

use Cartalyst\Stripe\Tests\FunctionalTestCase;

class CapabilitiesTest extends FunctionalTestCase
{
/** @test */
public function it_can_find_an_existing_capability()
{
$email = $this->getRandomEmail();

$account = $this->stripe->account()->create([
'type' => 'custom',
'email' => $email,
'requested_capabilities' => [
'card_payments',
],
]);

$capability = $this->stripe->account()->capabilities()->find($account['id'], 'card_payments');

$this->assertSame($account['id'], $capability['account']);
$this->assertSame('card_payments', $capability['id']);
$this->assertSame('inactive', $capability['status']);
}

/**
* @test
* @expectedException \Cartalyst\Stripe\Exception\NotFoundException
*/
public function it_will_throw_an_exception_when_searching_for_a_non_existing_capability()
{
$email = $this->getRandomEmail();

$account = $this->stripe->account()->create([
'type' => 'custom',
'email' => $email,
'requested_capabilities' => [
'card_payments',
'transfers',
],
]);

$this->stripe->account()->capabilities()->find($account['id'], time().rand());
}

/** @test */
public function it_can_update_a_capability()
{
$email = $this->getRandomEmail();

$account = $this->stripe->account()->create([
'type' => 'custom',
'email' => $email,
'requested_capabilities' => [
'card_payments',
],
]);

$capability = $this->stripe->account()->capabilities()->update($account['id'], 'card_payments', [
'requested' => true,
]);

$this->assertSame($account['id'], $capability['account']);
$this->assertSame('card_payments', $capability['id']);
$this->assertSame('inactive', $capability['status']);
}

/** @test */
public function it_can_retrieve_all_capabilities()
{
$email = $this->getRandomEmail();

$account = $this->stripe->account()->create([
'type' => 'custom',
'email' => $email,
'requested_capabilities' => [
'card_payments',
'transfers',
],
]);

$capabilities = $this->stripe->account()->capabilities()->all($account['id']);

$this->assertNotEmpty($capabilities['data']);
$this->assertInternalType('array', $capabilities['data']);
}
}

0 comments on commit 74644ce

Please sign in to comment.