Title = 'Test'; $page->write(); $form = ReviewContentHandler::create()->Form($page); $this->assertInstanceOf(Form::class, $form); $this->assertSame('ReviewContentForm', $form->getName()); $this->assertInstanceOf(HiddenField::class, $form->Fields()->fieldByName('ID')); $this->assertInstanceOf(HiddenField::class, $form->Fields()->fieldByName('ClassName')); $this->assertInstanceOf(TextareaField::class, $form->Fields()->fieldByName('Review')); $saveAction = $form->Actions()->first(); $this->assertNotNull($saveAction); $this->assertTrue($saveAction->hasClass('review-content__action')); } public function testExceptionThrownWhenSubmittingReviewForInvalidObject() { $this->expectException(ValidationException::class); $this->expectExceptionMessage('It seems you don\'t have the necessary permissions to submit a content review'); ReviewContentHandler::create()->submitReview(new Member, ['foo' => 'bar']); } public function testAddReviewNoteCalledWhenSubmittingReview() { $this->logInWithPermission('ADMIN'); $controller = new Controller; $request = new HTTPRequest('GET', '/'); $controller->setRequest($request); Injector::inst()->registerservice($request); $mock = $this->getMockBuilder(ReviewContentHandler::class) ->setConstructorArgs([$controller]) ->setMethods(['canSubmitReview']) ->getMock(); $mock->expects($this->exactly(3))->method('canSubmitReview')->willReturn(true); // Via CMS $request->addHeader('X-Formschema-Request', true); $result = $mock->submitReview(new SiteTree, ['Review' => 'testing']); $this->assertSame('Review successfully added', $result); $request->removeHeader('X-Formschema-Request'); // Via AJAX $request->addHeader('X-Requested-With', 'XMLHttpRequest'); $result = $mock->submitReview(new SiteTree, ['Review' => 'testing']); $this->assertInstanceOf(HTTPResponse::class, $result); $this->assertSame(200, $result->getStatusCode()); $this->assertSame('Review successfully added', $result->getBody()); $request->removeHeader('X-Requested-With'); // Default $result = $mock->submitReview(new SiteTree, ['Review' => 'testing']); $this->assertInstanceOf(HTTPResponse::class, $result); $this->assertSame(302, $result->getStatusCode()); } }