Skip to content

Commit

Permalink
Merge deaba00 into a958077
Browse files Browse the repository at this point in the history
  • Loading branch information
XaosSintez committed Nov 18, 2019
2 parents a958077 + deaba00 commit 7d63991
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/Entities/Schema.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@ public function __construct()
'subscriptions/{subscriptionId}/interim-invoice' => function (array $content) {
return new Invoice($content);
},
'subscriptions/{subscriptionId}/upcoming-invoices' => function (array $content) {
return new Collection(new Invoice(), $content);
},
'subscriptions/{subscriptionId}/lead-source' => function (array $content) {
return new LeadSource($content);
},
Expand Down
32 changes: 32 additions & 0 deletions src/Services/SubscriptionService.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,36 @@ public function issueInterimInvoice($subscriptionId, $data)
['subscriptionId' => $subscriptionId]
);
}

/**
* @param string $subscriptionId
* @param array|ArrayObject $params
*
* @return Invoice[]|Collection
*/
public function searchUpcomingInvoices($subscriptionId, $params = [])
{
return $this->client()->get(
'subscriptions/{subscriptionId}/upcoming-invoices',
['subscriptionId' => $subscriptionId] + (array) $params
);
}

/**
* @param string $subscriptionId
* @param string $invoiceId
*
* @return Invoice
*/
public function issueUpcomingInvoice($subscriptionId, $invoiceId)
{
return $this->client()->post(
[],
'subscriptions/{subscriptionId}/upcoming-invoices/{invoiceId}/issue',
[
'subscriptionId' => $subscriptionId,
'invoiceId' => $invoiceId,
]
);
}
}
30 changes: 30 additions & 0 deletions tests/Api/ServiceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,36 @@ public function subscriptionService()

$result = $service->issueInterimInvoice('dummy', []);
$this->assertInstanceOf(Entities\Subscription::class, $result);

$result = $service->issueUpcomingInvoice('dummy', 'invoice-1');
$this->assertInstanceOf(Entities\Subscription::class, $result);
}

/**
* @test
*/
public function searchUpcomingInvoices()
{
$client = new Client(['apiKey' => 'QWERTY']);

/** @var CurlHandler|MockObject $handler */
$handler = $this->createMock(CurlHandler::class);

$handler
->expects($this->any())
->method('__invoke')
->will($this->returnValue(
$client->createResponse()->withHeader('Location', 'subscriptions/subscription-1/upcoming-invoices')
));

$client = new Client([
'apiKey' => 'QWERTY',
'httpHandler' => $handler,
]);
$service = $client->subscriptions();

$result = $service->searchUpcomingInvoices('subscription-1');
$this->assertInstanceOf(Rest\Collection::class, $result);
}

/**
Expand Down

0 comments on commit 7d63991

Please sign in to comment.