{"action":"created","comment":{"url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/comments/79394226","id":79394226,"diff_hunk":"@@ -0,0 +1,267 @@\n+<?php\n+\n+namespace Drupal\\Tests\\commerce_order\\Kernel;\n+\n+use Drupal\\commerce_order\\Entity\\Order;\n+use Drupal\\commerce_order\\Entity\\OrderType;\n+use Drupal\\commerce_price\\Price;\n+use Drupal\\commerce_product\\Entity\\Product;\n+use Drupal\\commerce_product\\Entity\\ProductVariation;\n+use Drupal\\commerce_store\\Entity\\Store;\n+use Drupal\\KernelTests\\Core\\Entity\\EntityKernelTestBase;\n+use Drupal\\profile\\Entity\\Profile;\n+\n+/**\n+ * Tests the order refresh process.\n+ *\n+ * @group commerce\n+ */\n+class OrderRefreshTest extends EntityKernelTestBase {\n+\n+  /**\n+   * A sample user.\n+   *\n+   * @var \\Drupal\\user\\UserInterface\n+   */\n+  protected $user;\n+\n+  /**\n+   * A sample store.\n+   *\n+   * @var \\Drupal\\commerce_store\\Entity\\StoreInterface\n+   */\n+  protected $store;\n+\n+  /**\n+   * A sample order.\n+   *\n+   * @var \\Drupal\\commerce_order\\Entity\\OrderInterface\n+   */\n+  protected $order;\n+\n+  /**\n+   * A sample variation.\n+   *\n+   * Has a SKU which will flag availability service removal.\n+   *\n+   * @var \\Drupal\\commerce_product\\Entity\\ProductVariationInterface\n+   */\n+  protected $variation1;\n+\n+  /**\n+   * A sample variation.\n+   *\n+   * @var \\Drupal\\commerce_product\\Entity\\ProductVariationInterface\n+   */\n+  protected $variation2;\n+\n+  /**\n+   * @var \\Drupal\\commerce_order\\LineItemStorageInterface\n+   */\n+  protected $lineItemStorage;\n+\n+  /**\n+   * Modules to enable.\n+   *\n+   * @var array\n+   */\n+  public static $modules = [\n+    'system', 'field', 'options', 'user', 'entity', 'path',\n+    'views', 'address', 'profile', 'state_machine',\n+    'inline_entity_form', 'commerce', 'commerce_price',\n+    'commerce_store', 'commerce_product',\n+    'commerce_order', 'commerce_test',\n+  ];\n+\n+  /**\n+   * {@inheritdoc}\n+   */\n+  protected function setUp() {\n+    parent::setUp();\n+    $this->installSchema('system', 'router');\n+    $this->installEntitySchema('user');\n+    $this->installEntitySchema('profile');\n+    $this->installEntitySchema('commerce_store');\n+    $this->installEntitySchema('commerce_order');\n+    $this->installEntitySchema('commerce_line_item');\n+    $this->installEntitySchema('commerce_product');\n+    $this->installEntitySchema('commerce_product_variation');\n+    $this->installConfig(['commerce_product', 'commerce_order']);\n+\n+    $user = $this->createUser();\n+    $this->user = $this->reloadEntity($user);\n+\n+    $this->lineItemStorage = $this->container->get('entity_type.manager')\n+      ->getStorage('commerce_line_item');\n+\n+    $store = Store::create([\n+      'type' => 'default',\n+      'name' => 'Sample store',\n+      'default_currency' => 'USD',\n+    ]);\n+    $store->save();\n+    $this->store = $this->reloadEntity($store);\n+\n+    $product = Product::create([\n+      'type' => 'default',\n+      'title' => 'Default testing product',\n+    ]);\n+    $product->save();\n+\n+    $variation1 = ProductVariation::create([\n+      'type' => 'default',\n+      'sku' => 'TEST_' . strtolower($this->randomMachineName()),\n+      'title' => $this->randomString(),\n+      'status' => 0,\n+      'price' => new Price('2.00', 'USD'),\n+    ]);\n+    $variation1->save();\n+    $product->addVariation($variation1)->save();\n+    $this->variation1 = $this->reloadEntity($variation1);\n+    // Save variation again to generate its title.\n+    $variation1->save();\n+\n+    $variation2 = ProductVariation::create([\n+      'type' => 'default',\n+      'sku' => strtolower($this->randomMachineName()),\n+      'title' => $this->randomString(),\n+      'status' => 1,\n+      'price' => new Price('3.00', 'USD'),\n+    ]);\n+    $variation2->save();\n+    $product->addVariation($variation2)->save();\n+    $this->variation2 = $this->reloadEntity($variation2);\n+    // Save variation again to generate its title.\n+    $variation2->save();\n+\n+    $profile = Profile::create([\n+      'type' => 'billing',\n+    ]);\n+    $profile->save();\n+    $profile = $this->reloadEntity($profile);\n+\n+    /** @var \\Drupal\\commerce_order\\Entity\\Order $order */\n+    $order = Order::create([\n+      'type' => 'default',\n+      'state' => 'draft',\n+      'mail' => $this->user->getEmail(),\n+      'uid' => 0,\n+      'ip_address' => '127.0.0.1',\n+      'order_number' => '6',\n+      'billing_profile' => $profile->id(),\n+      'store_id' => $this->store->id(),\n+    ]);\n+    $order->save();\n+    $this->order = $this->reloadEntity($order);\n+  }\n+\n+  /**\n+   * Tests the \"needsRefresh\" method and refresh settings.\n+   *\n+   * @group failing\n+   */\n+  public function testOrderCanRefresh() {\n+    $refresher = $this->container->get('commerce_order.order_refresh');\n+\n+    $line_item = $this->lineItemStorage->createFromPurchasableEntity($this->variation2, [\n+      'unit_price' => new Price('2.00', 'USD'),\n+    ]);\n+    $line_item->save();\n+    $line_item = $this->reloadEntity($line_item);\n+    $this->order->addLineItem($line_item);\n+    $this->order->save();\n+\n+    $this->assertFalse($refresher->needsRefresh($this->order));\n+\n+    $order_type = OrderType::load($this->order->bundle());\n+    $order_type->setRefreshFrequency(1)->save();\n+\n+    sleep(1);\n+    $this->assertTrue($refresher->needsRefresh($this->order));\n+\n+    $order_type->setRefreshMode(OrderType::REFRESH_OWNER)->save();\n+    $this->container->get('current_user')->setAccount($this->user);\n+\n+    sleep(1);\n+    $this->assertFalse($refresher->needsRefresh($this->order));\n+    $this->order->setOwner($this->user);\n+    $this->assertTrue($refresher->needsRefresh($this->order));\n+  }\n+\n+  /**\n+   * Tests that a line item's title is updated based on product changes.\n+   */\n+  public function testLineItemTitleUpdate() {\n+    $line_item = $this->lineItemStorage->createFromPurchasableEntity($this->variation2, [\n+      'unit_price' => new Price('2.00', 'USD'),\n+    ]);\n+    $line_item->save();\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $this->assertEquals($line_item->label(), 'Default testing product');\n+    $this->order->addLineItem($line_item);\n+    $this->order->save();\n+\n+    $this->variation2->getProduct()->setTitle('Changed title')->save();\n+    $this->variation2->save();\n+    $this->container->get('commerce_order.order_refresh')->refresh($this->order);\n+\n+    $this->variation2 = $this->reloadEntity($this->variation2);\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $this->assertEquals($line_item->label(), 'Changed title');\n+  }\n+\n+  /**\n+   * Tests that a line item's unit price is set and updated on refresh.\n+   */\n+  public function testUnitPriceRefresh() {\n+    /** @var \\Drupal\\commerce_order\\Entity\\LineItemInterface $line_item */\n+    $line_item = $this->lineItemStorage->createFromPurchasableEntity($this->variation2);\n+    $line_item->save();\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $this->order->addLineItem($line_item);\n+    $this->order->save();\n+    $this->container->get('commerce_order.order_refresh')->refresh($this->order);\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $this->assertEquals($this->variation2->getPrice(), $line_item->getUnitPrice());\n+\n+    $this->variation2->setPrice(new Price('12.00', 'USD'))->save();\n+\n+    $this->container->get('commerce_order.order_refresh')->refresh($this->order);\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $this->assertEquals($this->variation2->getPrice(), $line_item->getUnitPrice());\n+  }\n+\n+  /**\n+   * Tests the order refresh process, with the availability processor.\n+   */\n+  public function testAvailabilityOrderRefreshProcessor() {\n+\n+    $line_item = $this->lineItemStorage->createFromPurchasableEntity($this->variation1, [\n+      'unit_price' => new Price('2.00', 'USD'),\n+    ]);\n+    $line_item->save();\n+    $line_item = $this->reloadEntity($line_item);\n+\n+    $another_line_item = $this->lineItemStorage->createFromPurchasableEntity($this->variation2, [\n+      'unit_price' => new Price('3.00', 'USD'),\n+      'quantity' => '2',\n+\n+    ]);\n+    $another_line_item->save();\n+    $another_line_item = $this->reloadEntity($another_line_item);\n+\n+    $this->order->setLineItems([$line_item, $another_line_item])->save();\n+","path":"modules/order/tests/src/Kernel/OrderRefreshTest.php","position":259,"original_position":259,"commit_id":"5fb150a68ffb52fe69581417dcca7e34d3b5306b","original_commit_id":"5fb150a68ffb52fe69581417dcca7e34d3b5306b","user":{"login":"bojanz","id":330162,"avatar_url":"https://avatars.githubusercontent.com/u/330162?v=3","gravatar_id":"","url":"https://api.github.com/users/bojanz","html_url":"https://github.com/bojanz","followers_url":"https://api.github.com/users/bojanz/followers","following_url":"https://api.github.com/users/bojanz/following{/other_user}","gists_url":"https://api.github.com/users/bojanz/gists{/gist_id}","starred_url":"https://api.github.com/users/bojanz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bojanz/subscriptions","organizations_url":"https://api.github.com/users/bojanz/orgs","repos_url":"https://api.github.com/users/bojanz/repos","events_url":"https://api.github.com/users/bojanz/events{/privacy}","received_events_url":"https://api.github.com/users/bojanz/received_events","type":"User","site_admin":false},"body":"Unneeded newline between the method call and the result checking.","created_at":"2016-09-19T13:48:07Z","updated_at":"2016-09-19T13:48:07Z","html_url":"https://github.com/drupalcommerce/commerce/pull/491#discussion_r79394226","pull_request_url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491","_links":{"self":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/comments/79394226"},"html":{"href":"https://github.com/drupalcommerce/commerce/pull/491#discussion_r79394226"},"pull_request":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491"}}},"pull_request":{"url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491","id":85331805,"html_url":"https://github.com/drupalcommerce/commerce/pull/491","diff_url":"https://github.com/drupalcommerce/commerce/pull/491.diff","patch_url":"https://github.com/drupalcommerce/commerce/pull/491.patch","issue_url":"https://api.github.com/repos/drupalcommerce/commerce/issues/491","number":491,"state":"open","locked":false,"title":"#2800223 Create an order refresh process","user":{"login":"mglaman","id":3698644,"avatar_url":"https://avatars.githubusercontent.com/u/3698644?v=3","gravatar_id":"","url":"https://api.github.com/users/mglaman","html_url":"https://github.com/mglaman","followers_url":"https://api.github.com/users/mglaman/followers","following_url":"https://api.github.com/users/mglaman/following{/other_user}","gists_url":"https://api.github.com/users/mglaman/gists{/gist_id}","starred_url":"https://api.github.com/users/mglaman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mglaman/subscriptions","organizations_url":"https://api.github.com/users/mglaman/orgs","repos_url":"https://api.github.com/users/mglaman/repos","events_url":"https://api.github.com/users/mglaman/events{/privacy}","received_events_url":"https://api.github.com/users/mglaman/received_events","type":"User","site_admin":false},"body":"- [x] needsRefresh($order) would check the last refresh date ($order->changed?) and use the refresh settings to make a decision. Can always be TRUE for the initial implementation.\r\n\r\nrefresh($order) does the following:\r\n- [x] Update line item titles from the purchased entity titles (and test.)\r\n- [x] Resolve the unit prices (using the price resolver from PR #366) (and test.)\r\n- [X] Clear all adjustments\r\n- [X] Run the order processors.\r\n- [X] Availability processor\r\n- [x] Move and test order refresh settings\r\n- [X] Save the order.","created_at":"2016-09-15T01:10:38Z","updated_at":"2016-09-19T13:49:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5fa91ec6b9013c180757eee3520e96dacdc91eef","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491/commits","review_comments_url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491/comments","review_comment_url":"https://api.github.com/repos/drupalcommerce/commerce/pulls/comments{/number}","comments_url":"https://api.github.com/repos/drupalcommerce/commerce/issues/491/comments","statuses_url":"https://api.github.com/repos/drupalcommerce/commerce/statuses/5fb150a68ffb52fe69581417dcca7e34d3b5306b","head":{"label":"mglaman:2800223-order-refresh-process","ref":"2800223-order-refresh-process","sha":"5fb150a68ffb52fe69581417dcca7e34d3b5306b","user":{"login":"mglaman","id":3698644,"avatar_url":"https://avatars.githubusercontent.com/u/3698644?v=3","gravatar_id":"","url":"https://api.github.com/users/mglaman","html_url":"https://github.com/mglaman","followers_url":"https://api.github.com/users/mglaman/followers","following_url":"https://api.github.com/users/mglaman/following{/other_user}","gists_url":"https://api.github.com/users/mglaman/gists{/gist_id}","starred_url":"https://api.github.com/users/mglaman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mglaman/subscriptions","organizations_url":"https://api.github.com/users/mglaman/orgs","repos_url":"https://api.github.com/users/mglaman/repos","events_url":"https://api.github.com/users/mglaman/events{/privacy}","received_events_url":"https://api.github.com/users/mglaman/received_events","type":"User","site_admin":false},"repo":{"id":22921826,"name":"commerce","full_name":"mglaman/commerce","owner":{"login":"mglaman","id":3698644,"avatar_url":"https://avatars.githubusercontent.com/u/3698644?v=3","gravatar_id":"","url":"https://api.github.com/users/mglaman","html_url":"https://github.com/mglaman","followers_url":"https://api.github.com/users/mglaman/followers","following_url":"https://api.github.com/users/mglaman/following{/other_user}","gists_url":"https://api.github.com/users/mglaman/gists{/gist_id}","starred_url":"https://api.github.com/users/mglaman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mglaman/subscriptions","organizations_url":"https://api.github.com/users/mglaman/orgs","repos_url":"https://api.github.com/users/mglaman/repos","events_url":"https://api.github.com/users/mglaman/events{/privacy}","received_events_url":"https://api.github.com/users/mglaman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mglaman/commerce","description":"Drupal Commerce 8.x-2.x development","fork":true,"url":"https://api.github.com/repos/mglaman/commerce","forks_url":"https://api.github.com/repos/mglaman/commerce/forks","keys_url":"https://api.github.com/repos/mglaman/commerce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mglaman/commerce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mglaman/commerce/teams","hooks_url":"https://api.github.com/repos/mglaman/commerce/hooks","issue_events_url":"https://api.github.com/repos/mglaman/commerce/issues/events{/number}","events_url":"https://api.github.com/repos/mglaman/commerce/events","assignees_url":"https://api.github.com/repos/mglaman/commerce/assignees{/user}","branches_url":"https://api.github.com/repos/mglaman/commerce/branches{/branch}","tags_url":"https://api.github.com/repos/mglaman/commerce/tags","blobs_url":"https://api.github.com/repos/mglaman/commerce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mglaman/commerce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mglaman/commerce/git/refs{/sha}","trees_url":"https://api.github.com/repos/mglaman/commerce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mglaman/commerce/statuses/{sha}","languages_url":"https://api.github.com/repos/mglaman/commerce/languages","stargazers_url":"https://api.github.com/repos/mglaman/commerce/stargazers","contributors_url":"https://api.github.com/repos/mglaman/commerce/contributors","subscribers_url":"https://api.github.com/repos/mglaman/commerce/subscribers","subscription_url":"https://api.github.com/repos/mglaman/commerce/subscription","commits_url":"https://api.github.com/repos/mglaman/commerce/commits{/sha}","git_commits_url":"https://api.github.com/repos/mglaman/commerce/git/commits{/sha}","comments_url":"https://api.github.com/repos/mglaman/commerce/comments{/number}","issue_comment_url":"https://api.github.com/repos/mglaman/commerce/issues/comments{/number}","contents_url":"https://api.github.com/repos/mglaman/commerce/contents/{+path}","compare_url":"https://api.github.com/repos/mglaman/commerce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mglaman/commerce/merges","archive_url":"https://api.github.com/repos/mglaman/commerce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mglaman/commerce/downloads","issues_url":"https://api.github.com/repos/mglaman/commerce/issues{/number}","pulls_url":"https://api.github.com/repos/mglaman/commerce/pulls{/number}","milestones_url":"https://api.github.com/repos/mglaman/commerce/milestones{/number}","notifications_url":"https://api.github.com/repos/mglaman/commerce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mglaman/commerce/labels{/name}","releases_url":"https://api.github.com/repos/mglaman/commerce/releases{/id}","deployments_url":"https://api.github.com/repos/mglaman/commerce/deployments","created_at":"2014-08-13T16:02:14Z","updated_at":"2016-02-26T23:48:12Z","pushed_at":"2016-09-19T13:46:11Z","git_url":"git://github.com/mglaman/commerce.git","ssh_url":"git@github.com:mglaman/commerce.git","clone_url":"https://github.com/mglaman/commerce.git","svn_url":"https://github.com/mglaman/commerce","homepage":null,"size":2516,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"8.x-2.x"}},"base":{"label":"drupalcommerce:8.x-2.x","ref":"8.x-2.x","sha":"9adaa0997a3059abd8105fe26f5e957c4c260043","user":{"login":"drupalcommerce","id":183176,"avatar_url":"https://avatars.githubusercontent.com/u/183176?v=3","gravatar_id":"","url":"https://api.github.com/users/drupalcommerce","html_url":"https://github.com/drupalcommerce","followers_url":"https://api.github.com/users/drupalcommerce/followers","following_url":"https://api.github.com/users/drupalcommerce/following{/other_user}","gists_url":"https://api.github.com/users/drupalcommerce/gists{/gist_id}","starred_url":"https://api.github.com/users/drupalcommerce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drupalcommerce/subscriptions","organizations_url":"https://api.github.com/users/drupalcommerce/orgs","repos_url":"https://api.github.com/users/drupalcommerce/repos","events_url":"https://api.github.com/users/drupalcommerce/events{/privacy}","received_events_url":"https://api.github.com/users/drupalcommerce/received_events","type":"Organization","site_admin":false},"repo":{"id":21392057,"name":"commerce","full_name":"drupalcommerce/commerce","owner":{"login":"drupalcommerce","id":183176,"avatar_url":"https://avatars.githubusercontent.com/u/183176?v=3","gravatar_id":"","url":"https://api.github.com/users/drupalcommerce","html_url":"https://github.com/drupalcommerce","followers_url":"https://api.github.com/users/drupalcommerce/followers","following_url":"https://api.github.com/users/drupalcommerce/following{/other_user}","gists_url":"https://api.github.com/users/drupalcommerce/gists{/gist_id}","starred_url":"https://api.github.com/users/drupalcommerce/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drupalcommerce/subscriptions","organizations_url":"https://api.github.com/users/drupalcommerce/orgs","repos_url":"https://api.github.com/users/drupalcommerce/repos","events_url":"https://api.github.com/users/drupalcommerce/events{/privacy}","received_events_url":"https://api.github.com/users/drupalcommerce/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/drupalcommerce/commerce","description":"Commerce 2.x development","fork":false,"url":"https://api.github.com/repos/drupalcommerce/commerce","forks_url":"https://api.github.com/repos/drupalcommerce/commerce/forks","keys_url":"https://api.github.com/repos/drupalcommerce/commerce/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drupalcommerce/commerce/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drupalcommerce/commerce/teams","hooks_url":"https://api.github.com/repos/drupalcommerce/commerce/hooks","issue_events_url":"https://api.github.com/repos/drupalcommerce/commerce/issues/events{/number}","events_url":"https://api.github.com/repos/drupalcommerce/commerce/events","assignees_url":"https://api.github.com/repos/drupalcommerce/commerce/assignees{/user}","branches_url":"https://api.github.com/repos/drupalcommerce/commerce/branches{/branch}","tags_url":"https://api.github.com/repos/drupalcommerce/commerce/tags","blobs_url":"https://api.github.com/repos/drupalcommerce/commerce/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drupalcommerce/commerce/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drupalcommerce/commerce/git/refs{/sha}","trees_url":"https://api.github.com/repos/drupalcommerce/commerce/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drupalcommerce/commerce/statuses/{sha}","languages_url":"https://api.github.com/repos/drupalcommerce/commerce/languages","stargazers_url":"https://api.github.com/repos/drupalcommerce/commerce/stargazers","contributors_url":"https://api.github.com/repos/drupalcommerce/commerce/contributors","subscribers_url":"https://api.github.com/repos/drupalcommerce/commerce/subscribers","subscription_url":"https://api.github.com/repos/drupalcommerce/commerce/subscription","commits_url":"https://api.github.com/repos/drupalcommerce/commerce/commits{/sha}","git_commits_url":"https://api.github.com/repos/drupalcommerce/commerce/git/commits{/sha}","comments_url":"https://api.github.com/repos/drupalcommerce/commerce/comments{/number}","issue_comment_url":"https://api.github.com/repos/drupalcommerce/commerce/issues/comments{/number}","contents_url":"https://api.github.com/repos/drupalcommerce/commerce/contents/{+path}","compare_url":"https://api.github.com/repos/drupalcommerce/commerce/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drupalcommerce/commerce/merges","archive_url":"https://api.github.com/repos/drupalcommerce/commerce/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drupalcommerce/commerce/downloads","issues_url":"https://api.github.com/repos/drupalcommerce/commerce/issues{/number}","pulls_url":"https://api.github.com/repos/drupalcommerce/commerce/pulls{/number}","milestones_url":"https://api.github.com/repos/drupalcommerce/commerce/milestones{/number}","notifications_url":"https://api.github.com/repos/drupalcommerce/commerce/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drupalcommerce/commerce/labels{/name}","releases_url":"https://api.github.com/repos/drupalcommerce/commerce/releases{/id}","deployments_url":"https://api.github.com/repos/drupalcommerce/commerce/deployments","created_at":"2014-07-01T15:05:51Z","updated_at":"2016-09-06T15:52:54Z","pushed_at":"2016-09-19T13:46:11Z","git_url":"git://github.com/drupalcommerce/commerce.git","ssh_url":"git@github.com:drupalcommerce/commerce.git","clone_url":"https://github.com/drupalcommerce/commerce.git","svn_url":"https://github.com/drupalcommerce/commerce","homepage":"https://drupal.org/project/commerce","size":5708,"stargazers_count":205,"watchers_count":205,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":134,"mirror_url":null,"open_issues_count":24,"forks":134,"open_issues":24,"watchers":205,"default_branch":"8.x-2.x"}},"_links":{"self":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491"},"html":{"href":"https://github.com/drupalcommerce/commerce/pull/491"},"issue":{"href":"https://api.github.com/repos/drupalcommerce/commerce/issues/491"},"comments":{"href":"https://api.github.com/repos/drupalcommerce/commerce/issues/491/comments"},"review_comments":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491/comments"},"review_comment":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/drupalcommerce/commerce/pulls/491/commits"},"statuses":{"href":"https://api.github.com/repos/drupalcommerce/commerce/statuses/5fb150a68ffb52fe69581417dcca7e34d3b5306b"}}}}
{"actor":{"display_login":"bojanz"}}