Perforce Chronicle 2012.2/486814
API Documentation
|
Test the history index controller. More...
Public Member Functions | |
_createTestTypeAndEntry ($includeId=false) | |
Create a type and a entry for testing. | |
setUp () | |
Perform setup. | |
testIndexAction () | |
Tests the index action of the history index controller. | |
testToolbarAction () | |
Tests the toolbar generation. |
Test the history index controller.
History_Test_IndexControllerTest::_createTestTypeAndEntry | ( | $ | includeId = false | ) |
Create a type and a entry for testing.
integer | $includeId | Flag whether to include id |
{ $elements = array( 'title' => array( 'type' => 'text', 'options' => array('label' => 'Title', 'required' => true), ), 'body' => array( 'type' => 'textarea', 'options' => array('label' => 'Body'), ), 'abstract' => array( 'type' => 'textarea', 'options' => array('label' => 'Abstract'), ), ); if ($includeId) { $elements['id'] = array( 'type' => 'text', 'options' => array('label' => 'ID', 'required' => true) ); } $type = new P4Cms_Content_Type; $type->setId("test-type") ->setLabel("Test Type") ->setElements($elements) ->setValue('icon', file_get_contents(TEST_ASSETS_PATH . '/images/content-type-icon.png')) ->setFieldMetadata('icon', array("mimeType" => "image/png")) ->save(); $entry = new P4Cms_Content; $entry->setContentType($type) ->setValue('title', 'Test Title') ->setValue('body', 'The body of the test') ->setValue('abstract', 'abstract this'); if ($includeId) { $entry->setId('theId'); } else { $entry->setId(1); } $entry->save('a test entry'); return array($type, $entry); }
History_Test_IndexControllerTest::setUp | ( | ) |
Perform setup.
{ parent::setUp(); $this->utility->impersonate('administrator'); }
History_Test_IndexControllerTest::testIndexAction | ( | ) |
Tests the index action of the history index controller.
Gets history with no specified content id, expecting error. Gets history for newly created content, verifies data grid structure. Gets history information for newly created content, verifies json content. Gets history information for revised content, verifies json content.
{ $this->dispatch('/history/index/index'); $this->assertModule('error', 'Expected error module.'); $this->assertController('index', 'Expected index controller'); $this->assertAction('error', 'Expected error action'); list($type, $entry) = $this->_createTestTypeAndEntry(); P4Cms_Record_RegisteredType::create() ->setId('content') ->setRecordClass('P4Cms_Content') ->setUriCallback( function($id, $action, $params) { return call_user_func( P4Cms_Content::getUriCallback(), P4Cms_Content::fetch($id, array('includeDeleted' => true)), $action, $params ); } ); $this->dispatch('/history/index/index/format/partial/type/content/id/' . $entry->getId()); $body = $this->getResponse()->getBody(); $this->assertModule('history', 'Expected module, dispatch #1. '. $body); $this->assertController('index', 'Expected controller, dispatch #1 '. $body); $this->assertAction('index', 'Expected action, dispatch #1 '. $body); // ensure table and dojo data elements exist $this->assertXpath('//div[@dojotype="dojox.data.QueryReadStore"]', 'Expected dojo.data div'); $this->assertXpath('//table[@dojotype="p4cms.ui.grid.DataGrid"]', 'Expected dojox.grid table'); // check initial JSON output $this->resetRequest()->resetResponse(); $this->dispatch('/history/format/json/type/content/id/' . $entry->getId() . '?start=0&count=100'); $body = $this->response->getBody(); $this->assertModule('history', 'Expected module, dispatch #2. '. $body); $this->assertController('index', 'Expected controller, dispatch #2 '. $body); $this->assertAction('index', 'Expected action, dispatch #2 '. $body); $data = Zend_Json::decode($body); $this->assertSame(1, count($data['items']), 'Expected one item'); $this->assertSame($data['items'][0]['version'], '1', 'Expected version to match'); $this->assertSame($data['items'][0]['user'], 'tester', 'Expected user to match'); $this->assertSame($data['items'][0]['date'], 'just now', 'Expected date to match'); $this->assertSame($data['items'][0]['description'], "a test entry\n", 'Expected description to match'); // revise, save, and verify $entry->setValue('title', 'Revised Test Title') ->setValue('body', 'A different test body') ->setValue('abstract', 'Abstractification.'); $entry->save('modified test entry'); $this->resetRequest()->resetResponse(); $this->dispatch('/history/format/json/type/content/id/' . $entry->getId() . '?start=0&count=100'); $body = $this->response->getBody(); $this->assertModule('history', 'Expected module, dispatch #2. '. $body); $this->assertController('index', 'Expected controller, dispatch #2 '. $body); $this->assertAction('index', 'Expected action, dispatch #2 '. $body); $data = Zend_Json::decode($body); $this->assertSame(2, count($data['items']), 'Expected two items'); $this->assertSame($data['items'][0]['version'], '2', 'Expected version to match'); $this->assertSame($data['items'][0]['user'], 'tester', 'Expected user to match'); $this->assertSame($data['items'][0]['date'], 'just now', 'Expected date to match'); $this->assertSame( $data['items'][0]['description'], "modified test entry\n", 'Expected description to match' ); }
History_Test_IndexControllerTest::testToolbarAction | ( | ) |
Tests the toolbar generation.
{ $this->dispatch('/history/index/toolbar/'); $this->assertModule('error', 'Expected error module.'); $this->assertController('index', 'Expected index controller'); $this->assertAction('error', 'Expected error action'); list($type, $entry) = $this->_createTestTypeAndEntry(); P4Cms_Record_RegisteredType::create() ->setId('content') ->setRecordClass('P4Cms_Content') ->setUriCallback( function($id, $action, $params) { return call_user_func( P4Cms_Content::getUriCallback(), P4Cms_Content::fetch($id, array('includeDeleted' => true)), $action, $params ); } ); $this->resetRequest()->resetResponse(); $this->dispatch('/history/index/toolbar/format/partial/type/content/id/' . $entry->getId()); $body = $this->getResponse()->getBody(); $this->assertModule('history', 'Expected module, dispatch #1. '. $body); $this->assertController('index', 'Expected controller, dispatch #1 '. $body); $this->assertAction('toolbar', 'Expected action, dispatch #1 '. $body); $this->assertXpathContentContains( '//div[@dojotype="dijit.MenuItem"]', 'Version 1 by tester just now', 'Expected dijit menu item with version and user information.' ); $this->assertQueryContentContains( 'div.middle > span.change > span.action', 'added', 'Expected action.' ); $this->assertQueryContentContains( 'div.middle > span.change > span.user', 'tester', 'Expected user.' ); $this->assertQueryContentContains( 'div.middle > span.change > span.date', 'just now', 'Expected date.' ); $this->assertQueryContentContains( 'div.middle > span.change > span.description', 'a test entry', 'Expected entry.' ); $this->assertQueryContentContains( 'div', "p4cms.history.view('content', '1');", 'Expected history list button javascript.' ); }