From 048aefd5cb041b25973aab286c1fb4b729849161 Mon Sep 17 00:00:00 2001
From: pbarroca <pbarroca@git-test.afi-sa.fr>
Date: Fri, 8 Jun 2012 16:05:38 +0000
Subject: [PATCH] Couverture MultiUpload

---
 library/Class/MultiUpload/HandlerForm.php     | 37 ++++++++++++++++++-
 .../Class/MultiUpload/HandlersTest.php        | 13 ++++++-
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/library/Class/MultiUpload/HandlerForm.php b/library/Class/MultiUpload/HandlerForm.php
index 7485d2727a3..ace229bd63d 100644
--- a/library/Class/MultiUpload/HandlerForm.php
+++ b/library/Class/MultiUpload/HandlerForm.php
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
  */
 class Class_MultiUpload_HandlerForm extends Class_MultiUpload_Handler {
+	protected $_uploadMover;
+
 	/**
 	 * @param string $path
 	 * @return type
@@ -29,7 +31,7 @@ class Class_MultiUpload_HandlerForm extends Class_MultiUpload_Handler {
 			return false;
 		}
 
-		if (!move_uploaded_file($_FILES['qqfile']['tmp_name'], $path)) {
+		if (!$this->moveUploadedFile($path)) {
 			$this->_error = 'Cannot move uploaded file to ' . $path;
 			return false;
 
@@ -39,6 +41,31 @@ class Class_MultiUpload_HandlerForm extends Class_MultiUpload_Handler {
 	}
 
 
+	/**
+	 * @category testing
+	 * @return bool
+	 */
+	public function moveUploadedFile($path) {
+		return $this->getUploadMover()->moveUploadedFile($path);
+	}
+
+
+	/**
+	 * @category testing
+	 */
+	public function setUploadMover($uploadMover) {
+		$this->_uploadMover = $uploadMover;
+		return $this;
+	}
+
+
+	public function getUploadMover() {
+		if (null != $this->_uploadMover) 
+			return $this->_uploadMover;
+		return new Class_MultiUpload_HandlerForm_UploadMover();
+	}
+
+
 	/**
 	 * @return string
 	 */
@@ -54,4 +81,12 @@ class Class_MultiUpload_HandlerForm extends Class_MultiUpload_Handler {
 		return $_FILES['qqfile']['size'];
 	}
 }
+
+
+class Class_MultiUpload_HandlerForm_UploadMover {
+	public function moveUploadedFile($path) {
+		return move_uploaded_file($_FILES['qqfile']['tmp_name'], $path);
+	}
+}
+
 ?>
\ No newline at end of file
diff --git a/tests/library/Class/MultiUpload/HandlersTest.php b/tests/library/Class/MultiUpload/HandlersTest.php
index c3540d15135..ed64619c1e8 100644
--- a/tests/library/Class/MultiUpload/HandlersTest.php
+++ b/tests/library/Class/MultiUpload/HandlersTest.php
@@ -121,6 +121,17 @@ class MultiUploalHandlerFormTest extends MultiUploadHandlerTestCase {
 
 		$this->assertFalse($this->_handler->save(sys_get_temp_dir() . '/test.gif'));
 		$this->assertStringStartsWith('Cannot move uploaded file to',
-																									$this->_handler->getError());
+																	$this->_handler->getError());
 	}
+
+
+	/** @test */
+	public function withSizeAndUploadMovedSaveShouldReturnTrue() {
+		$_FILES['qqfile']['size'] = '111001';
+		$this->_handler->setUploadMover(Storm_Test_ObjectWrapper::mock()
+																		->whenCalled('moveUploadedFile')
+																		->answers(true));
+		$this->assertTrue($this->_handler->save(sys_get_temp_dir(). '/test.gif'));
+	}
+
 }
\ No newline at end of file
-- 
GitLab