Updating prototype engine and test case for request()

This commit is contained in:
mark_story 2009-04-06 00:03:19 -04:00
parent 5f7abae48c
commit 00f3c6f25d
2 changed files with 31 additions and 13 deletions

View file

@ -38,7 +38,8 @@ class PrototypeEngineHelper extends JsBaseEngineHelper {
'async' => 'asyncrhronous', 'async' => 'asyncrhronous',
'data' => 'parameters', 'data' => 'parameters',
'before' => 'onCreate', 'before' => 'onCreate',
'complete' => 'onSuccess', 'success' => 'onSuccess',
'complete' => 'onComplete',
'error' => 'onFailure' 'error' => 'onFailure'
) )
); );
@ -161,7 +162,8 @@ class PrototypeEngineHelper extends JsBaseEngineHelper {
function request($url, $options = array()) { function request($url, $options = array()) {
$url = '"'. $this->url($url) . '"'; $url = '"'. $this->url($url) . '"';
$options = $this->_mapOptions('request', $options); $options = $this->_mapOptions('request', $options);
$type = $data = null; $type = '.Request';
$data = null;
/*if (isset($options['type']) && strtolower($options['type']) == 'json') { /*if (isset($options['type']) && strtolower($options['type']) == 'json') {
$type = '.JSON'; $type = '.JSON';
if (!empty($options['data'])) { if (!empty($options['data'])) {
@ -171,15 +173,11 @@ class PrototypeEngineHelper extends JsBaseEngineHelper {
unset($options['type']); unset($options['type']);
}*/ }*/
if (isset($options['update'])) { if (isset($options['update'])) {
$options['update'] = str_replace('#', '', $options['update']); $url = '"' . str_replace('#', '', $options['update']) . '", ' . $url;
$type = '.Updater'; $type = '.Updater';
if (!empty($options['data'])) { unset($options['update'], $options['type']);
$data = $this->_toQuerystring($options['data']);
unset($options['data']);
}
unset($options['type']);
} }
$callbacks = array('onComplete', 'onFailure', 'onRequest'); $callbacks = array('onCreate', 'onComplete', 'onFailure', 'onRequest', 'onSuccess');
$options = $this->_parseOptions($options, $callbacks); $options = $this->_parseOptions($options, $callbacks);
if (!empty($options)) { if (!empty($options)) {
$options = ', {' . $options . '}'; $options = ', {' . $options . '}';

View file

@ -114,7 +114,8 @@ class PrototypeEngineHelperTestCase extends CakeTestCase {
* @return void * @return void
**/ **/
function testEffect() { function testEffect() {
$result = $this->Proto->get('#foo')->effect('show'); $this->Proto->get('#foo');
$result = $this->Proto->effect('show');
$expected = '$("foo").show();'; $expected = '$("foo").show();';
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
@ -169,11 +170,30 @@ class PrototypeEngineHelperTestCase extends CakeTestCase {
**/ **/
function testRequest() { function testRequest() {
$result = $this->Proto->request(array('controller' => 'posts', 'action' => 'view', 1)); $result = $this->Proto->request(array('controller' => 'posts', 'action' => 'view', 1));
$expected = 'var jsRequest = new Ajax("/posts/view/1");'; $expected = 'var jsRequest = new Ajax.Request("/posts/view/1");';
$this->assertEqual($result, $expected);
$result = $this->Proto->request('/posts/view/1', array(
'method' => 'post',
'complete' => 'doComplete',
'before' => 'doBefore',
'success' => 'doSuccess',
'error' => 'doError',
'data' => array('name' => 'jim', 'height' => '185cm')
));
$expected = 'var jsRequest = new Ajax.Request("/posts/view/1", {method:"post", onComplete:doComplete, onCreate:doBefore, onFailure:doError, onSuccess:doSuccess, parameters:{"name":"jim","height":"185cm"}});';
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
$result = $this->Proto->request('/posts/view/1', array('update' => 'content')); $result = $this->Proto->request('/posts/view/1', array('update' => 'content'));
$expected = 'var jsRequest = new Ajax.Updater("/posts/view/1", {update:"content"});'; $expected = 'var jsRequest = new Ajax.Updater("content", "/posts/view/1");';
$this->assertEqual($result, $expected);
$result = $this->Proto->request('/people/edit/1', array(
'method' => 'post',
'complete' => 'doSuccess',
'update' => '#update-zone'
));
$expected = 'var jsRequest = new Ajax.Updater("update-zone", "/people/edit/1", {method:"post", onComplete:doSuccess});';
$this->assertEqual($result, $expected); $this->assertEqual($result, $expected);
/* $result = $this->Proto->request('/people/edit/1', array( /* $result = $this->Proto->request('/people/edit/1', array(