Files
deck/tests/unit/Db/CardTest.php
Julius Härtl 7ad8080f82 Add unit tests for new classes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-06-19 18:00:06 +02:00

141 lines
3.8 KiB
PHP

<?php
/**
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
*
* @author Julius Härtl <jus@bitgrid.net>
*
* @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 <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Deck\Db;
use DateInterval;
use DateTime;
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);
// TODO: relation shared labels acl
return $card;
}
public 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, $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' => null,
'attachmentCount' => null,
'assignedUsers' => null,
], $card->jsonSerialize());
}
public function testJsonSerializeLabels() {
$card = $this->createCard();
$card->setLabels(array());
$this->assertEquals([
'id' => 1,
'title' => "My Card",
'description' => "a long description",
'type' => 'text',
'lastModified' => 234,
'createdAt' => 123,
'owner' => 'admin',
'order' => 12,
'stackId' => 1,
'labels' => array(),
'duedate' => null,
'overdue' => 0,
'archived' => false,
'attachments' => null,
'attachmentCount' => null,
'assignedUsers' => null,
], $card->jsonSerialize());
}
public function testMysqlDateFallback() {
$date = new DateTime();
$card = new Card();
$card->setDuedate($date->format('c'));
$card->setDatabaseType('mysql');
$this->assertEquals($date->format('Y-m-d H:i:s'), $card->getDuedate(false));
}
public function testJsonSerializeAsignedUsers() {
$card = $this->createCard();
$card->setAssignedUsers([ 'user1' ]);
$card->setLabels(array());
$this->assertEquals([
'id' => 1,
'title' => "My Card",
'description' => "a long description",
'type' => 'text',
'lastModified' => 234,
'createdAt' => 123,
'owner' => 'admin',
'order' => 12,
'stackId' => 1,
'labels' => array(),
'duedate' => null,
'overdue' => 0,
'archived' => false,
'attachments' => null,
'attachmentCount' => null,
'assignedUsers' => ['user1'],
], $card->jsonSerialize());
}
}