getRoles()); $accessManager = $this->getMockBuilder(AccessDecisionManagerInterface::class)->getMock(); $accessManager->method('decide')->willReturn($allow); $sut = new TimesheetVoter($accessManager); $this->assertEquals($result, $sut->vote($token, $subject, $attributes)); } public function getTestData() { $user0 = $this->getUser(0, 'ROLE_CUSTOMER'); $user1 = $this->getUser(1, 'ROLE_USER'); $user2 = $this->getUser(1, 'ROLE_TEAMLEAD'); return [ [$user0, false, new Customer(), ['edit'], VoterInterface::ACCESS_ABSTAIN], [$user1, false, $this->getTimesheet($user1), ['edit'], VoterInterface::ACCESS_GRANTED], [$user1, false, $this->getTimesheet($user0), ['edit'], VoterInterface::ACCESS_DENIED], [$user2, true, $this->getTimesheet($user1), ['edit'], VoterInterface::ACCESS_GRANTED], ]; } protected function getTimesheet($user) { $timesheet = new Timesheet(); $timesheet->setUser($user); return $timesheet; } protected function getUser($id, $role) { $user = $this->getMockBuilder(User::class)->getMock(); $user->method('getId')->willReturn($id); $user->method('getRoles')->willReturn([$role]); return $user; } }