3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller
;
7 use PHPUnit\Framework\TestCase
;
8 use Shaarli\Bookmark\BookmarkFilter
;
11 * Class ShaarliControllerTest
13 * This class is used to test default behavior of ShaarliController abstract class.
14 * It uses a dummy non abstract controller.
16 class ShaarliControllerTest
extends TestCase
18 use FrontControllerMockHelper
;
20 /** @var LoginController */
21 protected $controller;
23 /** @var mixed[] List of variable assigned to the template */
24 protected $assignedValues;
26 public function setUp(): void
28 $this->createContainer();
30 $this->controller
= new class($this->container
) extends ShaarliController
32 public function assignView(string $key, $value): ShaarliController
34 return parent
::assignView($key, $value);
37 public function render(string $template): string
39 return parent
::render($template);
42 $this->assignedValues
= [];
45 public function testAssignView(): void
47 $this->createValidContainerMockSet();
49 $this->assignTemplateVars($this->assignedValues
);
51 $self = $this->controller
->assignView('variableName', 'variableValue');
53 static::assertInstanceOf(ShaarliController
::class, $self);
54 static::assertSame('variableValue', $this->assignedValues
['variableName']);
57 public function testRender(): void
59 $this->createValidContainerMockSet();
61 $this->assignTemplateVars($this->assignedValues
);
63 $this->container
->bookmarkService
65 ->willReturnCallback(function (string $visibility): int {
66 return $visibility === BookmarkFilter
::$PRIVATE ? 5 : 10;
70 $this->container
->pluginManager
71 ->method('executeHooks')
72 ->willReturnCallback(function (string $hook, array &$data, array $params): array {
73 return $data[$hook] = $params;
75 $this->container
->pluginManager
->method('getErrors')->willReturn(['error']);
77 $this->container
->loginManager
->method('isLoggedIn')->willReturn(true);
79 $render = $this->controller
->render('templateName');
81 static::assertSame('templateName', $render);
83 static::assertSame(10, $this->assignedValues
['linkcount']);
84 static::assertSame(5, $this->assignedValues
['privateLinkcount']);
85 static::assertSame(['error'], $this->assignedValues
['plugin_errors']);
87 static::assertSame('templateName', $this->assignedValues
['plugins_includes']['render_includes']['target']);
88 static::assertTrue($this->assignedValues
['plugins_includes']['render_includes']['loggedin']);
89 static::assertSame('templateName', $this->assignedValues
['plugins_header']['render_header']['target']);
90 static::assertTrue($this->assignedValues
['plugins_header']['render_header']['loggedin']);
91 static::assertSame('templateName', $this->assignedValues
['plugins_footer']['render_footer']['target']);
92 static::assertTrue($this->assignedValues
['plugins_footer']['render_footer']['loggedin']);