From d3f42ca487287447efb81061609644108044a038 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 19 May 2018 15:04:04 +0200 Subject: Implements Tags endpoints for Shaarli's REST API Endpoints: * List All Tags [GET] * Get a tag [GET] * Update a tag [PUT] * Delete a tag [DELETE] Fixes #904 References shaarli/api-documentation#34 --- tests/api/controllers/links/DeleteLinkTest.php | 126 +++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 tests/api/controllers/links/DeleteLinkTest.php (limited to 'tests/api/controllers/links/DeleteLinkTest.php') diff --git a/tests/api/controllers/links/DeleteLinkTest.php b/tests/api/controllers/links/DeleteLinkTest.php new file mode 100644 index 00000000..7d797137 --- /dev/null +++ b/tests/api/controllers/links/DeleteLinkTest.php @@ -0,0 +1,126 @@ +conf = new ConfigManager('tests/utils/config/configJson'); + $this->refDB = new \ReferenceLinkDB(); + $this->refDB->write(self::$testDatastore); + $this->linkDB = new \LinkDB(self::$testDatastore, true, false); + $refHistory = new \ReferenceHistory(); + $refHistory->write(self::$testHistory); + $this->history = new \History(self::$testHistory); + $this->container = new Container(); + $this->container['conf'] = $this->conf; + $this->container['db'] = $this->linkDB; + $this->container['history'] = $this->history; + + $this->controller = new Links($this->container); + } + + /** + * After each test, remove the test datastore. + */ + public function tearDown() + { + @unlink(self::$testDatastore); + @unlink(self::$testHistory); + } + + /** + * Test DELETE link endpoint: the link should be removed. + */ + public function testDeleteLinkValid() + { + $id = '41'; + $this->assertTrue(isset($this->linkDB[$id])); + $env = Environment::mock([ + 'REQUEST_METHOD' => 'DELETE', + ]); + $request = Request::createFromEnvironment($env); + + $response = $this->controller->deleteLink($request, new Response(), ['id' => $id]); + $this->assertEquals(204, $response->getStatusCode()); + $this->assertEmpty((string) $response->getBody()); + + $this->linkDB = new \LinkDB(self::$testDatastore, true, false); + $this->assertFalse(isset($this->linkDB[$id])); + + $historyEntry = $this->history->getHistory()[0]; + $this->assertEquals(\History::DELETED, $historyEntry['event']); + $this->assertTrue( + (new \DateTime())->add(\DateInterval::createFromDateString('-5 seconds')) < $historyEntry['datetime'] + ); + $this->assertEquals($id, $historyEntry['id']); + } + + /** + * Test DELETE link endpoint: reach not existing ID. + * + * @expectedException Shaarli\Api\Exceptions\ApiLinkNotFoundException + */ + public function testDeleteLink404() + { + $id = -1; + $this->assertFalse(isset($this->linkDB[$id])); + $env = Environment::mock([ + 'REQUEST_METHOD' => 'DELETE', + ]); + $request = Request::createFromEnvironment($env); + + $this->controller->deleteLink($request, new Response(), ['id' => $id]); + } +} -- cgit v1.2.3