diff --git a/lib/Command/UserExport.php b/lib/Command/UserExport.php index 7355cb880..cff6a96b2 100644 --- a/lib/Command/UserExport.php +++ b/lib/Command/UserExport.php @@ -73,6 +73,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int $data = []; foreach ($boards as $board) { + if ($board->getDeletedAt() > 0) { + continue; + } $fullBoard = $this->boardMapper->find($board->getId(), true, true); $data[$board->getId()] = $fullBoard->jsonSerialize(); $stacks = $this->stackMapper->findAll($board->getId()); @@ -80,7 +83,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int $data[$board->getId()]['stacks'][$stack->getId()] = $stack->jsonSerialize(); $cards = $this->cardMapper->findAllByStack($stack->getId()); foreach ($cards as $card) { + if ($card->getDeletedAt() > 0) { + continue; + } $fullCard = $this->cardMapper->find($card->getId()); + $assignedUsers = $this->assignedUsersMapper->findAll($card->getId()); $fullCard->setAssignedUsers($assignedUsers); diff --git a/tests/unit/Command/UserExportTest.php b/tests/unit/Command/UserExportTest.php index 1d75a35b9..66b8f8d4c 100644 --- a/tests/unit/Command/UserExportTest.php +++ b/tests/unit/Command/UserExportTest.php @@ -68,18 +68,26 @@ public function getBoard($id) { $board->setTitle('Board ' . $id); return $board; } + public function getStack($id) { $stack = new Stack(); $stack->setId($id); $stack->setTitle('Stack ' . $id); return $stack; } - public function getCard($id) { + + public function getCard($id, $deleted = false) { $card = new Card(); $card->setId($id); $card->setTitle('Card ' . $id); + + if ($deleted) { + $card->setDeletedAt(time()); + } + return $card; } + public function testExecute() { $input = $this->createMock(InputInterface::class); $input->expects($this->once())->method('getArgument')->with('user-id')->willReturn('admin'); @@ -89,33 +97,88 @@ public function testExecute() { $this->getBoard(1), $this->getBoard(2), ]; - $this->boardService->expects($this->once()) - ->method('findAll') - ->willReturn($boards); - $this->boardMapper->expects($this->exactly(count($boards))) - ->method('find') - ->willReturn($boards[0]); + $stacks = [ $this->getStack(1), $this->getStack(2) ]; - $this->stackMapper->expects($this->exactly(count($boards))) - ->method('findAll') - ->willReturn($stacks); + $cards = [ $this->getCard(1), $this->getCard(2), $this->getCard(3), ]; + + $this->boardService->expects($this->once()) + ->method('findAll') + ->willReturn($boards); + + $this->boardMapper->expects($this->exactly(count($boards))) + ->method('find') + ->willReturn($boards[0]); + + $this->stackMapper->expects($this->exactly(count($boards))) + ->method('findAll') + ->willReturn($stacks); + $this->cardMapper->expects($this->exactly(count($boards) * count($stacks))) ->method('findAllByStack') ->willReturn($cards); + $this->cardMapper->expects($this->exactly(count($boards) * count($stacks) * count($cards))) ->method('find') ->willReturn($cards[0]); + $this->assignedUserMapper->expects($this->exactly(count($boards) * count($stacks) * count($cards))) ->method('findAll') ->willReturn([]); + + $result = $this->invokePrivate($this->userExport, 'execute', [$input, $output]); + self::assertEquals(0, $result); + } + + public function testExecuteWithDeletedCard() { + $input = $this->createMock(InputInterface::class); + $input->expects($this->once())->method('getArgument')->with('user-id')->willReturn('admin'); + $output = $this->createMock(OutputInterface::class); + + $boards = [ + $this->getBoard(1), + ]; + + $stacks = [ + $this->getStack(1), + ]; + + $cards = [ + $this->getCard(1), + $this->getCard(2, true), + ]; + + $this->boardService->expects($this->once()) + ->method('findAll') + ->willReturn($boards); + + $this->boardMapper->expects($this->once()) + ->method('find') + ->willReturn($boards[0]); + + $this->stackMapper->expects($this->once()) + ->method('findAll') + ->willReturn($stacks); + + $this->cardMapper->expects($this->once()) + ->method('findAllByStack') + ->willReturn($cards); + + $this->cardMapper->expects($this->once()) + ->method('find') + ->willReturn($cards[0]); + + $this->assignedUserMapper->expects($this->once()) + ->method('findAll') + ->willReturn([]); + $result = $this->invokePrivate($this->userExport, 'execute', [$input, $output]); self::assertEquals(0, $result); }