public function UserFlagTypeTest::testFlagSelf in Flag 8.4
Tests that user can flag themselves when and only when appropriate.
File
- tests/
src/ Functional/ UserFlagTypeTest.php, line 38  
Class
- UserFlagTypeTest
 - Tests user flag type integrations.
 
Namespace
Drupal\Tests\flag\FunctionalCode
public function testFlagSelf() {
  $flag = $this
    ->createFlagFromArray([
    'link_type' => 'reload',
    'entity_type' => 'user',
    'bundles' => array_keys(\Drupal::service('entity_type.bundle.info')
      ->getBundleInfo('user')),
    'flag_type' => $this
      ->getFlagType('user'),
    'show_on_profile' => TRUE,
    'flagTypeConfig' => [
      // Create extra permissions to self flag.
      'extra_permissions' => [
        'owner',
      ],
    ],
  ]);
  // User can flag their own work.
  $user = $this
    ->createUser([
    'flag ' . $flag
      ->id() . ' own user account',
    'unflag ' . $flag
      ->id() . ' own user account',
    'administer flags',
    'administer flagging display',
    'administer flagging fields',
    'administer node display',
    'administer nodes',
  ]);
  $this
    ->drupalLogin($user);
  // Check the state of the extra permssions checkbox.
  $this
    ->drupalGet('admin/structure/flags/manage/' . $flag
    ->id());
  $this
    ->assertFieldChecked('edit-extra-permissions-owner');
  // Assert flag appears on the profile page.
  $this
    ->drupalGet('user/' . $user
    ->id());
  $this
    ->assertLink($flag
    ->getShortText('flag'));
  // Uncheck extra permssions.
  $edit = [
    'extra_permissions[owner]' => FALSE,
  ];
  $this
    ->drupalPostForm('admin/structure/flags/manage/' . $flag
    ->id(), $edit, $this
    ->t('Save Flag'));
  // Confirm extra permissions is unchecked.
  $this
    ->drupalGet('admin/structure/flags/manage/' . $flag
    ->id());
  $this
    ->assertNoFieldChecked('edit-extra-permissions-owner');
  // Assert the flag disapears from the profile page.
  $this
    ->drupalGet('user/' . $user
    ->id());
  $this
    ->assertNoLink($flag
    ->getShortText('flag'));
}