diff --git a/apps/systemtags/lib/Settings/Admin.php b/apps/systemtags/lib/Settings/Admin.php index 2252fd50ba356..45ea8fc736852 100644 --- a/apps/systemtags/lib/Settings/Admin.php +++ b/apps/systemtags/lib/Settings/Admin.php @@ -6,16 +6,28 @@ */ namespace OCA\SystemTags\Settings; +use OCA\SystemTags\AppInfo\Application; use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; +use OCP\IAppConfig; use OCP\Settings\ISettings; use OCP\Util; class Admin implements ISettings { + public function __construct( + private IAppConfig $appConfig, + private IInitialState $initialStateService, + ) { + } + /** * @return TemplateResponse */ public function getForm() { + $restrictSystemTagsCreationToAdmin = $this->appConfig->getValueBool(Application::APP_ID, 'restrict_creation_to_admin', false); + $this->initialStateService->provideInitialState('restrictSystemTagsCreationToAdmin', $restrictSystemTagsCreationToAdmin); + Util::addScript('systemtags', 'admin'); return new TemplateResponse('systemtags', 'admin', [], ''); } diff --git a/apps/systemtags/tests/Settings/AdminTest.php b/apps/systemtags/tests/Settings/AdminTest.php index 4c890755e09da..ef5fa7ec8853c 100644 --- a/apps/systemtags/tests/Settings/AdminTest.php +++ b/apps/systemtags/tests/Settings/AdminTest.php @@ -8,19 +8,54 @@ use OCA\SystemTags\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; +use OCP\IAppConfig; use Test\TestCase; class AdminTest extends TestCase { /** @var Admin */ private $admin; + /** @var IAppConfig|\PHPUnit\Framework\MockObject\MockObject */ + private $appConfig; + /** @var IInitialState|\PHPUnit\Framework\MockObject\MockObject */ + private $initialState; protected function setUp(): void { parent::setUp(); - $this->admin = new Admin(); + $this->appConfig = $this->createMock(IAppConfig::class); + $this->initialState = $this->createMock(IInitialState::class); + + $this->admin = new Admin( + $this->appConfig, + $this->initialState + ); } public function testGetForm(): void { + $this->appConfig->expects($this->once()) + ->method('getValueBool') + ->with('systemtags', 'restrict_creation_to_admin', false) + ->willReturn(false); + + $this->initialState->expects($this->once()) + ->method('provideInitialState') + ->with('restrictSystemTagsCreationToAdmin', false); + + $expected = new TemplateResponse('systemtags', 'admin', [], ''); + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetFormWithRestrictedCreation(): void { + $this->appConfig->expects($this->once()) + ->method('getValueBool') + ->with('systemtags', 'restrict_creation_to_admin', false) + ->willReturn(true); + + $this->initialState->expects($this->once()) + ->method('provideInitialState') + ->with('restrictSystemTagsCreationToAdmin', true); + $expected = new TemplateResponse('systemtags', 'admin', [], ''); $this->assertEquals($expected, $this->admin->getForm()); }