orphanHelper = $this->createMock(OrphanHelper::class); $this->command = new FixShareOwners($this->orphanHelper); } public function testExecuteNoSharesDetected() { $this->orphanHelper->expects($this->once()) ->method('getAllShares') ->willReturn([ ['id' => 1, 'owner' => 'user1', 'fileid' => 1, 'target' => 'target1'], ['id' => 2, 'owner' => 'user2', 'fileid' => 2, 'target' => 'target2'], ]); $this->orphanHelper->expects($this->exactly(2)) ->method('isShareValid') ->willReturn(true); $input = $this->createMock(InputInterface::class); $output = $this->createMock(OutputInterface::class); $output->expects($this->once()) ->method('writeln') ->with('No broken shares detected'); $this->command->execute($input, $output); } public function testExecuteSharesDetected() { $this->orphanHelper->expects($this->once()) ->method('getAllShares') ->willReturn([ ['id' => 1, 'owner' => 'user1', 'fileid' => 1, 'target' => 'target1'], ['id' => 2, 'owner' => 'user2', 'fileid' => 2, 'target' => 'target2'], ]); $this->orphanHelper->expects($this->exactly(2)) ->method('isShareValid') ->willReturnOnConsecutiveCalls(true, false); $this->orphanHelper->expects($this->once()) ->method('fileExists') ->willReturn(true); $this->orphanHelper->expects($this->once()) ->method('findOwner') ->willReturn('newOwner'); $this->orphanHelper->expects($this->once()) ->method('updateShareOwner'); $input = $this->createMock(InputInterface::class); $output = $this->createMock(OutputInterface::class); $output->expects($this->once()) ->method('writeln') ->with('Share with id 2 (target: target2) updated to owner newOwner'); $this->command->execute($input, $output); } public function testExecuteSharesDetectedDryRun() { $this->orphanHelper->expects($this->once()) ->method('getAllShares') ->willReturn([ ['id' => 1, 'owner' => 'user1', 'fileid' => 1, 'target' => 'target1'], ['id' => 2, 'owner' => 'user2', 'fileid' => 2, 'target' => 'target2'], ]); $this->orphanHelper->expects($this->exactly(2)) ->method('isShareValid') ->willReturnOnConsecutiveCalls(true, false); $this->orphanHelper->expects($this->once()) ->method('fileExists') ->willReturn(true); $this->orphanHelper->expects($this->once()) ->method('findOwner') ->willReturn('newOwner'); $this->orphanHelper->expects($this->never()) ->method('updateShareOwner'); $input = $this->createMock(InputInterface::class); $output = $this->createMock(OutputInterface::class); $output->expects($this->once()) ->method('writeln') ->with('Share with id 2 (target: target2) can be updated to owner newOwner'); $input->expects($this->once()) ->method('getOption') ->with('dry-run') ->willReturn(true); $this->command->execute($input, $output); } }