diff --git a/src/Extensions/SiteTreeContentReview.php b/src/Extensions/SiteTreeContentReview.php index 3613c42..30e527a 100644 --- a/src/Extensions/SiteTreeContentReview.php +++ b/src/Extensions/SiteTreeContentReview.php @@ -560,6 +560,8 @@ public function canBeReviewedBy(Member $member = null) return true; } + var_dump($this->owner->hasMethod("canReviewContent")); + // Check whether this user is allowed to review the content of the page. if ($this->owner->hasMethod("canReviewContent") && !$this->owner->canReviewContent($member)) { return false; diff --git a/tests/php/ContentReviewBaseTest.php b/tests/php/ContentReviewBaseTest.php deleted file mode 100644 index 0ac0015..0000000 --- a/tests/php/ContentReviewBaseTest.php +++ /dev/null @@ -1,18 +0,0 @@ -getMockBuilder(ContentReviewCMSExtension::class) - ->setMethods(['getReviewContentForm']) + ->onlyMethods(['getReviewContentForm']) ->getMock(); $mock->expects($this->once())->method('getReviewContentForm')->with(123)->willReturn(true); @@ -45,7 +45,7 @@ public function testGetReviewContentFormThrowsExceptionWhenObjectCannotBeReviewe $this->logOut(); $mock = $this->getMockBuilder(ContentReviewCMSExtension::class) - ->setMethods(['findRecord']) + ->onlyMethods(['findRecord']) ->getMock(); $mock->setOwner(new Controller); @@ -62,7 +62,7 @@ public function testGetReviewContentFormThrowsExceptionWhenObjectCannotBeReviewe public function testSaveReviewCallsHandler() { $mock = $this->getMockBuilder(ContentReviewCMSExtension::class) - ->setMethods(['findRecord', 'getReviewContentHandler']) + ->onlyMethods(['findRecord', 'getReviewContentHandler']) ->getMock(); $mock->setOwner(new Controller); @@ -71,7 +71,7 @@ public function testSaveReviewCallsHandler() $mock->expects($this->once())->method('findRecord')->willReturn($mockPage); $mockHandler = $this->getMockBuilder(ReviewContentHandler::class) - ->setMethods(['submitReview']) + ->onlyMethods(['submitReview']) ->getMock(); $mockHandler->expects($this->once()) diff --git a/tests/php/Forms/ReviewContentHandlerTest.php b/tests/php/Forms/ReviewContentHandlerTest.php index a544562..76e4904 100644 --- a/tests/php/Forms/ReviewContentHandlerTest.php +++ b/tests/php/Forms/ReviewContentHandlerTest.php @@ -63,7 +63,7 @@ public function testAddReviewNoteCalledWhenSubmittingReview() $mock = $this->getMockBuilder(ReviewContentHandler::class) ->setConstructorArgs([$controller]) - ->setMethods(['canSubmitReview']) + ->onlyMethods(['canSubmitReview']) ->getMock(); $mock->expects($this->exactly(3))->method('canSubmitReview')->willReturn(true); diff --git a/tests/php/SiteTreeContentReviewTest.php b/tests/php/SiteTreeContentReviewTest.php index 3b1eb20..b728114 100644 --- a/tests/php/SiteTreeContentReviewTest.php +++ b/tests/php/SiteTreeContentReviewTest.php @@ -18,8 +18,9 @@ use SilverStripe\SiteConfig\SiteConfig; use SilverStripe\Versioned\Versioned; use SilverStripe\ORM\ArrayList; +use SilverStripe\Dev\FunctionalTest; -class SiteTreeContentReviewTest extends ContentReviewBaseTest +class SiteTreeContentReviewTest extends FunctionalTest { protected $usesTransactions = false; @@ -372,14 +373,30 @@ public function testPermissionCheckByOnDataObject() { $reviewer = $this->objFromFixture(Member::class, 'editor'); - // Mock Page class with canReviewContent method to return true on first call and false on second call - $mock = $this->getMockBuilder(Page::class) - ->setMethods(['canReviewContent', 'NextReviewDate', 'OwnerUsers']) - ->getMock(); - $mock->expects($this->exactly(2))->method('canReviewContent')->willReturnOnConsecutiveCalls(false, true); - $mock->method('NextReviewDate')->willReturn('2020-02-20 12:00:00'); - $mock->method('OwnerUsers')->willReturn(ArrayList::create([$reviewer])); - $mock->ContentReviewType = 'Custom'; + // Mock Page class with canReviewContent method to return false on first call and true on second call + $mock = new class extends Page { + public $ContentReviewType = 'Custom'; + private $i = 0; + private $reviewer; + public function setReviewer($reviewer) + { + $this->reviewer = $reviewer; + } + public function canReviewContent() + { + $this->i++; + return $this->i === 1 ? false : true; + } + public function NextReviewDate() + { + return '2020-02-20 12:00:00'; + } + public function OwnerUsers() + { + return ArrayList::create([$this->reviewer]); + } + }; + $mock->setReviewer($reviewer); /** @var SiteTreeContentReview $extension */ $extension = Injector::inst()->get(SiteTreeContentReview::class);