]>
Commit | Line | Data |
---|---|---|
5d8de758 A |
1 | <?php |
2 | ||
3 | declare(strict_types=1); | |
4 | ||
5 | namespace Shaarli\Front\Controller\Admin; | |
6 | ||
7 | use Shaarli\Config\ConfigManager; | |
8 | use Shaarli\Formatter\BookmarkMarkdownFormatter; | |
9 | use Shaarli\Http\HttpAccess; | |
10 | use Shaarli\TestCase; | |
11 | use Slim\Http\Request; | |
12 | use Slim\Http\Response; | |
13 | ||
14 | class ShaareAddControllerTest extends TestCase | |
15 | { | |
16 | use FrontAdminControllerMockHelper; | |
17 | ||
18 | /** @var ShaareAddController */ | |
19 | protected $controller; | |
20 | ||
21 | public function setUp(): void | |
22 | { | |
23 | $this->createContainer(); | |
24 | ||
25 | $this->container->httpAccess = $this->createMock(HttpAccess::class); | |
26 | $this->controller = new ShaareAddController($this->container); | |
27 | } | |
28 | ||
29 | /** | |
30 | * Test displaying add link page | |
31 | */ | |
32 | public function testAddShaare(): void | |
33 | { | |
34 | $assignedVariables = []; | |
35 | $this->assignTemplateVars($assignedVariables); | |
36 | ||
37 | $request = $this->createMock(Request::class); | |
38 | $response = new Response(); | |
39 | ||
40 | $expectedTags = [ | |
41 | 'tag1' => 32, | |
42 | 'tag2' => 24, | |
43 | 'tag3' => 1, | |
44 | ]; | |
45 | $this->container->bookmarkService | |
46 | ->expects(static::once()) | |
47 | ->method('bookmarksCountPerTag') | |
48 | ->willReturn($expectedTags) | |
49 | ; | |
50 | $expectedTags = array_merge($expectedTags, [BookmarkMarkdownFormatter::NO_MD_TAG => 1]); | |
51 | ||
52 | $this->container->conf = $this->createMock(ConfigManager::class); | |
53 | $this->container->conf->method('get')->willReturnCallback(function (string $key, $default) { | |
54 | return $key === 'formatter' ? 'markdown' : $default; | |
55 | }); | |
56 | ||
57 | $result = $this->controller->addShaare($request, $response); | |
58 | ||
59 | static::assertSame(200, $result->getStatusCode()); | |
60 | static::assertSame('addlink', (string) $result->getBody()); | |
61 | ||
62 | static::assertSame('Shaare a new link - Shaarli', $assignedVariables['pagetitle']); | |
63 | static::assertFalse($assignedVariables['default_private_links']); | |
64 | static::assertTrue($assignedVariables['async_metadata']); | |
65 | static::assertSame($expectedTags, $assignedVariables['tags']); | |
66 | } | |
67 | ||
68 | /** | |
69 | * Test displaying add link page | |
70 | */ | |
71 | public function testAddShaareWithoutMd(): void | |
72 | { | |
73 | $assignedVariables = []; | |
74 | $this->assignTemplateVars($assignedVariables); | |
75 | ||
76 | $request = $this->createMock(Request::class); | |
77 | $response = new Response(); | |
78 | ||
79 | $expectedTags = [ | |
80 | 'tag1' => 32, | |
81 | 'tag2' => 24, | |
82 | 'tag3' => 1, | |
83 | ]; | |
84 | $this->container->bookmarkService | |
85 | ->expects(static::once()) | |
86 | ->method('bookmarksCountPerTag') | |
87 | ->willReturn($expectedTags) | |
88 | ; | |
89 | ||
90 | $result = $this->controller->addShaare($request, $response); | |
91 | ||
92 | static::assertSame(200, $result->getStatusCode()); | |
93 | static::assertSame('addlink', (string) $result->getBody()); | |
94 | ||
95 | static::assertSame($expectedTags, $assignedVariables['tags']); | |
96 | } | |
97 | } |