mirror of
https://github.com/silverstripe/silverstripe-contentreview
synced 2024-10-22 17:05:47 +02:00
71 lines
2.3 KiB
PHP
71 lines
2.3 KiB
PHP
<?php
|
|
|
|
class ContentReviewCMSPageEditControllerTest extends FunctionalTest {
|
|
|
|
public static $fixture_file = 'contentreview/tests/ContentReviewTest.yml';
|
|
|
|
public function testReviewedThrowsExceptionWithNoRecordID() {
|
|
$this->setExpectedException('SS_HTTPResponse_Exception', 'No record ID', 404);
|
|
$controller = new CMSPageEditController();
|
|
$dummyForm = new CMSForm($controller, 'EditForm', new FieldList(), new FieldList());
|
|
$controller->reviewed(array('ID'=>null, 'Message' => null), $dummyForm);
|
|
}
|
|
|
|
public function testReviewedThrowsExceptionWithWrongRecordID() {
|
|
$this->setExpectedException('SS_HTTPResponse_Exception', 'Bad record ID #FAIL', 404);
|
|
$controller = new CMSPageEditController();
|
|
$dummyForm = new CMSForm($controller, 'EditForm', new FieldList(), new FieldList());
|
|
$controller->reviewed(array('ID'=>'FAIL', 'Message' => null), $dummyForm);
|
|
}
|
|
|
|
public function testReviewedThrowsExceptionWithWrongAccess() {
|
|
$visitor = $this->objFromFixture('Member', 'visitor');
|
|
$this->loginAs($visitor);
|
|
$page = $this->objFromFixture('Page', 'home');
|
|
$data = array(
|
|
'action_reviewed' => 1
|
|
);
|
|
$response = $this->post('admin/pages/edit/EditForm', $data);
|
|
$this->assertEquals(403, $response->getStatusCode());
|
|
}
|
|
|
|
public function testReviewedWithAuthor() {
|
|
$author = $this->objFromFixture('Member', 'author');
|
|
$this->loginAs($author);
|
|
$page = $this->objFromFixture('Page', 'home');
|
|
|
|
$data = array(
|
|
'action_reviewed' => 1,
|
|
'ID' => $page->ID
|
|
);
|
|
|
|
$response = $this->post('admin/pages/edit/EditForm', $data);
|
|
$this->assertEquals('OK', $response->getStatusDescription());
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
}
|
|
|
|
public function testSaveReview() {
|
|
$author = $this->objFromFixture('Member', 'author');
|
|
$this->loginAs($author);
|
|
$page = $this->objFromFixture('Page', 'home');
|
|
|
|
$data = array(
|
|
'action_save_review' => 1,
|
|
'ID' => $page->ID,
|
|
'ReviewNotes' => 'This is the best page ever'
|
|
);
|
|
|
|
$response = $this->post('admin/pages/edit/EditForm', $data);
|
|
|
|
$this->assertEquals('OK', $response->getStatusDescription());
|
|
$this->assertEquals(200, $response->getStatusCode());
|
|
|
|
$this->assertEquals(1, $page->ReviewLogs()->count());
|
|
$reviewLog = $page->ReviewLogs()->first();
|
|
|
|
$this->assertEquals($data['ReviewNotes'], $reviewLog->Note);
|
|
}
|
|
|
|
}
|
|
|