diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 6c72c20bb..406dd75ae 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -402,6 +402,9 @@ class CardService { } $card = $this->cardMapper->find($id); + if ($card->getArchived()) { + throw new StatusException('Operation not allowed. This card is archived.'); + } $card->setStackId($stackId); $this->cardMapper->update($card); diff --git a/tests/unit/Service/CardServiceTest.php b/tests/unit/Service/CardServiceTest.php index b2e2db7ad..641df5dbc 100644 --- a/tests/unit/Service/CardServiceTest.php +++ b/tests/unit/Service/CardServiceTest.php @@ -231,7 +231,10 @@ class CardServiceTest extends TestCase { public function testReorder($cardId, $newPosition, $order) { $cards = $this->getCards(); $cardsTmp = []; - $this->cardMapper->expects($this->at(0))->method('findAll')->willReturn($cards); + $this->cardMapper->expects($this->once())->method('findAll')->willReturn($cards); + $card = new Card(); + $card->setStackId(123); + $this->cardMapper->expects($this->once())->method('find')->willReturn($card); $result = $this->cardService->reorder($cardId, 123, $newPosition); foreach ($result as $card) { $actual[$card->getOrder()] = $card->getId(); @@ -254,7 +257,8 @@ class CardServiceTest extends TestCase { $card = new Card(); $card->setTitle('title'); $card->setArchived(true); - $this->cardMapper->expects($this->once())->method('findAll')->willReturn([$card]); + $card->setStackId(123); + $this->cardMapper->expects($this->once())->method('find')->willReturn($card); $this->cardMapper->expects($this->never())->method('update')->willReturnCallback(function($c) { return $c; }); $this->expectException(StatusException::class); $actual = $this->cardService->reorder(123, 234, 1);