You are here

public function OrderCollectionFilterTest::testCustomerOrderCollectionFiltering in Commerce Core 8.2

Tests filtering orders.

@dataProvider filterDataParameters

File

modules/order/tests/src/Kernel/Jsonapi/OrderCollectionFilterTest.php, line 81

Class

OrderCollectionFilterTest
@group commerce_order

Namespace

Drupal\Tests\commerce_order\Kernel\Jsonapi

Code

public function testCustomerOrderCollectionFiltering(string $user_type, int $expected_unfiltered_count, array $expected_unfiltered_uuids, int $expected_filtered_count, array $expected_filtered_uuids) {
  $user_ids = [
    'order_customer' => $this->testOrderCustomer
      ->id(),
    'other_customer' => $this->testOtherCustomer
      ->id(),
    'guest_customer' => 0,
    'guest_customer_with_permission' => 0,
    'admin_user' => $this
      ->createUser([], [
      'administer commerce_order',
    ])
      ->id(),
    'view_user' => $this
      ->createUser([], [
      'view commerce_order',
    ])
      ->id(),
  ];
  $this
    ->assertArrayHasKey($user_type, $user_ids);
  if ($user_type === 'guest_customer_with_permission') {
    $this
      ->grantPermissions(Role::load(Role::ANONYMOUS_ID), [
      'view own commerce_order',
    ]);
  }
  $this
    ->generateTestOrders();
  $url = Url::fromRoute('jsonapi.commerce_order--default.collection');
  $this->container
    ->get('session')
    ->set('uid', $user_ids[$user_type]);
  $document = $this
    ->doRequest($url);
  $this
    ->assertArrayHasKey('data', $document);
  $this
    ->assertCount($expected_unfiltered_count, $document['data'], var_export($document['data'], TRUE));
  $this
    ->assertEquals($expected_unfiltered_uuids, array_map(static function (array $item) {
    return $item['id'];
  }, $document['data']));
  $url
    ->setOption('query', [
    'filter' => [
      'state' => 'completed',
    ],
  ]);
  $document = $this
    ->doRequest($url);
  $this
    ->assertArrayHasKey('data', $document);
  $this
    ->assertCount($expected_filtered_count, $document['data'], var_export($document['data'], TRUE));
  $this
    ->assertEquals($expected_filtered_uuids, array_map(static function (array $item) {
    return $item['id'];
  }, $document['data']));
}