Improve create and start permission handling (#613)
This commit is contained in:
@@ -11,6 +11,8 @@ namespace App\Tests\Timesheet;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Entity\UserPreference;
|
||||
use App\Repository\UserRepository;
|
||||
use App\Security\CurrentUser;
|
||||
use App\Timesheet\UserDateTimeFactory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
|
||||
@@ -24,18 +26,27 @@ class UserDateTimeFactoryTest extends TestCase
|
||||
public const TEST_TIMEZONE = 'Antarctica/DumontDUrville';
|
||||
|
||||
protected function createDateTimeFactory(string $timezone)
|
||||
{
|
||||
return new UserDateTimeFactory($this->getCurrentUserMock($timezone));
|
||||
}
|
||||
|
||||
protected function getCurrentUserMock($timezone = null)
|
||||
{
|
||||
$user = new User();
|
||||
$pref = new UserPreference();
|
||||
$pref->setName('timezone');
|
||||
$pref->setValue($timezone);
|
||||
$user->addPreference($pref);
|
||||
if (null !== $timezone) {
|
||||
$pref = new UserPreference();
|
||||
$pref->setName('timezone');
|
||||
$pref->setValue($timezone);
|
||||
$user->addPreference($pref);
|
||||
}
|
||||
$repository = $this->getMockBuilder(UserRepository::class)->setMethods(['getById'])->disableOriginalConstructor()->getMock();
|
||||
$repository->expects($this->once())->method('getById')->willReturn($user);
|
||||
$token = $this->getMockBuilder(UsernamePasswordToken::class)->setMethods(['getUser'])->disableOriginalConstructor()->getMock();
|
||||
$token->expects($this->once())->method('getUser')->willReturn($user);
|
||||
$tokenStorage = new TokenStorage();
|
||||
$tokenStorage->setToken($token);
|
||||
|
||||
return new UserDateTimeFactory($tokenStorage);
|
||||
return new CurrentUser($tokenStorage, $repository);
|
||||
}
|
||||
|
||||
public function testGetTimezone()
|
||||
@@ -46,12 +57,14 @@ class UserDateTimeFactoryTest extends TestCase
|
||||
|
||||
public function testGetTimezoneWithFallbackTimezone()
|
||||
{
|
||||
$repository = $this->getMockBuilder(UserRepository::class)->disableOriginalConstructor()->getMock();
|
||||
$token = $this->getMockBuilder(UsernamePasswordToken::class)->setMethods(['getUser'])->disableOriginalConstructor()->getMock();
|
||||
$token->expects($this->once())->method('getUser')->willReturn('anonymous');
|
||||
$tokenStorage = new TokenStorage();
|
||||
$tokenStorage->setToken($token);
|
||||
|
||||
$sut = new UserDateTimeFactory($tokenStorage);
|
||||
$current = new CurrentUser($tokenStorage, $repository);
|
||||
$sut = new UserDateTimeFactory($current);
|
||||
$this->assertEquals(date_default_timezone_get(), $sut->getTimezone()->getName());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user