Improving the code coverage

This commit is contained in:
Stig Lindqvist 2014-02-19 09:51:54 +13:00
parent 7a843e222f
commit f806987ba7
4 changed files with 80 additions and 3 deletions

View File

@ -29,13 +29,15 @@ class ContentReviewCMSPageEditController extends LeftAndMainExtension {
} }
$SQL_id = Convert::raw2sql($data['ID']); $SQL_id = Convert::raw2sql($data['ID']);
$record = SiteTree::get()->byID($SQL_id); $record = SiteTree::get()->byID($SQL_id);
if($record && !$record->canEdit()) {
return Security::permissionFailure($this);
}
if(!$record || !$record->ID) { if(!$record || !$record->ID) {
throw new SS_HTTPResponse_Exception("Bad record ID #$SQL_id", 404); throw new SS_HTTPResponse_Exception("Bad record ID #$SQL_id", 404);
} }
if(!$record->canEdit()) {
return Security::permissionFailure($this->owner);
}
$fields = new FieldList(); $fields = new FieldList();
$fields->push(HiddenField::create('ID', 'ID', $SQL_id)); $fields->push(HiddenField::create('ID', 'ID', $SQL_id));
$fields->push(TextareaField::create('ReviewNotes', 'Review notes')); $fields->push(TextareaField::create('ReviewNotes', 'Review notes'));

View File

@ -3,6 +3,7 @@
/** /**
* Description of GroupContentReview * Description of GroupContentReview
* *
* @codeCoverageIgnore
*/ */
class ContentReviewOwner extends DataExtension { class ContentReviewOwner extends DataExtension {

View File

@ -0,0 +1,70 @@
<?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);
}
}

View File

@ -31,6 +31,10 @@ Member:
FirstName: Test FirstName: Test
Surname: Editor Surname: Editor
Groups: =>Group.editorgroup Groups: =>Group.editorgroup
visitor:
FirstName: Kari
Surname: Visitor
Email: visitor@example.com
Page: Page:
home: home: