/**
  * @dataProvider parametersProvider
  *
  * @param array $arguments
  * @param string $result
  */
 public function testParameters(array $arguments, $result)
 {
     $command = $this->application->find($arguments['command']);
     $commandTester = new CommandTester($command);
     $commandTester->execute($arguments);
     $businessUnit = isset($arguments['--user-business-unit']) && isset($this->businessUnits[$arguments['--user-business-unit']]) ? $this->businessUnits[$arguments['--user-business-unit']] : null;
     if (!empty($result)) {
         $this->assertStringStartsWith($result, $commandTester->getDisplay());
         return;
     }
     $this->assertEmpty($commandTester->getDisplay());
     /** @var User $user */
     $user = $this->userManager->findUserByUsername($arguments['--user-name']);
     $this->assertNotEmpty($user);
     if ($businessUnit) {
         $this->assertSame($user->getOrganization(), $businessUnit->getOrganization());
         $this->assertContains($businessUnit, $user->getBusinessUnits());
     }
     $this->assertTrue($user->isEnabled());
     $this->assertEquals($arguments['--user-name'], $user->getUsername());
     $this->assertEquals($arguments['--user-email'], $user->getEmail());
     $this->assertEquals($arguments['--user-firstname'], $user->getFirstName());
     $this->assertEquals($arguments['--user-lastname'], $user->getLastName());
     $userOrganizations = $user->getOrganizations();
     foreach ($arguments['--user-organizations'] as $organizationName) {
         $this->assertContains($this->organizations[$organizationName], $userOrganizations);
     }
 }
 /**
  * @param string $author
  *
  * @return string
  */
 protected function normalizeAuthor($author)
 {
     if (!isset($this->authorCache[$author])) {
         $user = $this->userManager->findUserByUsername($author);
         if (null === $user) {
             $userName = sprintf('%s - %s', $author, $this->translator->trans('Removed user'));
         } else {
             $userName = sprintf('%s %s - %s', $user->getFirstName(), $user->getLastName(), $user->getEmail());
         }
         $this->authorCache[$author] = $userName;
     }
     return $this->authorCache[$author];
 }
 /**
  * {@inheritdoc}
  */
 protected function convertValue($value)
 {
     if (!isset($this->cachedResults[$value['author']])) {
         $user = $this->userManager->findUserByUsername($value['author']);
         if (null === $user) {
             $result = sprintf('%s - %s', $value['author'], $this->translator->trans('Removed user'));
         } else {
             $result = sprintf('%s %s - %s', $user->getFirstName(), $user->getLastName(), $user->getEmail());
         }
         if (!empty($value['context'])) {
             $result .= sprintf(' (%s)', $value['context']);
         }
         $this->cachedResults[$value['author']] = $result;
     }
     return $this->cachedResults[$value['author']];
 }