config = $this->getMockBuilder(IConfig::class)->
disableOriginalConstructor()->
getMock();
$this->config->expects($this->any())->method('getSystemValue')
->with($this->equalTo('secret'))
->willReturn('mysecret');
$this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->
disableOriginalConstructor()->
getMock();
/** @var IRequest $request */
$this->plugin = new PublishPlugin($this->config, $this->urlGenerator);
$root = new SimpleCollection('calendars');
$this->server = new Server($root);
/** @var SimpleCollection $node */
$this->book = $this->getMockBuilder(Calendar::class)->
disableOriginalConstructor()->
getMock();
$this->book->method('getName')->willReturn('cal1');
$root->addChild($this->book);
$this->plugin->initialize($this->server);
}
public function testPublishing(): void {
$this->book->expects($this->once())->method('setPublishStatus')->with(true);
// setup request
$request = new Request('POST', 'cal1');
$request->addHeader('Content-Type', 'application/xml');
$request->setBody('');
$response = new Response();
$this->plugin->httpPost($request, $response);
}
public function testUnPublishing(): void {
$this->book->expects($this->once())->method('setPublishStatus')->with(false);
// setup request
$request = new Request('POST', 'cal1');
$request->addHeader('Content-Type', 'application/xml');
$request->setBody('');
$response = new Response();
$this->plugin->httpPost($request, $response);
}
}