diff options
Diffstat (limited to 'tests/api/controllers/links/PostLinkTest.php')
-rw-r--r-- | tests/api/controllers/links/PostLinkTest.php | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/tests/api/controllers/links/PostLinkTest.php b/tests/api/controllers/links/PostLinkTest.php index fe3de66f..e12f803b 100644 --- a/tests/api/controllers/links/PostLinkTest.php +++ b/tests/api/controllers/links/PostLinkTest.php | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | namespace Shaarli\Api\Controllers; | 3 | namespace Shaarli\Api\Controllers; |
4 | 4 | ||
5 | use malkusch\lock\mutex\NoMutex; | ||
5 | use Shaarli\Bookmark\Bookmark; | 6 | use Shaarli\Bookmark\Bookmark; |
6 | use Shaarli\Bookmark\BookmarkFileService; | 7 | use Shaarli\Bookmark\BookmarkFileService; |
7 | use Shaarli\Config\ConfigManager; | 8 | use Shaarli\Config\ConfigManager; |
@@ -72,6 +73,7 @@ class PostLinkTest extends TestCase | |||
72 | */ | 73 | */ |
73 | protected function setUp(): void | 74 | protected function setUp(): void |
74 | { | 75 | { |
76 | $mutex = new NoMutex(); | ||
75 | $this->conf = new ConfigManager('tests/utils/config/configJson'); | 77 | $this->conf = new ConfigManager('tests/utils/config/configJson'); |
76 | $this->conf->set('resource.datastore', self::$testDatastore); | 78 | $this->conf->set('resource.datastore', self::$testDatastore); |
77 | $this->refDB = new \ReferenceLinkDB(); | 79 | $this->refDB = new \ReferenceLinkDB(); |
@@ -79,7 +81,7 @@ class PostLinkTest extends TestCase | |||
79 | $refHistory = new \ReferenceHistory(); | 81 | $refHistory = new \ReferenceHistory(); |
80 | $refHistory->write(self::$testHistory); | 82 | $refHistory->write(self::$testHistory); |
81 | $this->history = new History(self::$testHistory); | 83 | $this->history = new History(self::$testHistory); |
82 | $this->bookmarkService = new BookmarkFileService($this->conf, $this->history, true); | 84 | $this->bookmarkService = new BookmarkFileService($this->conf, $this->history, $mutex, true); |
83 | 85 | ||
84 | $this->container = new Container(); | 86 | $this->container = new Container(); |
85 | $this->container['conf'] = $this->conf; | 87 | $this->container['conf'] = $this->conf; |
@@ -90,8 +92,8 @@ class PostLinkTest extends TestCase | |||
90 | 92 | ||
91 | $mock = $this->createMock(Router::class); | 93 | $mock = $this->createMock(Router::class); |
92 | $mock->expects($this->any()) | 94 | $mock->expects($this->any()) |
93 | ->method('relativePathFor') | 95 | ->method('pathFor') |
94 | ->willReturn('api/v1/bookmarks/1'); | 96 | ->willReturn('/api/v1/bookmarks/1'); |
95 | 97 | ||
96 | // affect @property-read... seems to work | 98 | // affect @property-read... seems to work |
97 | $this->controller->getCi()->router = $mock; | 99 | $this->controller->getCi()->router = $mock; |
@@ -126,7 +128,7 @@ class PostLinkTest extends TestCase | |||
126 | 128 | ||
127 | $response = $this->controller->postLink($request, new Response()); | 129 | $response = $this->controller->postLink($request, new Response()); |
128 | $this->assertEquals(201, $response->getStatusCode()); | 130 | $this->assertEquals(201, $response->getStatusCode()); |
129 | $this->assertEquals('api/v1/bookmarks/1', $response->getHeader('Location')[0]); | 131 | $this->assertEquals('/api/v1/bookmarks/1', $response->getHeader('Location')[0]); |
130 | $data = json_decode((string) $response->getBody(), true); | 132 | $data = json_decode((string) $response->getBody(), true); |
131 | $this->assertEquals(self::NB_FIELDS_LINK, count($data)); | 133 | $this->assertEquals(self::NB_FIELDS_LINK, count($data)); |
132 | $this->assertEquals(43, $data['id']); | 134 | $this->assertEquals(43, $data['id']); |
@@ -160,6 +162,8 @@ class PostLinkTest extends TestCase | |||
160 | 'description' => 'shaare description', | 162 | 'description' => 'shaare description', |
161 | 'tags' => ['one', 'two'], | 163 | 'tags' => ['one', 'two'], |
162 | 'private' => true, | 164 | 'private' => true, |
165 | 'created' => '2015-05-05T12:30:00+03:00', | ||
166 | 'updated' => '2016-06-05T14:32:10+03:00', | ||
163 | ]; | 167 | ]; |
164 | $env = Environment::mock([ | 168 | $env = Environment::mock([ |
165 | 'REQUEST_METHOD' => 'POST', | 169 | 'REQUEST_METHOD' => 'POST', |
@@ -171,7 +175,7 @@ class PostLinkTest extends TestCase | |||
171 | $response = $this->controller->postLink($request, new Response()); | 175 | $response = $this->controller->postLink($request, new Response()); |
172 | 176 | ||
173 | $this->assertEquals(201, $response->getStatusCode()); | 177 | $this->assertEquals(201, $response->getStatusCode()); |
174 | $this->assertEquals('api/v1/bookmarks/1', $response->getHeader('Location')[0]); | 178 | $this->assertEquals('/api/v1/bookmarks/1', $response->getHeader('Location')[0]); |
175 | $data = json_decode((string) $response->getBody(), true); | 179 | $data = json_decode((string) $response->getBody(), true); |
176 | $this->assertEquals(self::NB_FIELDS_LINK, count($data)); | 180 | $this->assertEquals(self::NB_FIELDS_LINK, count($data)); |
177 | $this->assertEquals(43, $data['id']); | 181 | $this->assertEquals(43, $data['id']); |
@@ -181,10 +185,8 @@ class PostLinkTest extends TestCase | |||
181 | $this->assertEquals($link['description'], $data['description']); | 185 | $this->assertEquals($link['description'], $data['description']); |
182 | $this->assertEquals($link['tags'], $data['tags']); | 186 | $this->assertEquals($link['tags'], $data['tags']); |
183 | $this->assertEquals(true, $data['private']); | 187 | $this->assertEquals(true, $data['private']); |
184 | $this->assertTrue( | 188 | $this->assertSame($link['created'], $data['created']); |
185 | new \DateTime('2 seconds ago') < \DateTime::createFromFormat(\DateTime::ATOM, $data['created']) | 189 | $this->assertSame($link['updated'], $data['updated']); |
186 | ); | ||
187 | $this->assertEquals('', $data['updated']); | ||
188 | } | 190 | } |
189 | 191 | ||
190 | /** | 192 | /** |