silverstripe-contentreview/tests/php/Extensions/ContentReviewCMSExtensionTest.php

94 lines
3.1 KiB
PHP
Raw Normal View History

<?php
namespace SilverStripe\ContentReview\Tests\Extensions;
use SilverStripe\ContentReview\Extensions\ContentReviewCMSExtension;
use SilverStripe\ContentReview\Forms\ReviewContentHandler;
use SilverStripe\Control\Controller;
use SilverStripe\Control\HTTPRequest;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Forms\Form;
use SilverStripe\Security\Member;
class ContentReviewCMSExtensionTest extends SapphireTest
{
/**
* Test that ReviewContentForm finds an ID parameter then returns the result of getReviewContentForm
* with the passed ID
*/
public function testReviewContentForm()
{
$mock = $this->getMockBuilder(ContentReviewCMSExtension::class)
->setMethods(['getReviewContentForm'])
->getMock();
$mock->expects($this->once())->method('getReviewContentForm')->with(123)->willReturn(true);
$request = new HTTPRequest('GET', '/', [], ['ID' => 123]);
$result = $mock->ReviewContentForm($request);
$this->assertTrue($result);
}
/**
* @expectedException SilverStripe\Control\HTTPResponse_Exception
* @expectedExceptionMessage Bad record ID #1234
*/
public function testGetReviewContentFormThrowsExceptionWhenPageNotFound()
{
(new ContentReviewCMSExtension)->getReviewContentForm(1234);
}
/**
* @expectedException SilverStripe\Control\HTTPResponse_Exception
* @expectedExceptionMessage It seems you don't have the necessary permissions to review this content
*/
public function testGetReviewContentFormThrowsExceptionWhenObjectCannotBeReviewed()
{
$this->logOut();
$mock = $this->getMockBuilder(ContentReviewCMSExtension::class)
->setMethods(['findRecord'])
->getMock();
$mock->setOwner(new Controller);
// Return a DataObject without the content review extension applied
$mock->expects($this->once())->method('findRecord')->with(['ID' => 123])->willReturn(new Member);
$mock->getReviewContentForm(123);
}
/**
* Ensure that savereview() calls the ReviewContentHandler and passes the data to it
*/
public function testSaveReviewCallsHandler()
{
$mock = $this->getMockBuilder(ContentReviewCMSExtension::class)
->setMethods(['findRecord', 'getReviewContentHandler'])
->getMock();
$mock->setOwner(new Controller);
$mockPage = (object) ['ID' => 123];
$mock->expects($this->once())->method('findRecord')->willReturn($mockPage);
$mockHandler = $this->getMockBuilder(ReviewContentHandler::class)
->setMethods(['submitReview'])
->getMock();
$mockHandler->expects($this->once())
->method('submitReview')
->with($mockPage, ['foo'])
->willReturn('Success');
$mock->expects($this->once())->method('getReviewContentHandler')->willReturn($mockHandler);
$form = $this->getMockBuilder(Form::class)
->disableOriginalConstructor()
->getMock();
$result = $mock->savereview(['foo'], $form);
$this->assertSame('Success', $result);
}
}