groupManager = $this->createMock(IGroupManager::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->command = new AddUser($this->userManager, $this->groupManager);
$this->input = $this->createMock(InputInterface::class);
$this->input->method('getArgument')
->willReturnCallback(function ($arg) {
if ($arg === 'group') {
return 'myGroup';
} elseif ($arg === 'user') {
return 'myUser';
}
throw new \Exception();
});
$this->output = $this->createMock(OutputInterface::class);
}
public function testNoGroup(): void {
$this->groupManager->method('get')
->with('myGroup')
->willReturn(null);
$this->output->expects($this->once())
->method('writeln')
->with('group not found');
$this->invokePrivate($this->command, 'execute', [$this->input, $this->output]);
}
public function testNoUser(): void {
$group = $this->createMock(IGroup::class);
$this->groupManager->method('get')
->with('myGroup')
->willReturn($group);
$this->userManager->method('get')
->with('myUser')
->willReturn(null);
$this->output->expects($this->once())
->method('writeln')
->with('user not found');
$this->invokePrivate($this->command, 'execute', [$this->input, $this->output]);
}
public function testAdd(): void {
$group = $this->createMock(IGroup::class);
$this->groupManager->method('get')
->with('myGroup')
->willReturn($group);
$user = $this->createMock(IUser::class);
$this->userManager->method('get')
->with('myUser')
->willReturn($user);
$group->expects($this->once())
->method('addUser')
->with($user);
$this->invokePrivate($this->command, 'execute', [$this->input, $this->output]);
}
}