dbPool = new DatabasePool(); /** @var array $CONFIG */ $this->dbPool->create('core', $GLOBALS['CONFIG']['db']['core']['masters']['admin']); $this->app = new class() extends ApplicationAbstract { protected string $appName = 'Api'; }; $this->app->l11nManager = new L11nManager($this->app->appName); $this->app->dbPool = $this->dbPool; } /** * @testdox The view has the expected default values after initialization * @covers phpOMS\Views\View * @group framework */ public function testDefault() : void { $view = new View($this->app->l11nManager, new Request(new Http('')), new Response(new Localization())); self::assertEmpty($view->getTemplate()); self::assertEmpty($view->getViews()); self::assertIsArray($view->getViews()); self::assertFalse($view->getView('0')); self::assertFalse($view->removeView('0')); self::assertNull($view->getData('0')); self::assertFalse($view->removeData('0')); self::assertEmpty($view->toArray()); } /** * @testdox The view can output text from the localization manager * @covers phpOMS\Views\View * @group framework */ public function testGetText() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list'); $expected = [ 'en' => [ 'Admin' => [ 'Test' => 'Test', ], ], ]; $this->app->l11nManager = new L11nManager('Api'); $this->app->l11nManager->loadLanguage('en', 'Admin', $expected['en']); self::assertEquals('Test', $view->getText('Test')); } /** * @testdox The view can output html escaped text from the localization manager * @covers phpOMS\Views\View * @group framework */ public function testGetHtml() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list'); $expected = [ 'en' => [ 'Admin' => [ 'Test' => 'Test', ], ], ]; $this->app->l11nManager = new L11nManager('Api'); $this->app->l11nManager->loadLanguage('en', 'Admin', $expected['en']); self::assertEquals('<a href="test">Test</a>', $view->getHtml('Test')); } /** * @testdox View data can be set and returned * @covers phpOMS\Views\View * @group framework */ public function testDataInputOutput() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $view->setData('key', 'value'); self::assertEquals('value', $view->getData('key')); } /** * @testdox View data can be added and returned * @covers phpOMS\Views\View * @group framework */ public function testDataAdd() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertTrue($view->addData('key2', 'valu2')); self::assertEquals('valu2', $view->getData('key2')); } /** * @testdox View data cannot be added if it already exists * @covers phpOMS\Views\View * @group framework */ public function testInvalidDataOverwrite() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $view->addData('key2', 'valu2'); self::assertFalse($view->addData('key2', 'valu3')); self::assertEquals('valu2', $view->getData('key2')); } /** * @testdox View data can be removed * @covers phpOMS\Views\View * @group framework */ public function testRemove() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $view->addData('key2', 'valu2'); self::assertTrue($view->removeData('key2')); } /** * @testdox None-existing view data cannot be removed * @covers phpOMS\Views\View * @group framework */ public function testInvalidDataRemove() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertFalse($view->removeData('key3')); } /** * @testdox The request can be returned * @covers phpOMS\Views\View * @group framework */ public function testGetRequest() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertEquals($request, $view->getRequest()); self::assertEquals($response, $view->getResponse()); } /** * @testdox The response can be returned * @covers phpOMS\Views\View * @group framework */ public function testGetResponse() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertEquals($response, $view->getResponse()); } /** * @testdox Text can be html escaped * @covers phpOMS\Views\View * @group framework */ public function testPrintHtml() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertEquals('<a href="test">Test</a>', $view->printHtml('Test')); self::assertEquals('<a href="test">Test</a>', ViewAbstract::html('Test')); } /** * @testdox Views can be added and returned from a view * @covers phpOMS\Views\View * @group framework */ public function testViewInputOutput() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $tView = new View($this->app->l11nManager, $request, $response); self::assertTrue($view->addView('test', $tView)); self::assertEquals($tView, $view->getView('test')); self::assertCount(1, $view->getViews()); } /** * @testdox None-existing views cannot be returned * @covers phpOMS\Views\View * @group framework */ public function testInvalidViewGet() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertFalse($view->getView('test')); } /** * @testdox Views can be removed * @covers phpOMS\Views\View * @group framework */ public function testViewRemove() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); $tView = new View($this->app->l11nManager, $request, $response); $view->addView('test', $tView); self::assertTrue($view->removeView('test')); } /** * @testdox None-existing views cannot be removed * @covers phpOMS\Views\View * @group framework */ public function testInvalidViewRemove() : void { $view = new View($this->app->l11nManager, $request = new Request(new Http('')), $response = new Response()); self::assertFalse($view->removeView('test')); } /** * @testdox A view can be forcefully overwritten * @covers phpOMS\Views\View * @group framework */ public function testOverwritingView() : void { $view = new View(); $tView = new View(); $view->addView('test', $tView); self::assertTrue($view->addView('test', $tView, true)); } /** * @testdox By default a view is not overwritten * @covers phpOMS\Views\View * @group framework */ public function testInvalidOverwritingView() : void { $view = new View(); $tView = new View(); $view->addView('test', $tView); self::assertFalse($view->addView('test', $tView)); } /** * @testdox A view template can be rendered * @covers phpOMS\Views\View * @group framework */ public function testRender() : void { $view = new View(); $view->setTemplate('/phpOMS/tests/Views/testTemplate'); self::assertEquals('Test', $view->render()); } /** * @testdox A view template can be serialized * @covers phpOMS\Views\View * @group framework */ public function testSerialize() : void { $view = new View(); self::assertEquals('[]', $view->serialize()); $view->setTemplate('/phpOMS/tests/Views/testTemplate'); self::assertEquals('Test', $view->serialize()); } /** * @testdox A view can be turned into an array containing the rendered templates * @covers phpOMS\Views\View * @group framework */ public function testArray() : void { $view = new View(); self::assertEquals([], $view->toArray()); $view->setTemplate('/phpOMS/tests/Views/testTemplate'); $view2 = new View(); $view2->setTemplate('/phpOMS/tests/Views/testTemplate'); $view->addView('sub', $view2); self::assertEquals([ 0 => 'Test', 'sub' => ['Test'], ], $view->toArray() ); } /** * @testdox Rendering a invalid template throws a PathException * @covers phpOMS\Views\View * @group framework */ public function testRenderException() : void { self::expectException(\phpOMS\System\File\PathException::class); $view = new View($this->app->l11nManager); $view->setTemplate('something.txt'); $view->render(); } /** * @testdox Serializing a invalid template throws a PathException * @covers phpOMS\Views\View * @group framework */ public function testSerializeException() : void { self::expectException(\phpOMS\System\File\PathException::class); $view = new View($this->app->l11nManager); $view->setTemplate('something.txt'); $view->serialize(); } }