function UserUnblockTest::testUnblockUser

Test execute() method for users with different status.

@dataProvider userProvider

@covers ::execute

File

tests/src/Unit/Integration/RulesAction/UserUnblockTest.php, line 66

Class

UserUnblockTest
@coversDefaultClass \Drupal\rules\Plugin\RulesAction\UserUnblock[[api-linebreak]] @group RulesAction

Namespace

Drupal\Tests\rules\Unit\Integration\RulesAction

Code

public function testUnblockUser($active, $authenticated, $expects, $autosave_names) {
  // Set-up a mock user.
  $account = $this->prophesizeEntity(UserInterface::class);
  // Mock isBlocked.
  $account->isBlocked()
    ->willReturn(!$active);
  // Mock isAuthenticated.
  $account->isAuthenticated()
    ->willReturn($authenticated);
  // Mock activate.
  $account->activate()
    ->shouldBeCalledTimes($expects);
  // We do not expect to call the 'save' method because the user should be
  // auto-saved later.
  $account->save()
    ->shouldNotBeCalled();
  // Test unblocking the user.
  $this->action
    ->setContextValue('user', $account->reveal())
    ->execute();
  $this->assertEquals($this->action
    ->autoSaveContext(), $autosave_names, 'Action returns correct context name for auto saving.');
}