Files
deck/tests/unit/Db/CardTest.php
dependabot[bot] ba3e97b73d Chore(deps-dev): Bump nextcloud/coding-standard from 1.2.1 to 1.2.3
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.2.1 to 1.2.3.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/coding-standard/compare/v1.2.1...v1.2.3)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-26 08:14:42 +02:00

153 lines
4.1 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 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 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' => null,
'attachmentCount' => null,
'assignedUsers' => null,
'deletedAt' => 0,
'commentsUnread' => 0,
'commentsCount' => 0,
'lastEditor' => null,
'ETag' => $card->getETag(),
'done' => 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' => null,
'attachmentCount' => null,
'assignedUsers' => null,
'deletedAt' => 0,
'commentsUnread' => 0,
'commentsCount' => 0,
'lastEditor' => null,
'ETag' => $card->getETag(),
'done' => false,
], (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' => null,
'attachmentCount' => null,
'assignedUsers' => ['user1'],
'deletedAt' => 0,
'commentsUnread' => 0,
'commentsCount' => 0,
'lastEditor' => null,
'ETag' => $card->getETag(),
'done' => false,
], (new CardDetails($card))->jsonSerialize());
}
}