* * @author Julius Härtl * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace OCA\Deck\Db; use DateInterval; use DateTime; use OCA\Deck\Model\CardDetails; use Test\TestCase; class CardTest extends TestCase { private function createCard() { $card = new Card(); $card->setId(1); $card->setTitle('My Card'); $card->setDescription('a long description'); $card->setStackId(1); $card->setType('text'); $card->setLastModified(234); $card->setCreatedAt(123); $card->setOwner('admin'); $card->setOrder(12); $card->setArchived(false); $card->setDone(null); // TODO: relation shared labels acl return $card; } public static function dataDuedate() { return [ [(new DateTime()), Card::DUEDATE_NOW], [(new DateTime())->sub(new DateInterval('P1D')), Card::DUEDATE_OVERDUE], [(new DateTime())->add(new DateInterval('P1D')), Card::DUEDATE_NEXT], [(new DateTime())->add(new DateInterval('P2D')), Card::DUEDATE_FUTURE] ]; } /** * @dataProvider dataDuedate */ public function testDuedate(DateTime $duedate, $state) { $card = $this->createCard(); $card->setDuedate($duedate->format('Y-m-d H:i:s')); $this->assertEquals($state, (new CardDetails($card))->jsonSerialize()['overdue']); } public function testJsonSerialize() { $card = $this->createCard(); $this->assertEquals([ 'id' => 1, 'title' => 'My Card', 'description' => 'a long description', 'type' => 'text', 'lastModified' => 234, 'createdAt' => 123, 'owner' => 'admin', 'order' => 12, 'stackId' => 1, 'labels' => null, 'duedate' => null, 'overdue' => 0, 'archived' => false, 'attachments' => [], 'attachmentCount' => 0, 'assignedUsers' => null, 'deletedAt' => 0, 'commentsUnread' => 0, 'commentsCount' => 0, 'lastEditor' => null, 'ETag' => $card->getETag(), 'done' => null, 'referenceData' => null, ], (new CardDetails($card))->jsonSerialize()); } public function testJsonSerializeLabels() { $card = $this->createCard(); $card->setLabels([]); $this->assertEquals([ 'id' => 1, 'title' => 'My Card', 'description' => 'a long description', 'type' => 'text', 'lastModified' => 234, 'createdAt' => 123, 'owner' => 'admin', 'order' => 12, 'stackId' => 1, 'labels' => [], 'duedate' => null, 'overdue' => 0, 'archived' => false, 'attachments' => [], 'attachmentCount' => 0, 'assignedUsers' => null, 'deletedAt' => 0, 'commentsUnread' => 0, 'commentsCount' => 0, 'lastEditor' => null, 'ETag' => $card->getETag(), 'done' => false, 'referenceData' => null, ], (new CardDetails($card))->jsonSerialize()); } public function testJsonSerializeAsignedUsers() { $card = $this->createCard(); $card->setAssignedUsers([ 'user1' ]); $card->setLabels([]); $this->assertEquals([ 'id' => 1, 'title' => 'My Card', 'description' => 'a long description', 'type' => 'text', 'lastModified' => 234, 'createdAt' => 123, 'owner' => 'admin', 'order' => 12, 'stackId' => 1, 'labels' => [], 'duedate' => null, 'overdue' => 0, 'archived' => false, 'attachments' => [], 'attachmentCount' => 0, 'assignedUsers' => ['user1'], 'deletedAt' => 0, 'commentsUnread' => 0, 'commentsCount' => 0, 'lastEditor' => null, 'ETag' => $card->getETag(), 'done' => false, 'referenceData' => null, ], (new CardDetails($card))->jsonSerialize()); } }