diff --git a/lib/SubscriptionItem.php b/lib/SubscriptionItem.php index f78f8fea0..44ba738d4 100644 --- a/lib/SubscriptionItem.php +++ b/lib/SubscriptionItem.php @@ -21,12 +21,27 @@ class SubscriptionItem extends ApiResource { const OBJECT_NAME = "subscription_item"; + const PATH_USAGE_RECORDS = '/usage_records'; + use ApiOperations\All; use ApiOperations\Create; use ApiOperations\Delete; + use ApiOperations\NestedResource; use ApiOperations\Retrieve; use ApiOperations\Update; + /** + * @param string|null $id The ID of the subscription item on which to create the usage record. + * @param array|null $params + * @param array|string|null $opts + * + * @return ApiResource + */ + public static function createUsageRecord($id, $params = null, $opts = null) + { + return self::_createNestedResource($id, static::PATH_USAGE_RECORDS, $params, $opts); + } + /** * @param array|null $params * @param array|string|null $options diff --git a/lib/UsageRecord.php b/lib/UsageRecord.php index 1239222d4..45dabb53f 100644 --- a/lib/UsageRecord.php +++ b/lib/UsageRecord.php @@ -17,27 +17,4 @@ class UsageRecord extends ApiResource { const OBJECT_NAME = "usage_record"; - - /** - * @param array|null $params - * @param array|string|null $options - * - * @return \Stripe\ApiResource The created resource. - */ - public static function create($params = null, $options = null) - { - self::_validateParams($params); - if (!array_key_exists('subscription_item', $params)) { - throw new Error\InvalidRequest("Missing subscription_item param in request", null); - } - $subscription_item = $params['subscription_item']; - $url = "/v1/subscription_items/$subscription_item/usage_records"; - $request_params = $params; - unset($request_params['subscription_item']); - - list($response, $opts) = static::_staticRequest('post', $url, $request_params, $options); - $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts); - $obj->setLastResponse($response); - return $obj; - } } diff --git a/tests/Stripe/SubscriptionItemTest.php b/tests/Stripe/SubscriptionItemTest.php index 15a496c65..be514ae80 100644 --- a/tests/Stripe/SubscriptionItemTest.php +++ b/tests/Stripe/SubscriptionItemTest.php @@ -80,6 +80,19 @@ public function testIsDeletable() $this->assertInstanceOf(\Stripe\SubscriptionItem::class, $resource); } + public function testCanCreateUsageRecord() + { + $this->expectsRequest( + 'post', + '/v1/subscription_items/' . self::TEST_RESOURCE_ID . '/usage_records' + ); + $resource = SubscriptionItem::createUsageRecord(self::TEST_RESOURCE_ID, [ + 'quantity' => 100, + 'timestamp' => 12341234, + 'action' => 'set', + ]); + } + public function testCanListUsageRecordSummaries() { $resource = SubscriptionItem::retrieve(self::TEST_RESOURCE_ID); diff --git a/tests/Stripe/UsageRecordTest.php b/tests/Stripe/UsageRecordTest.php deleted file mode 100644 index efff6d884..000000000 --- a/tests/Stripe/UsageRecordTest.php +++ /dev/null @@ -1,35 +0,0 @@ -expectsRequest( - 'post', - '/v1/subscription_items/si_123/usage_records' - ); - $resource = UsageRecord::create([ - 'subscription_item' => 'si_123', - 'quantity' => 100, - 'timestamp' => 12341234, - 'action' => 'set' - ]); - $this->assertInstanceOf(\Stripe\UsageRecord::class, $resource); - } - - /** - * @expectedException \Stripe\Error\InvalidRequest - */ - public function testThrowsIfSubscriptionItemIsMissing() - { - UsageRecord::create([ - 'quantity' => 100, - 'timestamp' => 12341234, - 'action' => 'set' - ]); - } -}