diff --git a/library/Class/WebService/SIGB/VSmart/SearchResponseReader.php b/library/Class/WebService/SIGB/VSmart/SearchResponseReader.php
index c530877e013ffedcc948fd2683bbcc36656687b1..e2c48f7968cb895ea7b981b330b91a95345bd27c 100644
--- a/library/Class/WebService/SIGB/VSmart/SearchResponseReader.php
+++ b/library/Class/WebService/SIGB/VSmart/SearchResponseReader.php
@@ -21,23 +21,23 @@
 
 class Class_WebService_SIGB_VSmart_SearchResponseReader extends Class_WebService_SIGB_AbstractMarcXMLNoticeReader {
 	protected $_current_exemplaire;
-	protected $_STATUT_SYSTEME = array('0' => 'Disponible',
-																		 '4' => 'En prêt',
-																		 '8' => 'En attende de retrait',
-																		 '10' => 'En déplacement',
-																		 '23' => 'Non empruntable',
-																		 '11' => 'Prétendu rendu',
-																		 '12' => 'Perdu',
-																		 '13' => 'Manquant',
-																		 '21' => 'Autre',
-																		 '22' => 'Nouveauté',
-																		 '25' => 'En rachat',
-																		 '26' => 'En réparation',
-																		 '27' => 'En magasin',
-																		 '28' => 'Pilon',
-																		 '29' => 'Exclu du prêt',
-																		 '30' => 'En commande',
-																		 '31' => 'A l\'équipement');
+	protected $_STATUT_SYSTEME = ['0' => 'Disponible',
+																'4' => 'En prêt',
+																'8' => 'En attende de retrait',
+																'10' => 'En déplacement',
+																'23' => 'Non empruntable',
+																'11' => 'Prétendu rendu',
+																'12' => 'Perdu',
+																'13' => 'Manquant',
+																'21' => 'Autre',
+																'22' => 'Nouveauté',
+																'25' => 'En rachat',
+																'26' => 'En réparation',
+																'27' => 'En magasin',
+																'28' => 'Pilon',
+																'29' => 'Exclu du prêt',
+																'30' => 'En commande',
+																'31' => 'A l\'équipement'];
 
 	public static function newInstance() {
 		return new self();
@@ -70,16 +70,21 @@ class Class_WebService_SIGB_VSmart_SearchResponseReader extends Class_WebService
 
 
 	public function endSubfield_852_y($data) {
-		$this->_current_exemplaire->setReservable($data == '4');
+		$this->_current_exemplaire
+			->setReservable($this->isReservable($data));
+
+		$dispo = (array_key_exists($data, $this->_STATUT_SYSTEME)) 
+			? $this->_STATUT_SYSTEME[$data] : 'Inconnu';
 
-		if (array_key_exists($data, $this->_STATUT_SYSTEME))
-			$dispo = $this->_STATUT_SYSTEME[$data];
-		else
-			$dispo = 'Inconnu';
 		$this->_current_exemplaire->setDisponibilite($dispo);
 	}
 
 
+	protected function isReservable($data) {
+		return in_array((int)$data, [4, 8]);
+	}
+
+
 	public function endSubfield_852_u($data) {
 		$this->_current_exemplaire->setVisibleOpac($data != '0');
 	}
@@ -89,18 +94,14 @@ class Class_WebService_SIGB_VSmart_SearchResponseReader extends Class_WebService
 		$date = $data;
 		// date reçue au format AAAAMMJJ, transformée en jj/mm/aaaa
 		if (8 == strlen($date)) {
-			$parts = array(
-				substr($data, 6, 2),
-				substr($date, 4, 2),
-				substr($date, 0, 4),
-			);
+			$parts = [substr($data, 6, 2),
+								substr($date, 4, 2),
+								substr($date, 0, 4)];
 
 			$date = implode('/', $parts);
-
 		}
 
 		$this->_current_exemplaire->setDateRetour($date);
-
 	}
 }
 
diff --git a/tests/library/Class/WebService/SIGB/VSmartFixtures.php b/tests/library/Class/WebService/SIGB/VSmartFixtures.php
index 77398e9e3fe0e853ab7d2af5ca2f73c72233151b..7afd273e10b4de498798729e12b5472f210f0135 100644
--- a/tests/library/Class/WebService/SIGB/VSmartFixtures.php
+++ b/tests/library/Class/WebService/SIGB/VSmartFixtures.php
@@ -220,7 +220,7 @@ class VSmartFixtures {
 												 <subfield code="t">NEM</subfield>
 												 <subfield code="y">4</subfield>
 												 <subfield code="x">20110205</subfield>
-												 <subfield code="y">8</subfield>
+												 <subfield code="y">10</subfield>
 										 </datafield>
 								 </zs:recordData>
 								 <zs:recordPosition>1</zs:recordPosition>
@@ -309,6 +309,17 @@ class VSmartFixtures {
 														 <subfield code="t">LFA</subfield>
 														 <subfield code="y">0</subfield>
 												 </datafield>
+												 <datafield tag="852">
+														 <subfield code="a">RES</subfield>
+														 <subfield code="b">MCFC</subfield>
+														 <subfield code="c">MCRPT</subfield>
+														 <subfield code="e">20110301</subfield>
+														 <subfield code="h">R</subfield>
+														 <subfield code="p">9988O4DV</subfield>
+														 <subfield code="q">9988O4DV</subfield>
+														 <subfield code="t">LFA</subfield>
+														 <subfield code="y">8</subfield>
+												 </datafield>
 										 </zs:recordData>
 										 <zs:recordPosition>-1</zs:recordPosition>
 								 </zs:record>
diff --git a/tests/library/Class/WebService/SIGB/VSmartTest.php b/tests/library/Class/WebService/SIGB/VSmartTest.php
index 7a7393fd518973066ce645cfd3564bdf80f78d42..d58efb954d242e9e4ad504fd706877098372dc77 100644
--- a/tests/library/Class/WebService/SIGB/VSmartTest.php
+++ b/tests/library/Class/WebService/SIGB/VSmartTest.php
@@ -22,20 +22,15 @@ include_once('VSmartFixtures.php');
 
 abstract class  VSmartServiceTestCase extends Storm_Test_ModelTestCase {
 	public function setUp() {
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAnnexe')
-			->whenCalled('findFirstBy')
-			->with(array('code' => 'MCFC'))
-			->answers(Class_CodifAnnexe::getLoader()->newInstanceWithId(2)
-								->setCode('MCFC')
-								->setLibelle('Médiathèque communautaire'))
-			->getWrapper()
-
-			->whenCalled('findFirstBy')
-			->with(array('code' => 'AVER'))
-			->answers(Class_CodifAnnexe::getLoader()->newInstanceWithId(4)
-								->setCode('AVER')
-								->setLibelle('Avermes'))
-			->getWrapper();
+		$this->fixture('Class_CodifAnnexe', 
+									 ['id'=> 1,
+										'code' => 'MCFC',
+										'libelle' => 'Médiathèque communautaire']);
+
+		$this->fixture('Class_CodifAnnexe', 
+									 ['id' => 2,
+										'code' => 'AVER',
+										'libelle' => 'Avermes']);
 	}
 }
 
@@ -66,7 +61,7 @@ class VSmartServiceDummyFunctionsTest extends Storm_Test_ModelTestCase {
 class VSmartGetServiceTest extends Storm_Test_ModelTestCase {
 	public function setUp() {
 		Class_WebService_SIGB_VSmart::reset();
-		$this->service = Class_WebService_SIGB_VSmart::getService(array('url_serveur' => 'vpn.moulins.fr'));
+		$this->service = Class_WebService_SIGB_VSmart::getService(['url_serveur' => 'vpn.moulins.fr']);
 	}
 
 
@@ -90,12 +85,10 @@ class VSmartGetServiceTest extends Storm_Test_ModelTestCase {
 class VSmartServiceWithEmprunteurEvelyneTest extends VSmartServiceTestCase {
 	public function setUp() {
 		parent::setUp();
-		$mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-		$mock_web_client
-			->expects($this->once())
-			->method('open_url')
+		$mock_web_client = $this->mock()
+			->whenCalled('open_url')
 			->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=04051972')
-			->will($this->returnValue(VSmartFixtures::xmlBorrowerEvelyne()));
+			->answers(VSmartFixtures::xmlBorrowerEvelyne());
 
 		$this->evelyne = Class_WebService_SIGB_VSmart_Service::newInstance()
 			->setServerRoot('86.64.58.38/formation/')
@@ -270,12 +263,10 @@ class VSmartServiceWithEmprunteurEvelyneTest extends VSmartServiceTestCase {
 class VSmartServiceWithEmprunteurEvelyneResponseErrorTest extends VSmartServiceTestCase {
 	public function setUp() {
 		parent::setUp();
-		$mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-		$mock_web_client
-			->expects($this->once())
-			->method('open_url')
+		$mock_web_client = $this->mock()
+			->whenCalled('open_url')
 			->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=04051972')
-			->will($this->returnValue(''));
+			->answers('');
 
 		$this->evelyne = Class_WebService_SIGB_VSmart_Service::newInstance()
 			->setServerRoot('86.64.58.38/formation/')
@@ -298,12 +289,10 @@ class VSmartServiceWithEmprunteurEvelyneResponseErrorTest extends VSmartServiceT
 class VSmartServiceWithEmprunteurFranckTest extends  VSmartServiceTestCase {
 	public function setUp() {
 		parent::setUp();
-		$mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-		$mock_web_client
-			->expects($this->once())
-			->method('open_url')
+		$mock_web_client = $this->mock()
+			->whenCalled('open_url')
 			->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=30101964')
-			->will($this->returnValue(VSmartFixtures::xmlBorrowerFranck()));
+			->answers(VSmartFixtures::xmlBorrowerFranck());
 
 		$this->franck = Class_WebService_SIGB_VSmart_Service::newInstance()
 			->setServerRoot('http://46.20.169.8/production')
@@ -430,12 +419,10 @@ class VSmartServiceWithEmprunteurFranckTest extends  VSmartServiceTestCase {
 
 class VSmartServiceBibGetAnthologieLitteratureTest extends Storm_Test_ModelTestCase {
 	public function setUp() {
-		$mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-		$mock_web_client
-			->expects($this->once())
-			->method('open_url')
+		$mock_web_client = $this->mock()
+			->whenCalled('open_url')
 			->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?fu=BibSearch&Application=Bib&Database=1&RequestType=RecordNumber&Request=47918')
-			->will($this->returnValue(VSmartFixtures::xmlNoticeAnthologie()));
+			->answers(VSmartFixtures::xmlNoticeAnthologie());
 
 		$this->anthologie = Class_WebService_SIGB_VSmart_Service::newInstance()
 			->setServerRoot('http://86.64.58.38/formation')
@@ -473,12 +460,10 @@ class VSmartServiceBibGetAnthologieLitteratureTest extends Storm_Test_ModelTestC
 
 class VSmartServiceBibGetHarryPotterTest extends Storm_Test_ModelTestCase {
 	public function setUp() {
-		$mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-		$mock_web_client
-			->expects($this->once())
-			->method('open_url')
+		$mock_web_client = $this->mock()
+			->whenCalled('open_url')
 			->with('http://vpn.agglo-moulins.fr/formation/VubisSmartHttpApi.csp?fu=BibSearch&Application=Bib&Database=2&RequestType=RecordNumber&Request=3066')
-			->will($this->returnValue(VSmartFixtures::xmlNoticeHarryPotter()));
+			->answers(VSmartFixtures::xmlNoticeHarryPotter());
 
 		$this->service = Class_WebService_SIGB_VSmart_Service::newInstance()
 			                                ->setServerRoot('vpn.agglo-moulins.fr/formation/')
@@ -508,8 +493,8 @@ class VSmartServiceBibGetHarryPotterTest extends Storm_Test_ModelTestCase {
 
 
 	/** @test */
-	public function nbExemplairesShouldReturnFour() {
-		$this->assertEquals(4, $this->potter->nbExemplaires());
+	public function nbExemplairesShouldReturnFive() {
+		$this->assertEquals(5, $this->potter->nbExemplaires());
 	}
 
 
@@ -615,14 +600,18 @@ class VSmartServiceBibGetHarryPotterTest extends Storm_Test_ModelTestCase {
 		$this->assertEquals('Inconnu', $this->potter->exemplaireAt(2)->getDisponibilite());
 	}
 
+
+	/** @test */
+	public function fiftItemShouldBeHoldable() {
+		$this->assertTrue($this->potter->exemplaireAt(4)->isReservable());
+	}
 }
 
 
 
 class VSmartServiceFunctionsTest extends Storm_Test_ModelTestCase {
 	public function setUp() {
-		$this->mock_web_client = $this->getMock('Class_WebService_SimpleWebClient');
-
+		$this->mock_web_client = $this->mock();
 		$this->service = Class_WebService_SIGB_VSmart_Service::getService('86.64.58.38/formation/');
 		$this->service->setWebClient($this->mock_web_client);
 	}
@@ -636,92 +625,23 @@ class VSmartServiceFunctionsTest extends Storm_Test_ModelTestCase {
 													<ErrorCode>0</ErrorCode>
 												</Header>
 											</VubisSmart>';
+
 		$this->mock_web_client
-			->expects($this->once())
-			->method('open_url')
+			->whenCalled('open_url')
 			->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?'.http_build_query($expected_params))
-			->will($this->returnValue($returnValue));
-	}
-
-
-	/** testDisabled */
-	public function evelyneReserveHarryPotterShouldAnswerOK() {
-		$this->_setupExpectationsFor(array('fu' => 'ReservationTitle',
-																			 'BorrowerId' => '04051972',
-																			 'Database' => 2,
-																			 'ReserveArea' => 'RES',
-																			 'BibRecord' => '3066',
-																			 'PickupLocation' => 'INST/LOC',
-																			 'MetaInstitution' => 'RES',
-																			 'Language' => 'fre'));
-
-		$this->assertEquals(array('statut' => true,
-															'erreur' => ''),
-												$this->service->reserverExemplaire('04051972', 
-																													 
-																													 '', 
-																													 
-																													 Class_Exemplaire::getLoader()
-																													 ->newInstanceWithId(234)
-																													 ->setIdOrigine('2/3066'), 
-																													  
-																													 'RES'));
-	}
-
-
-
-	/** testDisabled */
-	public function franckReserveAnthologieShouldAnswerOK() {
-		$this->_setupExpectationsFor(array('fu' => 'ReservationTitle',
-																			 'BorrowerId' => '30101964',
-																			 'Database' => 1,
-																			 'ReserveArea' => 'MCFC',
-																			 'BibRecord' => '47918',
-																			 'PickupLocation' => 'INST/LOC',
-																			 'MetaInstitution' => 'RES',
-																			 'Language' => 'fre'));
-
-		$this->assertEquals(array('statut' => true,
-															'erreur' => ''),
-												$this->service->reserverExemplaire('30101964', '', '1/47918', 'MCFC'));
-	}
-
-
-	/** testDisabled */
-	public function franckReserveHarryPotterShouldAnswerError() {
-		$this->_setupExpectationsFor(array('fu' => 'ReservationTitle',
-																			 'BorrowerId' => '30101964',
-																			 'Database' => 2,
-																			 'ReserveArea' => 'RES',
-																			 'BibRecord' => '3066',
-																			 'PickupLocation' => 'INST/LOC',
-																			 'MetaInstitution' => 'RES',
-																			 'Language' => 'fre'),
-
-																 '<VubisSmart>
-																		<Header>
-  																			<Function>ReservationTitle</Function>
-																				<ErrorCode>2</ErrorCode>
-																				<ErrorText>Document non-réservable</ErrorText>
-																		</Header>
-																	</VubisSmart>');
-
-		$this->assertEquals(array('statut' => false,
-															'erreur' => 'Document non-réservable'),
-												$this->service->reserverExemplaire('30101964', '', '2/3066', 'RES'));
+			->answers($returnValue);
 	}
 
 
 	/** @test */
 	public function evelyneSupprimerReservationHarryPotterShouldAnswerOK() {
-		$this->_setupExpectationsFor(array('fu' => 'ReservationCancel',
-																			 'BorrowerId' => '04051972',
-																			 'ItemId' => '1032650148',
-																			 'MetaInstitution' => 'RES',
-																			 'Language' => 'fre'));
-
-		$this->assertEquals(array('statut' => true,
-															'erreur' => ''),
+		$this->_setupExpectationsFor(['fu' => 'ReservationCancel',
+																	'BorrowerId' => '04051972',
+																	'ItemId' => '1032650148',
+																	'MetaInstitution' => 'RES',
+																	'Language' => 'fre']);
+
+		$this->assertEquals(['statut' => true, 'erreur' => ''],
 												$this->service->supprimerReservation(
 																Class_Users::getLoader()->newInstance()
 																	->setLogin('04051972')
@@ -732,14 +652,13 @@ class VSmartServiceFunctionsTest extends Storm_Test_ModelTestCase {
 
 	/** @test */
 	public function evelyneProlongerPretHarryPotterShouldAnswerOK() {
-		$this->_setupExpectationsFor(array('fu' => 'Renewal',
-																			 'BorrowerId' => '04051972',
-																			 'ItemId' => '1032650148',
-																			 'MetaInstitution' => 'RES',
-																			 'Language' => 'fre'));
-
-		$this->assertEquals(array('statut' => true,
-															'erreur' => ''),
+		$this->_setupExpectationsFor(['fu' => 'Renewal',
+																	'BorrowerId' => '04051972',
+																	'ItemId' => '1032650148',
+																	'MetaInstitution' => 'RES',
+																	'Language' => 'fre']);
+
+		$this->assertEquals(['statut' => true, 'erreur' => ''],
 												$this->service->prolongerPret(
 																Class_Users::getLoader()->newInstance()
 																	->setLogin('04051972')
@@ -750,11 +669,11 @@ class VSmartServiceFunctionsTest extends Storm_Test_ModelTestCase {
 
 	/** @test */
 	public function getExemplaireFromNoticeShouldReturnInvalidExemplaire() {
-		$this->_setupExpectationsFor(array('fu' => 'BibSearch',
-																			 'Application' => 'Bib',
-																			 'Database' => '2',
-																			 'RequestType' => 'RecordNumber',
-																			 'Request' => '234'));
+		$this->_setupExpectationsFor(['fu' => 'BibSearch',
+																	'Application' => 'Bib',
+																	'Database' => '2',
+																	'RequestType' => 'RecordNumber',
+																	'Request' => '234']);
 
 		$this->assertFalse($this->service->getExemplaire('2/234', '987')->isValid());
 	}