/** * Test remove() * * @return void */ public function testRemove() { $getAllResponse = new Response(200, ['Content-Type' => 'application/json'], file_get_contents(__DIR__ . '/../../assets/DirectoryTest_getAll.json')); $mkdirResponse = new Response(200, ['Content-Type' => 'text/plain']); $mockedClient = $this->getMockBuilder('\\Seafile\\Client\\Http\\Client')->getMock(); $mockedClient->method('getConfig')->willReturn('http://example.com/'); $expectUri = 'http://example.com/repos/some-crazy-id/dir/?p=test_dir'; $expectParams = ['headers' => ['Accept' => "application/json"]]; // @todo: Test more thoroughly. For example make sure request() gets called with POST twice (a, then b) $mockedClient->expects(self::any())->method('request')->with(self::logicalOr(self::equalTo('GET'), self::equalTo('DELETE')))->will(self::returnCallback(function ($method, $uri, $params) use($getAllResponse, $mkdirResponse, $expectUri, $expectParams) { if ($method === 'GET') { return $getAllResponse; } if ($expectUri === $uri && $expectParams === $params) { return $mkdirResponse; } return new Response(500); })); /** * @var Client $mockedClient */ $directoryResource = new Directory($mockedClient); $lib = new Library(); $lib->id = 'some-crazy-id'; self::assertTrue($directoryResource->remove($lib, 'test_dir')); }