123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- <?php
- declare(strict_types=1);
- /**
- * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OCA\UserStatus\Tests\Service;
- use OCA\UserStatus\Service\PredefinedStatusService;
- use OCP\IL10N;
- use Test\TestCase;
- class PredefinedStatusServiceTest extends TestCase {
- /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
- protected $l10n;
- /** @var PredefinedStatusService */
- protected $service;
- protected function setUp(): void {
- parent::setUp();
- $this->l10n = $this->createMock(IL10N::class);
- $this->service = new PredefinedStatusService($this->l10n);
- }
- public function testGetDefaultStatuses(): void {
- $this->l10n->expects($this->exactly(7))
- ->method('t')
- ->withConsecutive(
- ['In a meeting'],
- ['Commuting'],
- ['Working remotely'],
- ['Out sick'],
- ['Vacationing'],
- ['In a call'],
- )
- ->willReturnArgument(0);
- $actual = $this->service->getDefaultStatuses();
- $this->assertEquals([
- [
- 'id' => 'meeting',
- 'icon' => '📅',
- 'message' => 'In a meeting',
- 'clearAt' => [
- 'type' => 'period',
- 'time' => 3600,
- ],
- ],
- [
- 'id' => 'commuting',
- 'icon' => '🚌',
- 'message' => 'Commuting',
- 'clearAt' => [
- 'type' => 'period',
- 'time' => 1800,
- ],
- ],
- [
- 'id' => 'remote-work',
- 'icon' => '🏡',
- 'message' => 'Working remotely',
- 'clearAt' => [
- 'type' => 'end-of',
- 'time' => 'day',
- ],
- ],
- [
- 'id' => 'sick-leave',
- 'icon' => '🤒',
- 'message' => 'Out sick',
- 'clearAt' => [
- 'type' => 'end-of',
- 'time' => 'day',
- ],
- ],
- [
- 'id' => 'vacationing',
- 'icon' => '🌴',
- 'message' => 'Vacationing',
- 'clearAt' => null,
- ],
- [
- 'id' => 'call',
- 'icon' => '💬',
- 'message' => 'In a call',
- 'clearAt' => null,
- 'visible' => false,
- ],
- [
- 'id' => 'out-of-office',
- 'icon' => '🛑',
- 'message' => 'Out of office',
- 'clearAt' => null,
- 'visible' => false,
- ],
- ], $actual);
- }
- /**
- * @param string $id
- * @param string|null $expectedIcon
- *
- * @dataProvider getIconForIdDataProvider
- */
- public function testGetIconForId(string $id, ?string $expectedIcon): void {
- $actual = $this->service->getIconForId($id);
- $this->assertEquals($expectedIcon, $actual);
- }
- /**
- * @return array
- */
- public function getIconForIdDataProvider(): array {
- return [
- ['meeting', '📅'],
- ['commuting', '🚌'],
- ['sick-leave', '🤒'],
- ['vacationing', '🌴'],
- ['remote-work', '🏡'],
- ['call', '💬'],
- ['unknown-id', null],
- ];
- }
- /**
- * @param string $id
- * @param string|null $expected
- *
- * @dataProvider getTranslatedStatusForIdDataProvider
- */
- public function testGetTranslatedStatusForId(string $id, ?string $expected): void {
- $this->l10n->method('t')
- ->willReturnArgument(0);
- $actual = $this->service->getTranslatedStatusForId($id);
- $this->assertEquals($expected, $actual);
- }
- /**
- * @return array
- */
- public function getTranslatedStatusForIdDataProvider(): array {
- return [
- ['meeting', 'In a meeting'],
- ['commuting', 'Commuting'],
- ['sick-leave', 'Out sick'],
- ['vacationing', 'Vacationing'],
- ['remote-work', 'Working remotely'],
- ['call', 'In a call'],
- ['unknown-id', null],
- ];
- }
- /**
- * @param string $id
- * @param bool $expected
- *
- * @dataProvider isValidIdDataProvider
- */
- public function testIsValidId(string $id, bool $expected): void {
- $actual = $this->service->isValidId($id);
- $this->assertEquals($expected, $actual);
- }
- /**
- * @return array
- */
- public function isValidIdDataProvider(): array {
- return [
- ['meeting', true],
- ['commuting', true],
- ['sick-leave', true],
- ['vacationing', true],
- ['remote-work', true],
- ['call', true],
- ['unknown-id', false],
- ];
- }
- public function testGetDefaultStatusById(): void {
- $this->l10n->expects($this->exactly(7))
- ->method('t')
- ->withConsecutive(
- ['In a meeting'],
- ['Commuting'],
- ['Working remotely'],
- ['Out sick'],
- ['Vacationing'],
- ['In a call'],
- )
- ->willReturnArgument(0);
- $this->assertEquals([
- 'id' => 'call',
- 'icon' => '💬',
- 'message' => 'In a call',
- 'clearAt' => null,
- 'visible' => false,
- ], $this->service->getDefaultStatusById('call'));
- }
- public function testGetDefaultStatusByUnknownId(): void {
- $this->assertNull($this->service->getDefaultStatusById('unknown'));
- }
- }
|