nextcloud/tests/lib/AppFramework/Http/PublicTemplateResponseTest.php
Ferdinand Thiessen 4d2556d4cf
refactor(IMenuAction): Make public menu actions use the new Vue UI
This removes custom rendering code an replaces it with the declarative menu actions.
Also adjust the template to allow the Vue UI to mount.
Custom entries still are possible.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-03 16:07:49 +02:00

62 lines
2.4 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace Test\AppFramework\Http;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Template\PublicTemplateResponse;
use Test\TestCase;
class PublicTemplateResponseTest extends TestCase {
public function testSetParamsConstructor() {
$template = new PublicTemplateResponse('app', 'home', ['key' => 'value']);
$this->assertEquals(['key' => 'value'], $template->getParams());
}
public function testAdditionalElements() {
$template = new PublicTemplateResponse('app', 'home', ['key' => 'value']);
$template->setHeaderTitle('Header');
$template->setHeaderDetails('Details');
$this->assertEquals(['key' => 'value'], $template->getParams());
$this->assertEquals('Header', $template->getHeaderTitle());
$this->assertEquals('Details', $template->getHeaderDetails());
}
public function testActionSingle() {
$actions = [
new Http\Template\SimpleMenuAction('link', 'Download', 'download', 'downloadLink', 0)
];
$template = new PublicTemplateResponse('app', 'home', ['key' => 'value']);
$template->setHeaderActions($actions);
$this->assertEquals(['key' => 'value'], $template->getParams());
$this->assertEquals($actions[0], $template->getPrimaryAction());
$this->assertEquals(1, $template->getActionCount());
$this->assertEquals([], $template->getOtherActions());
}
public function testActionMultiple() {
$actions = [
new Http\Template\SimpleMenuAction('link1', 'Download1', 'download1', 'downloadLink1', 100),
new Http\Template\SimpleMenuAction('link2', 'Download2', 'download2', 'downloadLink2', 20),
new Http\Template\SimpleMenuAction('link3', 'Download3', 'download3', 'downloadLink3', 0)
];
$template = new PublicTemplateResponse('app', 'home', ['key' => 'value']);
$template->setHeaderActions($actions);
$this->assertEquals(['key' => 'value'], $template->getParams());
$this->assertEquals($actions[2], $template->getPrimaryAction());
$this->assertEquals(3, $template->getActionCount());
$this->assertEquals([$actions[1], $actions[0]], $template->getOtherActions());
}
public function testGetRenderAs() {
$template = new PublicTemplateResponse('app', 'home', ['key' => 'value']);
$this->assertEquals(['key' => 'value'], $template->getParams());
$this->assertEquals('public', $template->getRenderAs());
}
}