From 87c5a5da6afd369ad44f692bf97e2ad547b093f0 Mon Sep 17 00:00:00 2001
From: mark_story <mark@mark-story.com>
Date: Sun, 29 Mar 2009 23:00:39 -0400
Subject: [PATCH] Fixing jquery::request() and update key. Adding drag and drop
 test skeleton to mootools/jquery

---
 cake/libs/view/helpers/jquery_engine.php      |  6 +++++
 .../libs/view/helpers/jquery_engine.test.php  | 24 +++++++++++++++++++
 .../view/helpers/mootools_engine.test.php     | 16 +++++++++++++
 3 files changed, 46 insertions(+)

diff --git a/cake/libs/view/helpers/jquery_engine.php b/cake/libs/view/helpers/jquery_engine.php
index acf800671..70b6c41ab 100644
--- a/cake/libs/view/helpers/jquery_engine.php
+++ b/cake/libs/view/helpers/jquery_engine.php
@@ -131,6 +131,8 @@ class JqueryEngineHelper extends JsBaseEngineHelper {
 /**
  * Create an $.ajax() call.
  *
+ * If the 'update' key is set, success callback will be overridden.
+ *
  * @param mixed $url
  * @param array $options
  * @return string The completed ajax call.
@@ -142,6 +144,10 @@ class JqueryEngineHelper extends JsBaseEngineHelper {
 			$options['data'] = $this->_toQuerystring($options['data']);
 		}
 		$options['url'] = $url;
+		if (isset($options['update'])) {
+			$options['success'] = 'function (msg, status) {$("' . $options['update'] . '").html(msg);}';
+			unset($options['update']);
+		}
 		$callbacks = array('success', 'error', 'beforeSend', 'complete');
 		$options = $this->_parseOptions($options, $callbacks);
 		return '$.ajax({' . $options .'});';
diff --git a/cake/tests/cases/libs/view/helpers/jquery_engine.test.php b/cake/tests/cases/libs/view/helpers/jquery_engine.test.php
index 43c0890f0..81bfc964f 100644
--- a/cake/tests/cases/libs/view/helpers/jquery_engine.test.php
+++ b/cake/tests/cases/libs/view/helpers/jquery_engine.test.php
@@ -153,6 +153,14 @@ class JqueryEngineHelperTestCase extends CakeTestCase {
 		));
 		$expected = '$.ajax({data:"name=jim&height=185cm", dataType:"json", error:handleError, method:"post", success:doSuccess, url:"/people/edit/1"});';
 		$this->assertEqual($result, $expected);
+		
+		$result = $this->Jquery->request('/people/edit/1', array(
+			'update' => '#updated',
+			'success' => 'doFoo',
+			'method' => 'post'
+		));
+		$expected = '$.ajax({method:"post", success:function (msg, status) {$("#updated").html(msg);}, url:"/people/edit/1"});';
+		$this->assertEqual($result, $expected);
 	}
 /**
  * test sortable list generation
@@ -170,5 +178,21 @@ class JqueryEngineHelperTestCase extends CakeTestCase {
 		$expected = '$("#myList").sortable({containment:"parent", distance:5, sort:onSort, start:onStart, stop:onStop});';
 		$this->assertEqual($result, $expected);
 	}
+/**
+ * test drag() method
+ *
+ * @return void
+ **/
+	function testDrag() {
+		
+	}
+/**
+ * test drop() method
+ *
+ * @return void
+ **/
+	function testDrop() {
+		
+	}
 }
 ?>
\ No newline at end of file
diff --git a/cake/tests/cases/libs/view/helpers/mootools_engine.test.php b/cake/tests/cases/libs/view/helpers/mootools_engine.test.php
index 294d06e91..780ade21f 100644
--- a/cake/tests/cases/libs/view/helpers/mootools_engine.test.php
+++ b/cake/tests/cases/libs/view/helpers/mootools_engine.test.php
@@ -203,5 +203,21 @@ class MooEngineHelperTestCase extends CakeTestCase {
 		$expected = 'var mooSortable = new Sortables($("myList"), {constrain:"parent", onComplete:onStop, onSort:onSort, onStart:onStart, snap:5});';
 		$this->assertEqual($result, $expected);
 	}
+/**
+ * test drag() method
+ *
+ * @return void
+ **/
+	function testDrag() {
+
+	}
+/**
+ * test drop() method
+ *
+ * @return void
+ **/
+	function testDrop() {
+
+	}
 }
 ?>
\ No newline at end of file