public function SubscriptionOperationsTest::testOperations in Commerce Recurring Framework 8
@covers ::getOperations
File
- tests/
src/ Kernel/ SubscriptionOperationsTest.php, line 37
Class
- SubscriptionOperationsTest
- Tests the commerce_subscription entity operations.
Namespace
Drupal\Tests\commerce_recurring\KernelCode
public function testOperations() {
$admin_user = $this
->createUser([
'mail' => $this
->randomString() . '@example.com',
], [
'administer commerce_subscription',
]);
$privileged_user = $this
->createUser([
'mail' => $this
->randomString() . '@example.com',
], [
'view any commerce_subscription',
'update any commerce_subscription',
]);
$user = $this
->createUser([
'mail' => $this
->randomString() . '@example.com',
], [
'view own commerce_subscription',
'update own commerce_subscription',
]);
/** @var \Drupal\commerce_recurring\Entity\SubscriptionInterface $subscription */
$subscription = Subscription::create([
'type' => 'product_variation',
'store_id' => $this->store
->id(),
'billing_schedule' => $this->billingSchedule,
'uid' => $user
->id(),
'purchased_entity' => $this->variation,
'title' => $this->variation
->getOrderItemTitle(),
'unit_price' => new Price('2', 'USD'),
'state' => 'active',
'starts' => strtotime('2019-02-24 17:00'),
]);
$subscription
->save();
$list_builder = \Drupal::entityTypeManager()
->getListBuilder('commerce_subscription');
// Check that admins and privileged users get the regular edit form route.
$this
->drupalSetCurrentUser($admin_user);
$operations = $list_builder
->getOperations($subscription);
$this
->assertEquals('entity.commerce_subscription.edit_form', $operations['edit']['url']
->getRouteName());
$this
->drupalSetCurrentUser($privileged_user);
$operations = $list_builder
->getOperations($subscription);
$this
->assertEquals('entity.commerce_subscription.edit_form', $operations['edit']['url']
->getRouteName());
// Check that customers get the dedicated customer-facing edit form route.
$this
->drupalSetCurrentUser($user);
$operations = $list_builder
->getOperations($subscription);
$this
->assertEquals('entity.commerce_subscription.customer_edit_form', $operations['edit']['url']
->getRouteName());
// Check that customers don't get any edit form route at all if the
// 'Customer' form mode doesn't exist for the subscription type.
$customer_form_display = EntityFormDisplay::load('commerce_subscription.product_variation.customer');
$customer_form_display
->delete();
$operations = $list_builder
->getOperations($subscription);
$this
->assertArrayNotHasKey('edit', $operations);
}