aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/front/controller/visitor/FeedControllerTest.php
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2020-05-22 13:20:31 +0200
committerArthurHoaro <arthur@hoa.ro>2020-07-23 21:19:21 +0200
commit2899ebb5b5e82890c877151f5c02045266ac9973 (patch)
tree0c4e2684c7f6d161f92a21181bfa4b2f78d6a82f /tests/front/controller/visitor/FeedControllerTest.php
parentaf290059d10319e76d1e7d78b592cab99c26d91a (diff)
downloadShaarli-2899ebb5b5e82890c877151f5c02045266ac9973.tar.gz
Shaarli-2899ebb5b5e82890c877151f5c02045266ac9973.tar.zst
Shaarli-2899ebb5b5e82890c877151f5c02045266ac9973.zip
Initialize admin Slim controllers
- Reorganize visitor controllers - Fix redirection with Slim's requests base path - Fix daily links
Diffstat (limited to 'tests/front/controller/visitor/FeedControllerTest.php')
-rw-r--r--tests/front/controller/visitor/FeedControllerTest.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/tests/front/controller/visitor/FeedControllerTest.php b/tests/front/controller/visitor/FeedControllerTest.php
new file mode 100644
index 00000000..fd4679ea
--- /dev/null
+++ b/tests/front/controller/visitor/FeedControllerTest.php
@@ -0,0 +1,151 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Shaarli\Front\Controller\Visitor;
6
7use PHPUnit\Framework\TestCase;
8use Shaarli\Feed\FeedBuilder;
9use Slim\Http\Request;
10use Slim\Http\Response;
11
12class FeedControllerTest extends TestCase
13{
14 use FrontControllerMockHelper;
15
16 /** @var FeedController */
17 protected $controller;
18
19 public function setUp(): void
20 {
21 $this->createContainer();
22
23 $this->container->feedBuilder = $this->createMock(FeedBuilder::class);
24
25 $this->controller = new FeedController($this->container);
26 }
27
28 /**
29 * Feed Controller - RSS default behaviour
30 */
31 public function testDefaultRssController(): void
32 {
33 $this->createValidContainerMockSet();
34
35 $request = $this->createMock(Request::class);
36 $response = new Response();
37
38 $this->container->feedBuilder->expects(static::once())->method('setLocale');
39 $this->container->feedBuilder->expects(static::once())->method('setHideDates')->with(false);
40 $this->container->feedBuilder->expects(static::once())->method('setUsePermalinks')->with(true);
41
42 // Save RainTPL assigned variables
43 $assignedVariables = [];
44 $this->assignTemplateVars($assignedVariables);
45
46 $this->container->feedBuilder->method('buildData')->willReturn(['content' => 'data']);
47
48 // Make sure that PluginManager hook is triggered
49 $this->container->pluginManager
50 ->expects(static::at(0))
51 ->method('executeHooks')
52 ->willReturnCallback(function (string $hook, array $data, array $param): void {
53 static::assertSame('render_feed', $hook);
54 static::assertSame('data', $data['content']);
55
56 static::assertArrayHasKey('loggedin', $param);
57 static::assertSame('rss', $param['target']);
58 })
59 ;
60
61 $result = $this->controller->rss($request, $response);
62
63 static::assertSame(200, $result->getStatusCode());
64 static::assertStringContainsString('application/rss', $result->getHeader('Content-Type')[0]);
65 static::assertSame('feed.rss', (string) $result->getBody());
66 static::assertSame('data', $assignedVariables['content']);
67 }
68
69 /**
70 * Feed Controller - ATOM default behaviour
71 */
72 public function testDefaultAtomController(): void
73 {
74 $this->createValidContainerMockSet();
75
76 $request = $this->createMock(Request::class);
77 $response = new Response();
78
79 $this->container->feedBuilder->expects(static::once())->method('setLocale');
80 $this->container->feedBuilder->expects(static::once())->method('setHideDates')->with(false);
81 $this->container->feedBuilder->expects(static::once())->method('setUsePermalinks')->with(true);
82
83 // Save RainTPL assigned variables
84 $assignedVariables = [];
85 $this->assignTemplateVars($assignedVariables);
86
87 $this->container->feedBuilder->method('buildData')->willReturn(['content' => 'data']);
88
89 // Make sure that PluginManager hook is triggered
90 $this->container->pluginManager
91 ->expects(static::at(0))
92 ->method('executeHooks')
93 ->willReturnCallback(function (string $hook, array $data, array $param): void {
94 static::assertSame('render_feed', $hook);
95 static::assertSame('data', $data['content']);
96
97 static::assertArrayHasKey('loggedin', $param);
98 static::assertSame('atom', $param['target']);
99 })
100 ;
101
102 $result = $this->controller->atom($request, $response);
103
104 static::assertSame(200, $result->getStatusCode());
105 static::assertStringContainsString('application/atom', $result->getHeader('Content-Type')[0]);
106 static::assertSame('feed.atom', (string) $result->getBody());
107 static::assertSame('data', $assignedVariables['content']);
108 }
109
110 /**
111 * Feed Controller - ATOM with parameters
112 */
113 public function testAtomControllerWithParameters(): void
114 {
115 $this->createValidContainerMockSet();
116
117 $request = $this->createMock(Request::class);
118 $request->method('getParams')->willReturn(['parameter' => 'value']);
119 $response = new Response();
120
121 // Save RainTPL assigned variables
122 $assignedVariables = [];
123 $this->assignTemplateVars($assignedVariables);
124
125 $this->container->feedBuilder
126 ->method('buildData')
127 ->with('atom', ['parameter' => 'value'])
128 ->willReturn(['content' => 'data'])
129 ;
130
131 // Make sure that PluginManager hook is triggered
132 $this->container->pluginManager
133 ->expects(static::at(0))
134 ->method('executeHooks')
135 ->willReturnCallback(function (string $hook, array $data, array $param): void {
136 static::assertSame('render_feed', $hook);
137 static::assertSame('data', $data['content']);
138
139 static::assertArrayHasKey('loggedin', $param);
140 static::assertSame('atom', $param['target']);
141 })
142 ;
143
144 $result = $this->controller->atom($request, $response);
145
146 static::assertSame(200, $result->getStatusCode());
147 static::assertStringContainsString('application/atom', $result->getHeader('Content-Type')[0]);
148 static::assertSame('feed.atom', (string) $result->getBody());
149 static::assertSame('data', $assignedVariables['content']);
150 }
151}