diff --git a/cosmogramme/tests/php/classes/BibTest.php b/cosmogramme/tests/php/classes/BibTest.php
index c451a27dca3d9769ba985c3b9656b379ec204a22..195aabf950b12f7270f753614c143211be4aca78 100644
--- a/cosmogramme/tests/php/classes/BibTest.php
+++ b/cosmogramme/tests/php/classes/BibTest.php
@@ -19,38 +19,42 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
-
+require_once 'ModelTestCase.php';
 require_once 'classe_bib.php';
 
-class BibTest extends Storm_Test_ModelTestCase {
-	protected $_html;
+class BibTest extends ModelTestCase {
+  protected $_html;
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_IntBib::class,
+                   ['id' => 3,
+                    'nom' => null,
+                    'nom_court' => 'An',
+                    'bib' => $this->fixture(Class_Bib::class,
+                                            ['id' => 3,
+                                             'libelle' => 'Annecy'])]);
 
-	public function setUp() {
-		parent::setUp();
-		$this->fixture('Class_IntBib', ['id' => 3,
-																		'nom' => null,
-																		'nom_court' => 'An',
-																		'bib' => $this->fixture('Class_Bib', ['id' => 3,
-																																					'libelle' => 'Annecy'])]);
+    $this->fixture(Class_IntBib::class,
+                   ['id' => 4,
+                    'nom' => null,
+                    'nom_court' => 'Cran']);
 
-		$this->fixture('Class_IntBib', ['id' => 4,
-																		'nom' => null,
-																		'nom_court' => 'Cran']);
+    $this->_html = (new bibliotheque)->getComboNoms(3);
+  }
 
-		$this->_html = (new bibliotheque())->getComboNoms(3);
-	}
 
-	/** @test */
-	public function combosNomsShouldAnswerAnnecySelected() {
-		$this->assertContains('<option value="3" selected="selected">Annecy</option>',
-													$this->_html);
-	}
+  /** @test */
+  public function combosNomsShouldAnswerAnnecySelected() {
+    $this->assertContains('<option value="3" selected="selected">Annecy</option>',
+                          $this->_html);
+  }
 
 
-	/** @test */
-	public function combosNomsShouldAnswerCranNotSelected() {
-		$this->assertContains('<option value="4">Cran</option>',
-													$this->_html);
-	}
+  /** @test */
+  public function combosNomsShouldAnswerCranNotSelected() {
+    $this->assertContains('<option value="4">Cran</option>',
+                          $this->_html);
+  }
 }
-?>
\ No newline at end of file
diff --git a/cosmogramme/tests/php/classes/KohaRecordIntegrationTest.php b/cosmogramme/tests/php/classes/KohaRecordIntegrationTest.php
index 3725d1f83af1096cb858b019847f36e43599a92d..f2694460358ef38703803aa8f84a86b39c73a3b8 100644
--- a/cosmogramme/tests/php/classes/KohaRecordIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/KohaRecordIntegrationTest.php
@@ -23,8 +23,8 @@
 require_once('NoticeIntegrationTest.php');
 
 abstract class KohaRecordIntegrationTestCase extends NoticeIntegrationTestCase {
-  protected $_sigb = Class_IntBib::COM_KOHA;
 
+  protected $_sigb = Class_IntBib::COM_KOHA;
 
   public function getProfilDonnees() {
     return Class_IntProfilDonnees::forKoha()
@@ -33,9 +33,9 @@ abstract class KohaRecordIntegrationTestCase extends NoticeIntegrationTestCase {
   }
 
 
-
   public function setUp() {
     parent::setUp();
+
     $this->fixture(Class_IntBib::class,
                    ['id' => 1,
                     'sigb' => Class_IntBib::SIGB_KOHA]);
@@ -46,11 +46,13 @@ abstract class KohaRecordIntegrationTestCase extends NoticeIntegrationTestCase {
 
 
 class KohaRecordIntegrationBadUnimarcTest extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->loadNotice('unimarc_bad_pagaille');
   }
 
+
   /** @test */
   public function titleShouldBePagaille() {
     $this->assertEquals('La Pagaille', Class_Notice::find(1)->getRecordTitle());
@@ -60,13 +62,17 @@ class KohaRecordIntegrationBadUnimarcTest extends KohaRecordIntegrationTestCase
 
 
 
-class KohaRecordIntegrationRecordWithoutMainTitleTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationRecordWithoutMainTitleTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_NoticeSuccincte::beVolatile();
     $this->loadNotice('unimarc_succint');
   }
 
+
   /** @test */
   public function shortRecordShouldSerializeFoundData() {
     $datas = unserialize(Class_NoticeSuccincte::find(1)->getData());
@@ -84,12 +90,15 @@ class KohaRecordIntegrationRecordWithoutMainTitleTest extends KohaRecordIntegrat
 
 
 class KohaRecordIntegrationBdMilleniumTest extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->loadNotice('unimarc_bd_millenium');
     $this->millenium = Class_Notice::find(1);
   }
 
+
   /** @test */
   public function titreShouldBeHommesQuiNaimaientPasLesFemmes() {
     $this->assertEquals('Les hommes qui n\'aimaient pas les femmes', $this->millenium->getTitrePrincipal());
@@ -101,6 +110,7 @@ class KohaRecordIntegrationBdMilleniumTest extends KohaRecordIntegrationTestCase
     $this->assertContains('Millenium', $this->millenium->getCollections());
   }
 
+
   /** @test */
   public function collectionMilleniumShouldBeIndexed() {
     $this->assertEquals('MILLENIUM MILENIUM', $this->millenium->getRawAttributes()['collection']);
@@ -128,7 +138,9 @@ class KohaRecordIntegrationBdMilleniumTest extends KohaRecordIntegrationTestCase
 
 
 
-class KohaRecordIntegrationUnimarcWithoutLabelBlocTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationUnimarcWithoutLabelBlocTest
+  extends KohaRecordIntegrationTestCase {
+
   public function getProfilDonnees() {
     return Class_IntProfilDonnees::forKoha()->getRawAttributes();
   }
@@ -136,6 +148,7 @@ class KohaRecordIntegrationUnimarcWithoutLabelBlocTest extends KohaRecordIntegra
 
   public function setUp() {
     parent::setUp();
+
     $this->loadNotice('unimarc_no_bloc_label_koha');
   }
 
@@ -145,15 +158,16 @@ class KohaRecordIntegrationUnimarcWithoutLabelBlocTest extends KohaRecordIntegra
     $this->assertSame(0,
                       $this->notice_integration->noticeToDBEnreg($this->notice_data)['type_doc']);
   }
-
 }
 
 
 
 
 class KohaRecordIntegrationZone600RameauTest extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 1,
                     'libelle' => 'Sujet PERSONNE',
@@ -167,7 +181,6 @@ class KohaRecordIntegrationZone600RameauTest extends KohaRecordIntegrationTestCa
                     'rule_list_id_field' => ['9']
                    ]);
 
-
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 2,
                     'libelle' => 'Sujet KONVEUTPAS',
@@ -181,7 +194,6 @@ class KohaRecordIntegrationZone600RameauTest extends KohaRecordIntegrationTestCa
                     'rule_list_id_field' => ['9']
                    ]);
 
-
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 3,
                     'id_thesaurus' => 'SUJK0001',
@@ -190,7 +202,6 @@ class KohaRecordIntegrationZone600RameauTest extends KohaRecordIntegrationTestCa
                     'libelle' => 'Dédoublonne moi',
                     'libelle_facette' => 'SVP']);
 
-
     $this->loadNotice('unimarc_le_corbusier');
   }
 
@@ -225,6 +236,7 @@ class KohaRecordIntegrationZone600RameauTest extends KohaRecordIntegrationTestCa
 
 
 class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase {
+
   public function getProfilDonnees() {
     return Class_IntProfilDonnees::forKoha()
       ->setIdProfil(111)
@@ -235,6 +247,7 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 1,
                     'libelle' => 'Année de publication',
@@ -247,7 +260,6 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
                     'rule_list_label_length' => [4]
                    ]);
 
-
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 2,
                     'libelle' => 'Mois de publication',
@@ -272,7 +284,6 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
                     'rule_list_label_length' => [2]
                    ]);
 
-
     Class_CosmoVar::setValueOf('mode_doublon', Class_CosmoVar::DOUBLE_SEARCH_ALPHA_KEY);
     $this->loadNotice('unimarc_koha_okapi');
   }
@@ -312,7 +323,6 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
   }
 
 
-
   /** @test */
   public function facettesShouldContainsT2AndHANNE0001AndHMOIS0001AndJOUR0001() {
     $this->assertEquals('HANNE0001 HMOIS0001 HJOUR0001 Lfre T2 B1 YMEDSTMAR HNRNR0001',
@@ -322,7 +332,7 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
   }
 
 
-    /** @test */
+  /** @test */
   public function facettesForRecord25ShouldContainsT2AndHANNE0001AndHMOIS0001() {
     $this->assertEquals('HANNE0001 HMOIS0007 HJOUR0006 Lfre T2 B1 YMEDSTMAR HNRNR0001',
                         Class_Notice::find(25)
@@ -331,7 +341,7 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
   }
 
 
-    /** @test */
+  /** @test */
   public function okapi983ShouldHaveT2Facette() {
     $okapi_983 = Class_Notice::findFirstBy(['tome_alpha' => '983']);
     $this->assertContains('T2', $okapi_983->getFacettes());
@@ -349,7 +359,9 @@ class KohaRecordIntegrationFacetPresseTest extends KohaRecordIntegrationTestCase
 
 
 
-class KohaRecordIntegrationVagabondWithThesaurusOn702DollarATest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationVagabondWithThesaurusOn702DollarATest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -363,15 +375,13 @@ class KohaRecordIntegrationVagabondWithThesaurusOn702DollarATest extends KohaRec
                     'rule_list_label_field' => ['a'],
                     'index_labels' => '1']);
 
-
     $marcel = $this->fixture(Class_CodifThesaurus::class,
-                   ['id' => 2,
-                    'libelle' => 'Marcel',
-                    'id_thesaurus' => 'AUTH0001',
-                    'id_origine' => 'MARCEL',
-                    'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
-                    'rules' => null]);
-
+                             ['id' => 2,
+                              'libelle' => 'Marcel',
+                              'id_thesaurus' => 'AUTH0001',
+                              'id_origine' => 'MARCEL',
+                              'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
+                              'rules' => null]);
 
     $docu = $this->fixture(Class_CodifThesaurus::class,
                            ['id' => 3,
@@ -493,7 +503,9 @@ class KohaRecordIntegrationVagabondWithThesaurusOn702DollarATest extends KohaRec
 
 
 
-class KohaRecordIntegrationVagabondWithTooMany610aTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationVagabondWithTooMany610aTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -505,15 +517,13 @@ class KohaRecordIntegrationVagabondWithTooMany610aTest extends KohaRecordIntegra
                     'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
                     'rules' => '{"label":"702$a"}']);
 
-
     $marcel = $this->fixture(Class_CodifThesaurus::class,
-                   ['id' => 2,
-                    'libelle' => 'Marcel',
-                    'id_thesaurus' => 'AUTH0001',
-                    'id_origine' => 'MARCEL',
-                    'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
-                    'rules' => null]);
-
+                             ['id' => 2,
+                              'libelle' => 'Marcel',
+                              'id_thesaurus' => 'AUTH0001',
+                              'id_origine' => 'MARCEL',
+                              'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
+                              'rules' => null]);
 
     $docu = $this->fixture(Class_CodifThesaurus::class,
                            ['id' => 3,
@@ -545,8 +555,7 @@ class KohaRecordIntegrationVagabondWithTooMany610aTest extends KohaRecordIntegra
                     'id_thesaurus' => 'TEST',
                     'id_origine' => null,
                     'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET,
-                      'rules' => '{"label":"610$a"}']);
-
+                    'rules' => '{"label":"610$a"}']);
 
     $this->fixture(Class_CodifThesaurus::class,
                    ['id_thesaurus' => 'TEST9999',
@@ -577,7 +586,9 @@ class KohaRecordIntegrationVagabondWithTooMany610aTest extends KohaRecordIntegra
 
 
 
-class KohaRecordIntegrationTokyoWithThesaurusOn607DollarWTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationTokyoWithThesaurusOn607DollarWTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -627,7 +638,9 @@ class KohaRecordIntegrationTokyoWithThesaurusOn607DollarWTest extends KohaRecord
 
 
 
-class KohaRecordIntegrationEscapableAnnexeCodesTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationEscapableAnnexeCodesTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -655,7 +668,9 @@ class KohaRecordIntegrationEscapableAnnexeCodesTest extends KohaRecordIntegratio
 
 
 
-class KohaRecordIntegrationBdMilleniumWithAuthorityTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationBdMilleniumWithAuthorityTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -716,8 +731,10 @@ class KohaRecordIntegrationBdMilleniumWithAuthorityTest extends KohaRecordIntegr
 
 
 class KohaRecordIntegrationDeduplicateTest extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::setValueOf('mode_doublon', Class_CosmoVar::DOUBLE_SEARCH_NONE);
     $this->loadRecordsFromFile('unimarc_mementos');
 
@@ -873,6 +890,7 @@ class KohaRecordIntegrationPommeWithAttachedPdfAndHtmlFileTest
 
 
 class KohaRecordIntegrationFileInfoFactory {
+
   public function __invoke($path) {
     $wrapper = Storm_Test_ObjectWrapper::on(new SplFileInfo($path))
       ->whenCalled('isFile')->answers(true)
@@ -889,9 +907,8 @@ class KohaRecordIntegrationFileInfoFactory {
 
 
 /** @see http://forge.afi-sa.fr/issues/96508 */
-class KohaRecordIntegrationMultipleSECTIntegrationTest extends KohaRecordIntegrationTestCase {
-  protected $_storm_default_to_volatile = true;
-
+class KohaRecordIntegrationMultipleSECTIntegrationTest
+  extends KohaRecordIntegrationTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -926,7 +943,7 @@ class KohaRecordIntegrationMultipleSECTIntegrationTest extends KohaRecordIntegra
                     'id_thesaurus' => 'SECT0002',
                     'id_origine' => 'ADMINISTRATION',
                     'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET]
-                   );
+    );
 
     $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 78,
@@ -957,9 +974,12 @@ class KohaRecordIntegrationMultipleSECTIntegrationTest extends KohaRecordIntegra
 
 
 
-class KohaRecordIntegrationUnimarcWithSeveralISBNTest extends KohaRecordIntegrationTestCase {
+class KohaRecordIntegrationUnimarcWithSeveralISBNTest
+  extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->loadNotice('unimarc_relations_oif_onu');
   }
 
@@ -986,16 +1006,17 @@ class KohaRecordIntegrationUnimarcWithSeveralISBNTest extends KohaRecordIntegrat
     $this->assertEquals('2-84924-590-9',
                         Class_Notice::find(1)->get_subfield('010', 'a')[1]);
   }
-
 }
 
 
 
 
+abstract class NoticeIntegrationWithSubfieldDeduplicationTest
+  extends KohaRecordIntegrationTestCase {
 
-abstract class NoticeIntegrationWithSubfieldDeduplicationTest extends KohaRecordIntegrationTestCase {
   public function setUp() {
     parent::setUp();
+
     $this->loadNotice('unimarc_oblivion');
 
     $zone995 = serialize([['code' => '9', 'valeur' => '1']]);
@@ -1026,7 +1047,8 @@ abstract class NoticeIntegrationWithSubfieldDeduplicationTest extends KohaRecord
 
 
 
-class NoticeIntegrationWithSubfieldDeduplicationDollarNineTest extends NoticeIntegrationWithSubfieldDeduplicationTest {
+class NoticeIntegrationWithSubfieldDeduplicationDollarNineTest
+  extends NoticeIntegrationWithSubfieldDeduplicationTest {
 
   /** @test */
   public function withDedupShouldHaveTwoItem() {
@@ -1053,10 +1075,11 @@ class NoticeIntegrationWithSubfieldDeduplicationDollarNineTest extends NoticeInt
 
 
 
+class NoticeIntegrationWithSubfieldDeduplicationNoneTest
+  extends NoticeIntegrationWithSubfieldDeduplicationTest {
 
-class NoticeIntegrationWithSubfieldDeduplicationNoneTest extends NoticeIntegrationWithSubfieldDeduplicationTest {
   public function getProfilDonnees() {
-     return Class_IntProfilDonnees::forKoha()
+    return Class_IntProfilDonnees::forKoha()
       ->setIdProfil(45)
       ->setItemUniqSubfield('')
       ->getRawAttributes();
@@ -1073,8 +1096,10 @@ class NoticeIntegrationWithSubfieldDeduplicationNoneTest extends NoticeIntegrati
 
 
 class KohaRecordIntegrationUnimarcArchiTest extends KohaRecordIntegrationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->loadRecordsFromFile('unimarc_archi');
   }
 
diff --git a/cosmogramme/tests/php/classes/NanookRecordsIntegrationTest.php b/cosmogramme/tests/php/classes/NanookRecordsIntegrationTest.php
index 3a820fed97795cbaf1cee4c11dea121e75d84ea1..59fd4b04dce637b39475ac06d5cf05aaf06abf6d 100644
--- a/cosmogramme/tests/php/classes/NanookRecordsIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/NanookRecordsIntegrationTest.php
@@ -439,7 +439,8 @@ class NanookRecordsIntegrationOblivionTest extends NanookRecordsIntegrationTestC
 
   /** @test */
   public function facettesShouldContainsF2andF24() {
-    $this->assertEquals('T4 A1 F24 F25 Lfre G96', $this->_notice->getFacettes());
+    $this->assertEquals('T4 A1 A2 A3 F24 F25 Lfre G96',
+                        $this->_notice->getFacettes());
   }
 }
 
@@ -803,7 +804,7 @@ class NanookRecordsIntegrationModifLabelOnDynamicFacetTest extends NanookRecords
 
   /** @test */
   public function firstRecordFacetsShouldContainsHNIVE0001() {
-    $this->assertEquals('T3 HNIVE0001 A1', Class_Notice::find(1)->getFacettes());
+    $this->assertEquals('T3 HNIVE0001 A1 A2', Class_Notice::find(1)->getFacettes());
   }
 
 
diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationSubjectTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationSubjectTest.php
index 4dcf875cf8cde50928c11699f7e7285e615d8fb5..b2a14bb17c688324aad67251ccf0afb9ece530bd 100644
--- a/cosmogramme/tests/php/classes/NoticeIntegrationSubjectTest.php
+++ b/cosmogramme/tests/php/classes/NoticeIntegrationSubjectTest.php
@@ -56,7 +56,7 @@ class NoticeIntegrationSubjectTest extends NoticeIntegrationTestCase {
 
   /** @test */
   public function noticeFacettesShouldContainsFacetsSubjectM1M2M3M4M5() {
-    $this->assertContains('T1 D94438 A1 M1 M2 M3 M4 M5 Lfre',
+    $this->assertContains('T1 D94438 A1 A2 M1 M2 M3 M4 M5 Lfre',
                           Class_Notice::find(1)->getFacettes());
   }
 
diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
index f80066767da39c6e11532c7ae8ea685d7542a11f..915aff6d8a2cdf25e6a8238c9735d34c277782bc 100644
--- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
+++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php
@@ -1283,14 +1283,14 @@ class NoticeIntegrationArchivesAlsaceTest extends NoticeIntegrationTestCase {
 
   /** @test */
   public function facettesShouldContainsM1AndM2AndD1() {
-    $this->assertEquals('T1 D94438 A1 M1 M2 Lfre',
+    $this->assertEquals('T1 D94438 A1 A2 M1 M2 Lfre',
                         Class_Notice::find(1)->getFacettes());
   }
 
 
   /** @test */
   public function facettesWithExemplairesShouldContainsM1AndM2AndD1() {
-    $this->assertEquals('D94438 A1 M1 M2 Lfre T1 B1 YBibliothèque des Dominicains HNRNR0001',
+    $this->assertEquals('D94438 A1 A2 M1 M2 Lfre T1 B1 YBibliothèque des Dominicains HNRNR0001',
                         Class_Notice::find(1)->updateFacetsFromExemplaires()->getFacettes());
   }
 }
diff --git a/cosmogramme/tests/php/classes/RepairCodifAuthorTest.php b/cosmogramme/tests/php/classes/RepairCodifAuthorTest.php
index b12d81f211c20a4c5b9ac95bde6f7a12e5a9c332..f318abf5611dfabb31dbfc40e8306820cd97cfdc 100644
--- a/cosmogramme/tests/php/classes/RepairCodifAuthorTest.php
+++ b/cosmogramme/tests/php/classes/RepairCodifAuthorTest.php
@@ -21,140 +21,138 @@
 
 require_once 'ModelTestCase.php';
 
-
-
 abstract class RepairCodifAuthorTestCase extends ModelTestCase {
-	protected $_guitton_pierre,
-		$_lebas_patrick,
-		$_x,
-		$_book,
-		$count;
-
-	public function setUp() {
-		parent::setUp();
-		$this->_x = $this->fixture('Class_CodifAuteur',
-															 ['id' => 3,
-																'libelle' => 'x',
-																'formes' => 'x']);
-
-		$this->_lebas_patrick = $this->fixture('Class_CodifAuteur',
-																					 ['id' => 2,
-																						'Libelle' => 'Patrickx',
-																						'formes' => 'PATRICKX']);
-
-		$this->_guitton_pierre = $this->fixture('Class_CodifAuteur',
-																 ['id' => 1,
-																	'libelle' => 'GUITTONxxPIERRE',
-																	'formes' => 'GUITTONxxPIERRE']);
-
-		$this->_book = $this->fixture('Class_Notice',
-													 ['id_notice' => 1,
-														'unimarc' => "01410cam0 22002651i 450 001000700000005004100007010003200048102000400080200019400084205001600278210003800294215004400332300004000376330036700416607005700783702002800840702003000868702003200898702002400930702002600954702002700980702002501007702002301032996008901055411463131022s2014    FR    bgr|||| 0|| 0|fre|d01a978-2-7424-3490-9 (Broché)0101aBourgogne /fIsabelle Bonnevie, Jean-Louis Despesse, Pierre Guitton, Patrick Lebas ; ont également collaboré à cet ouvrage Serge Lewuillon, Caroline Musquet, Fanny Philippe, Daniel Russo01a2e édition01aParis :cGallimard loisirs,d201401a1 vol. (559 p.) :ccartes ;d19 x 12 cm01aBibliogr. Filmogr. Glossaire. Index01aCe guide propose des itinéraires à la carte pour découvrir la région, des sélections thématiques, plus de 2.000 sites et adresses pour voyager au gré de ses envies à Dijon, Vézelay, Cluny, Guédelon, sur le canal de Bourgogne, etc. Il est agrémenté d'un chapitre consacré aux vins et vignobles de Bourgogne. Contient un dossier spécial sur les vins.01aBourgogne (France)xGuides touristiques et de visite01aBonnevie, Isabelle4aut01aDespesse, Jean-Louis4aut01aGuitton, Pierred1955-4aut01aLebas, Patrick4aut01aLewuillon, Serge4con01aMusquet, Caroline4con01aPhilippe, Fanny4con01aRusso, Daniel4con01a914.44 BOUwDEWEYc1i00695969l09ADOCmLBpE14.90rYsYt1IMPu19/3/2014xLDOCzADU"]);
-	}
+
+  protected
+    $_guitton_pierre,
+    $_lebas_patrick,
+    $_x,
+    $_book,
+    $count;
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_x = $this->fixture(Class_CodifAuteur::class,
+                               ['id' => 3,
+                                'libelle' => 'x',
+                                'formes' => 'x']);
+
+    $this->_lebas_patrick = $this->fixture(Class_CodifAuteur::class,
+                                           ['id' => 2,
+                                            'Libelle' => 'Patrickx',
+                                            'formes' => 'PATRICKX']);
+
+    $this->_guitton_pierre = $this->fixture(Class_CodifAuteur::class,
+                                            ['id' => 1,
+                                             'libelle' => 'GUITTONxxPIERRE',
+                                             'formes' => 'GUITTONxxPIERRE']);
+
+    $this->_book = $this->fixture(Class_Notice::class,
+                                  ['id_notice' => 1,
+                                   'unimarc' => "01410cam0 22002651i 450 001000700000005004100007010003200048102000400080200019400084205001600278210003800294215004400332300004000376330036700416607005700783702002800840702003000868702003200898702002400930702002600954702002700980702002501007702002301032996008901055411463131022s2014    FR    bgr|||| 0|| 0|fre|d01a978-2-7424-3490-9 (Broché)0101aBourgogne /fIsabelle Bonnevie, Jean-Louis Despesse, Pierre Guitton, Patrick Lebas ; ont également collaboré à cet ouvrage Serge Lewuillon, Caroline Musquet, Fanny Philippe, Daniel Russo01a2e édition01aParis :cGallimard loisirs,d201401a1 vol. (559 p.) :ccartes ;d19 x 12 cm01aBibliogr. Filmogr. Glossaire. Index01aCe guide propose des itinéraires à la carte pour découvrir la région, des sélections thématiques, plus de 2.000 sites et adresses pour voyager au gré de ses envies à Dijon, Vézelay, Cluny, Guédelon, sur le canal de Bourgogne, etc. Il est agrémenté d'un chapitre consacré aux vins et vignobles de Bourgogne. Contient un dossier spécial sur les vins.01aBourgogne (France)xGuides touristiques et de visite01aBonnevie, Isabelle4aut01aDespesse, Jean-Louis4aut01aGuitton, Pierred1955-4aut01aLebas, Patrick4aut01aLewuillon, Serge4con01aMusquet, Caroline4con01aPhilippe, Fanny4con01aRusso, Daniel4con01a914.44 BOUwDEWEYc1i00695969l09ADOCmLBpE14.90rYsYt1IMPu19/3/2014xLDOCzADU"]);
+  }
 }
 
 
 
 
 class RepairCodifAuthorUpdateTest extends RepairCodifAuthorTestCase {
-	public function setUp() {
-		parent::setUp();
-
-
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-			->whenCalled('findAllBy')
-			->willDo(
-							 function() {
-								 $this->count++;
-								 return $this->count > 1 ? [] : [$this->_guitton_pierre];});
-
 
+  public function setUp() {
+    parent::setUp();
 
+    Storm_Test_ObjectWrapper::onLoaderOfModel(Class_CodifAuteur::class)
+      ->whenCalled('findAllBy')
+      ->willDo(
+               function() {
+                 $this->count++;
+                 return $this->count > 1 ? [] : [$this->_guitton_pierre];});
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Notice')
-			->whenCalled('findFirstBy')
-			->answers($this->_book);
+    $this->_book->setFacettes('A1')->assertSave();
 
-		Class_CodifAuteur::repairAllWithWrongLibelle();
-	}
+    Class_CodifAuteur::repairAllWithWrongLibelle();
+  }
 
 
-	/** @test */
-	public function libelleShouldBeRepaired() {
-		$this->assertEquals('Guitton, Pierre', Class_CodifAuteur::find(1)->getlibelle());
-	}
+  /** @test */
+  public function libelleShouldBeRepaired() {
+    $this->assertEquals('Guitton, Pierre', Class_CodifAuteur::find(1)->getlibelle());
+  }
 }
 
 
 
+
 class RepairCodifAuthorDeleteTest extends RepairCodifAuthorTestCase {
-	public function setUp() {
-		parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-			->whenCalled('findAllBy')
-			->willDo(
-							 function() {
-								 $this->count++;
-								 return $this->count > 1 ? [] : [$this->_guitton_pierre];});
+  public function setUp() {
+    parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Notice')
-			->whenCalled('findFirstBy')
-			->answers([]);
+    Storm_Test_ObjectWrapper::onLoaderOfModel(Class_CodifAuteur::class)
+      ->whenCalled('findAllBy')
+      ->willDo(
+               function() {
+                 $this->count++;
+                 return $this->count > 1 ? [] : [$this->_guitton_pierre];});
 
-		Class_CodifAuteur::repairAllWithWrongLibelle();
-	}
+    Class_CodifAuteur::repairAllWithWrongLibelle();
+  }
 
 
-	/** @test */
-	public function libelleShouldBeRepaired() {
-		$this->assertEquals(null, Class_CodifAuteur::find(1));
-	}
+  /** @test */
+  public function libelleShouldBeRepaired() {
+    $this->assertEquals(null, Class_CodifAuteur::find(1));
+  }
 }
 
 
 
+
 class RepairCodifAuthorNoUpdateTest extends RepairCodifAuthorTestCase {
-	public function setUp() {
-		parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-			->whenCalled('findAllBy')
-			->willDo(
-							 function() {
-								 $this->count++;
-								 return $this->count > 1 ? [] : [$this->_lebas_patrick];});
+  public function setUp() {
+    parent::setUp();
+
+    Storm_Test_ObjectWrapper::onLoaderOfModel(Class_CodifAuteur::class)
+      ->whenCalled('findAllBy')
+      ->willDo(function() {
+                 $this->count++;
+                 return $this->count > 1 ? [] : [$this->_lebas_patrick];});
 
-		Class_CodifAuteur::repairAllWithWrongLibelle();
-	}
+    $this->_book->setFacettes('A2')->assertSave();
 
+    Class_CodifAuteur::repairAllWithWrongLibelle();
+  }
 
-	/** @test */
-	public function libelleShouldBeRepaired() {
-		$this->assertEquals('Patrickx', Class_CodifAuteur::find(2)->getLibelle());
-	}
+
+  /** @test */
+  public function libelleShouldBeRepaired() {
+    $this->assertEquals('Patrickx', Class_CodifAuteur::find(2)->getLibelle());
+  }
 }
 
 
 
+
 class RepairCodifAuthorRemoveXTest extends RepairCodifAuthorTestCase {
-	public function setUp() {
-		parent::setUp();
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-			->whenCalled('findAllBy')
-			->willDo(
-							 function() {
-								 $this->count++;
-								 return $this->count > 1 ? [] : [$this->_x];});
+  public function setUp() {
+    parent::setUp();
+
+    Storm_Test_ObjectWrapper::onLoaderOfModel(Class_CodifAuteur::class)
+      ->whenCalled('findAllBy')
+      ->willDo(
+               function() {
+                 $this->count++;
+                 return $this->count > 1 ? [] : [$this->_x];});
 
-		Class_CodifAuteur::repairAllWithWrongLibelle();
-	}
+    Class_CodifAuteur::repairAllWithWrongLibelle();
+  }
 
 
-	/** @test */
-	public function libelleShouldBeRepaired() {
-		$this->assertEquals(null, Class_CodifAuteur::find(3));
-	}
+  /** @test */
+  public function libelleShouldBeRepaired() {
+    $this->assertEquals(null, Class_CodifAuteur::find(3));
+  }
 }
-?>
\ No newline at end of file
diff --git a/library/Class/Agenda/SQY.php b/library/Class/Agenda/SQY.php
deleted file mode 100644
index cc47a7807b98bda017832ab539286679b5049e77..0000000000000000000000000000000000000000
--- a/library/Class/Agenda/SQY.php
+++ /dev/null
@@ -1,570 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
-
-
-/** [[file:~/public_html/afi-opac3/tests/library/Class/AgendaSQYImportTest.php::class%20AgendaSQYImportTest%20extends%20Storm_Test_ModelTestCase%20{][tests]]  */
-
-Trait Trait_Agenda_SQY_ItemWrapper {
-  protected static $_instances = [];
-  protected $_wrapped_instance;
-  protected $_attributes;
-
-  public static function resetInstances() {
-    static::$_instances = [];
-  }
-
-
-  public static function newInstance($attributes) {
-    $id = $attributes['INDEX'];
-    return static::$_instances[$id]= new static($attributes);
-  }
-
-
-  public static function getInstances() {
-    return static::$_instances;
-  }
-
-
-  public static function getWrappedInstance($id) {
-    if (!isset(static::$_instances[$id]))
-      return null;
-
-    $wrapper = static::$_instances[$id];
-    return $wrapper->_wrapped_instance;
-  }
-
-
-  public static function saveInstances() {
-    foreach(static::$_instances as $instance) {
-      $instance->save();
-    }
-  }
-
-
-  public function __construct($attributes) {
-    $this->_wrapped_instance = new static::$_item_class();
-    $this->_attributes = $attributes;
-    $this->initialize();
-  }
-
-
-  public function initialize() {}
-
-  public function __call($method, $args) {
-    return isset(static::$_method_map[$method])
-      ? call_user_func_array([$this->_wrapped_instance, static::$_method_map[$method]],
-                             $args)
-      : null;
-  }
-}
-
-
-
-
-class Class_Agenda_SQY_EventWrapper {
-  use Trait_Agenda_SQY_ItemWrapper;
-
-  protected static $_item_class = 'Class_Article';
-  protected static $_method_map = ['setTitle' => 'setTitre',
-                                   'getTitre' => 'getTitre',
-                                   'setAbstract' => 'setDescription',
-                                   'getDescription' => 'getDescription',
-                                   'setDescription' => 'setContenu',
-                                   'getContenu' => 'getContenu',
-                                   'getEventsDebut' => 'getEventsDebut',
-                                   'getEventsFin' => 'getEventsFin',
-                                   'getLieu' => 'getLieu',
-                                   'getCategorie' => 'getCategorie',
-                                   'getTags' => 'getTags',
-                                   'getStatus' => 'getStatus',
-                                   'getDomaineIds' => 'getDomaineIds',
-                                   'getIdOrigine' => 'getIdOrigine',
-                                   'setIdOrigine' => 'setIdOrigine',
-                                   'isStatusValidated' => 'isStatusValidated'];
-
-  protected $_infos = [];
-
-  public static function mapLocationsAndCategories() {
-    $instances = static::getInstances();
-    foreach($instances as $event) {
-      $event
-        ->findLibellesCategories()
-        ->mapLocation()
-        ->mapCategory()
-        ->mapTags()
-        ->mapDomaines();
-    }
-  }
-
-  public function initialize() {
-    $id_origine = $this->_attributes['INDEX'];
-
-    if ($article = Class_Article::findFirstBy(['id_origine' => $id_origine])) {
-      $this->_wrapped_instance = $article;
-    } else {
-      $this->_wrapped_instance->beValidated();
-      $this->_wrapped_instance->setIdOrigine($this->_attributes['INDEX']);
-    }
-  }
-
-
-  public function save() {
-    if ($this->_wrapped_instance->hasDescription())
-        $this->_wrapped_instance->setContenu($this->_wrapped_instance->getDescription().$this->_wrapped_instance->getContenu());
-
-    if ($this->_infos)
-      $this->_injectInfosInContenu();
-
-    if($this->_wrapped_instance->hasCategorie() && $this->_wrapped_instance->getCategorie()->getLibelle()!='Portail')
-      $this->_wrapped_instance->setContenu(
-        '<span class="categorie">'.
-        '<h2>'.
-        $this->_wrapped_instance->getCategorie()->getLibelle().
-        '</h2>'.
-        '</span>'.
-        $this->_wrapped_instance->getContenu());
-
-    return $this->_wrapped_instance->save();
-  }
-
-
-  public function _injectInfosInContenu() {
-    $dl = '<dl class="infos"><h2>Infos pratiques</h2>';
-    foreach ($this->_infos as $name => $value)
-      $dl .= '<dd>'.$name.'</dd><dt>'.$value.'</dt>';
-    $dl .= '</dl>';
-    $this->_wrapped_instance->setContenu($this->_wrapped_instance->getContenu().$dl);
-  }
-
-
-  public function findLibellesCategories() {
-    $categorie1 = explode(',', trim($this->_attributes['CATEGORY']));
-    $categorie2 = explode(',', trim($this->_attributes['CATEGORY2']));
-    $categorie3 = explode(',', trim($this->_attributes['CATEGORY3']));
-
-    $this->_categorie1_libelles = $this->getLibellesCategories($categorie1);
-    $this->_categorie2_libelles = $this->getLibellesCategories($categorie2);
-    $this->_categorie3_libelles = $this->getLibellesCategories($categorie3);
-    return $this;
-  }
-
-
-  public function setImage($url) {
-    $img = '<img style="margin:5px; float:left" src="'.$url.'" alt="'.$this->_wrapped_instance->getTitre().'"/>';
-    if ($this->_wrapped_instance->hasDescription())
-      $this->_wrapped_instance->setDescription($img.'<span class="description">'.$this->_wrapped_instance->getDescription().'</span>');
-    else
-      $this->_wrapped_instance->setContenu($img.$this->_wrapped_instance->getContenu());
-
-  }
-
-
-  public function addInfo($name, $value) {
-    $this->_infos[$name] = $value;
-  }
-
-
-  public function setDateStart($date) {
-    $this->_wrapped_instance->setEventsDebut(Class_Date::frToIso($date));
-  }
-
-
-  public function setDateEnd($date) {
-    $this->_wrapped_instance->setEventsFin(Class_Date::frToIso($date));
-  }
-
-
-  public function mapLocation() {
-    if (!$location_id = $this->_attributes['LOCATION'])
-      return $this;
-
-    $lieu = Class_Agenda_SQY_LocationWrapper::getWrappedInstance($location_id);
-    $lieu->addArticle($this->_wrapped_instance);
-    return $this;
-  }
-
-
-  public function mapCategory() {
-    $article_categories = $this->getIdsForCategories(Class_ArticleCategorie::findTopCategories(),
-                                                     $this->_categorie1_libelles,
-                                                     $this->_categorie2_libelles,
-                                                     $this->_categorie3_libelles);
-
-    if ($article_categories) {
-      $this->_wrapped_instance->setIdCat($article_categories[0]->getId());
-      return $this;
-    }
-
-    $category_id = $this->_attributes['CATEGORY'] ? $this->_attributes['CATEGORY'] : 0;
-
-    $category_id = explode(',', $category_id)[0];
-    $category = Class_Agenda_SQY_CategoryWrapper::getWrappedInstance($category_id);
-    $category->addArticle($this->_wrapped_instance);
-    return $this;
-  }
-
-
-  public function mapDomaines() {
-    $domaines = $this->getIdsForCategories(Class_Catalogue::findTopCatalogues(),
-                                           $this->_categorie1_libelles,
-                                           $this->_categorie2_libelles,
-                                           $this->_categorie3_libelles);
-    $this->_wrapped_instance->setDomaines($domaines);
-    return $this;
-  }
-
-
-  public function mapTags() {
-    $tags = array_merge($this->_categorie1_libelles,
-                        $this->_categorie2_libelles,
-                        $this->_categorie3_libelles);
-    $this->_wrapped_instance->setTags(implode(';', $tags));
-    return $this;
-  }
-
-
-  public function getLibellesCategories($categorie_ids) {
-    $libelles = [];
-
-    foreach ($categorie_ids as $categorie_id) {
-      if ($categorie = Class_Agenda_SQY_CategoryWrapper::getWrappedInstance($categorie_id))
-        $libelles []= trim($categorie->getLibelle());
-    }
-
-    return $libelles;
-  }
-
-
-  public function getIdsForCategories($items, $categories1, $categories2, $categories3) {
-    $items_for_category1 = $this->getChildrenForCategoryLabels($items,
-                                                               $categories1);
-
-    if (!$items_for_category2 = $this->getChildrenOfItemsForCategoryLabels($items_for_category1,
-                                                                           $categories2))
-      return $items_for_category1;
-
-    if (!$items_for_category3 = $this->getChildrenOfItemsForCategoryLabels($items_for_category2,
-                                                                           $categories3))
-      return $items_for_category2;
-
-    return $items_for_category3;
-  }
-
-
-  public function getChildrenOfItemsForCategoryLabels($domaines, $labels) {
-    $sous_domaines = [];
-    foreach($domaines as $domaine) {
-      $sous_domaines = array_merge($sous_domaines,
-                                   $this->getChildrenForCategoryLabels($domaine->getChildren(), $labels));
-    }
-    return $sous_domaines;
-  }
-
-
-  public function getChildrenForCategoryLabels($items, $labels) {
-    $labels = array_map('strtolower', $labels);
-
-    $found_children = [];
-    foreach($items as $item) {
-      if (in_array(strtolower(trim($item->getLibelle())), $labels))
-        $found_children []= $item;
-    }
-    return $found_children;
-  }
-}
-
-
-
-
-class Class_Agenda_SQY_CategoryWrapper {
-  use Trait_Agenda_SQY_ItemWrapper {
-    resetInstances as originalResetInstances;
-  }
-
-  protected static $_import_categorie;
-  protected static $_item_class = 'Class_ArticleCategorie';
-  protected static $_method_map = ['setTitle' => 'setLibelle',
-                                   'getLibelle' => 'getLibelle',
-                                   'getParentCategorie' => 'getParentCategorie'];
-
-
-  public static function resetInstances() {
-    static::originalResetInstances();
-    static::newInstance(['INDEX' => 0])->setTitle('Portail');
-
-    if ($import_categorie = Class_ArticleCategorie::findFirstBy(['libelle' => Class_Agenda_SQY::IMPORT_CATEGORIE_LIBELLE])) {
-      $sous_categories = $import_categorie->getSousCategories();
-      foreach($sous_categories as $cat) $cat->delete();
-
-      $articles = $import_categorie->getArticles();
-      foreach($articles as $article) $article->delete();
-    } else {
-      $import_categorie = (new Class_ArticleCategorie())->setLibelle(Class_Agenda_SQY::IMPORT_CATEGORIE_LIBELLE);
-      $import_categorie->save();
-    }
-
-    static::$_import_categorie = $import_categorie;
-  }
-
-
-  public function save() {
-    return  $this->_wrapped_instance->setParentCategorie(static::$_import_categorie)
-                                    ->save();
-  }
-}
-
-
-
-
-class Class_Agenda_SQY_LocationWrapper {
-  use Trait_Agenda_SQY_ItemWrapper;
-
-  protected static $_item_class = 'Class_Lieu';
-  protected static $_method_map = ['setTitle' => 'setLibelle',
-                                   'getLibelle' => 'getLibelle',
-                                   'setZip' => 'setCodePostal',
-                                   'getCodePostal' => 'getCodePostal',
-                                   'setCity' => 'setVille',
-                                   'getVille' => 'getVille',
-                                   'getPays' => 'getPays',
-                                   'setTelephone' => 'setTelephone',
-                                   'setLatitude' => 'setLatitude',
-                                   'setLongitude' => 'setLongitude',
-                                   'setAdresse' => 'setAdresse',
-                                   'setMail' => 'setMail',
-                                   'setUrl' => 'setUrl'];
-
-  public function initialize() {
-    $this->_wrapped_instance->setPays('France');
-  }
-
-
-  public function setZip($value) {
-    if (!$value) $value = '';
-    $this->_wrapped_instance->setCodePostal($value);
-  }
-
-
-  public function setCity($value) {
-    if (!$value) $value = '';
-    $this->_wrapped_instance->setVille($value);
-  }
-
-
-  public function save() {
-    if (!$this->_wrapped_instance->hasArticles())
-      return true;
-
-    if ($lieu = Class_Lieu::findFirstBy(['libelle' => $this->_wrapped_instance->getLibelle()])) {
-      $this->_wrapped_instance->setId($lieu->getId());
-      $lieu->updateAttributes($this->_wrapped_instance->toArray());
-      $this->_wrapped_instance = $lieu;
-    }
-
-    return $this->_wrapped_instance->save();
-  }
-}
-
-
-
-
-class Class_Agenda_SQY_OrganizerWrapper {
-  use Trait_Agenda_SQY_ItemWrapper;
-
-  protected static $_item_class = 'StdClass';
-  protected static $_method_map = [];
-}
-
-
-
-
-class Class_Agenda_SQY extends Class_WebService_Abstract {
-  const IMPORT_CATEGORIE_LIBELLE = 'import_casqy_typo3';
-  const URL_TYP03 = 'http://www.saint-quentin-en-yvelines.fr/index.php?id=5357';
-
-  /** @var Class_WebService_XMLParser */
-  protected $_xml_parser;
-  protected $_item_class;
-  protected $_item;
-
-
-  public function importFromURL() {
-    $xml = $this->httpGet(Class_AdminVar::get('URL_TYPO3'));
-    return $this->importFromXML($xml);
-  }
-
-  public function importFromXML($xml) {
-    $this->_xml_parser = (new Class_WebService_XMLParser())->setElementHandler($this);
-    $this->_xml_parser->parse($xml);
-    Class_Agenda_SQY_EventWrapper::mapLocationsAndCategories();
-    Class_Agenda_SQY_CategoryWrapper::saveInstances();
-    Class_Agenda_SQY_LocationWrapper::saveInstances();
-    Class_Agenda_SQY_EventWrapper::saveInstances();
-    return $this;
-  }
-
-
-  public function getCategories() {
-    return Class_Agenda_SQY_CategoryWrapper::getInstances();
-  }
-
-
-  public function getEvents() {
-    return Class_Agenda_SQY_EventWrapper::getInstances();
-  }
-
-
-  public function getLocations() {
-    return Class_Agenda_SQY_LocationWrapper::getInstances();
-  }
-
-
-  public function startItem($attributes) {
-    $this->_item = call_user_func_array([$this->_item_class, 'newInstance'],
-                                        [$attributes]);
-  }
-
-
-  public function startEvent() {
-    $this->_item_class = $this->wrapperClassForTag('event');
-  }
-
-
-  public function startCategory() {
-    $this->_item_class = $this->wrapperClassForTag('category');
-  }
-
-
-  public function startLocation() {
-    $this->_item_class = $this->wrapperClassForTag('location');
-  }
-
-
-  public function startOrganizer() {
-    $this->_item_class = $this->wrapperClassForTag('organizer');
-  }
-
-
-  public function wrapperClassForTag($tag) {
-    $class_name = 'Class_Agenda_SQY_'.ucfirst($tag).'Wrapper';
-    call_user_func([$class_name, 'resetInstances']);
-    return $class_name;
-  }
-
-
-  public function endTitle($data) {
-    $this->_item->setTitle($data);
-  }
-
-
-  public function endZip($data) {
-    $this->_item->setZip($data);
-  }
-
-
-  public function endCity($data) {
-    $this->_item->setCity($data);
-  }
-
-
-  public function endAbstract($data) {
-    $this->_item->setAbstract($data);
-  }
-
-
-  public function endDescription($data) {
-    $this->_item->setDescription($data);
-  }
-
-
-  public function endDate_Start($data) {
-    $this->_item->setDateStart($data);
-  }
-
-
-  public function endDate_End($data) {
-    $this->_item->setDateEnd($data);
-  }
-
-  public function endImage($data) {
-    $this->_item->setImage($data);
-  }
-
-
-  public function endTariffs($data) {
-    $this->_item->addInfo('Tarif', $data);
-  }
-
-  public function endAge($data) {
-    if ($data)
-      $this->_item->addInfo('Age', $data.' ans');
-  }
-
-
-  public function endPhone($data) {
-    $this->_item->setTelephone($data);
-  }
-
-  public function endEmail($data) {
-    $this->_item->setMail($data);
-  }
-
-  public function endGeo_Latitude($data) {
-    if ($data)
-      $this->_item->setLatitude($data);
-  }
-
-  public function endGeo_Longitude($data) {
-    if ($data)
-      $this->_item->setLongitude($data);
-  }
-
-  public function endUrl($data) {
-    $this->_item->setUrl($data);
-  }
-
-
-  public function endAddress($data) {
-    $this->_item->setAdresse($data);
-  }
-
-
-  public function endGeo_Map($data) {
-    $parts = parse_url($data);
-    if (!isset($parts['query']))
-      return;
-
-    $queries = [];
-    parse_str($parts['query'], $queries);
-
-    if (!isset($queries['ll']))
-      return;
-
-    $lat_long = explode(',', $queries['ll']);
-    if (count($lat_long) < 2)
-      return;
-
-    $this->_item->setLatitude($lat_long[0]);
-    $this->_item->setLongitude($lat_long[1]);
-  }
-}
-
-?>
\ No newline at end of file
diff --git a/library/Class/Article/Collection.php b/library/Class/Article/Collection.php
index 64095ffe3786f6b75fa02a6bc51b53f62161893e..803ea7c4f8d73aa4f4dba9de9a970303763e6b5e 100644
--- a/library/Class/Article/Collection.php
+++ b/library/Class/Article/Collection.php
@@ -40,61 +40,137 @@ class Class_Article_Collection {
   }
 
 
-  public function sortBy(string $order) : array {
-    if (!$this->_articles)
-      return [];
+  public function getArrayCopy() : array {
+    return array_values($this->_articles);
+  }
+
+
+  public function slice(int $number) : array {
+    return array_slice($this->_articles, 0, $number);
+  }
+
+
+  public function first() : ?Class_Article {
+    return ($first = reset($this->_articles))
+      ? $first
+      : null;
+  }
+
+
+  public function collect($string_or_closure) : array {
+    return (new Storm_Model_Collection($this->_articles))
+      ->collect($string_or_closure)
+      ->getArrayCopy();
+  }
 
-    if ($callback = (static::SORT_IMPLEMENTATIONS[$order] ?? ''))
+
+  public function sortBy(string $order) : self {
+    if ($this->_articles &&
+        ($callback = static::SORT_IMPLEMENTATIONS[$order] ?? ''))
       return $this->$callback();
 
-    return $this->_articles;
+    return $this;
   }
 
 
-  protected function _sortByRandom() : array {
-    shuffle($this->_articles);
+  public function filterByTag(string $tag) : self {
+    return $tag
+      ? $this->_filterBy(fn($article) => $article->hasTag($tag))
+      : $this;
+  }
+
+
+  public function filterByCustomFields(array $fields) : self {
+    return $fields
+      ? $this->_filterBy(fn($article) => $this->_hasAllFieldsValues($article, $fields))
+      : $this;
+  }
+
+
+  public function filterByDay(?string $date) : self {
+    if (!(new ZendAfi_Validate_DateFormat)->isValid($date))
+      return $this;
+
+    $week_day = date('w', strtotime($date));
 
-    return $this->_articles;
+    return $this->_filterBy(fn($article) => $this->_hasPickDay($article, $week_day));
   }
 
 
-  protected function _sortByStartEventAsc() : array {
+  public function _filterBy(Callable $callback) : self {
+    $this->_articles = array_filter($this->_articles, $callback);
+    return $this;
+  }
+
+
+  public function apply(?Callable $callback) : self {
+    if ($callback)
+      $this->_articles = array_map($callback, $this->_articles);
+
+    return $this;
+  }
+
+
+  protected function _hasAllFieldsValues(Class_Article $article, array $fields) : bool {
+    foreach($fields as $id => $value) {
+      if ($value != $article->findCustomFieldValueMatching($id, $value))
+        return false;
+    }
+
+    return true;
+  }
+
+
+  protected function _hasPickDay(Class_Article $article, string $week_day) : bool {
+    $pick_day_as_array = $article->getPickDayAsArray();
+    return empty($pick_day_as_array) || in_array($week_day, $pick_day_as_array);
+  }
+
+
+  protected function _sortByRandom() : self {
+    shuffle($this->_articles);
+    return $this;
+  }
+
+
+  protected function _sortByStartEventAsc() : self {
     return $this->_sortWithCallback('_compareStartEvent');
   }
 
 
-  protected function _sortByStartEventDesc() : array {
+  protected function _sortByStartEventDesc() : self {
     return $this->_sortWithCallback('_compareStartEvent', true);
   }
 
 
-  protected function _sortByStartRawAsc() : array {
+  protected function _sortByStartRawAsc() : self {
     return $this->_sortWithCallback('_compareStartRaw');
   }
 
 
-  protected function _sortByStartRawDesc() : array {
+  protected function _sortByStartRawDesc() : self {
     return $this->_sortWithCallback('_compareStartRaw', true);
   }
 
 
-  protected function _sortByCreationAsc() : array {
+  protected function _sortByCreationAsc() : self {
     return $this->_sortWithCallback('_compareCreation');
   }
 
 
-  protected function _sortByCreationDesc() : array {
+  protected function _sortByCreationDesc() : self {
     return $this->_sortWithCallback('_compareCreation', true);
   }
 
 
   protected function _sortWithCallback(string $callback,
-                                       bool $inverse = false) : array {
+                                       bool $inverse = false) : self {
     usort($this->_articles, [$this, $callback]);
 
-    return $inverse
-      ? array_reverse($this->_articles)
-      : $this->_articles;
+    if ($inverse)
+      $this->_articles = array_reverse($this->_articles);
+
+    return $this;
   }
 
 
diff --git a/library/Class/Article/Loader.php b/library/Class/Article/Loader.php
index dad0ab967c7779170b3b02bbeb5ffa8f40e33b35..6c01d157b79ecde37d7774950eab157463e951f8 100644
--- a/library/Class/Article/Loader.php
+++ b/library/Class/Article/Loader.php
@@ -31,8 +31,7 @@ class Class_Article_Loader extends Storm_Model_Loader {
 
   protected static $_select_tool;
 
-  protected $_all_articles,
-    $_filter_by_local_callback;
+  protected $_all_articles, $_map_callback;
 
 
   public function newFromRow($row) {
@@ -90,81 +89,41 @@ class Class_Article_Loader extends Storm_Model_Loader {
     $select = $this->_getSelectTool();
 
     $articles = $select->findAll($preferences);
-    $articles = $this->_filterByCustomFields($articles,
-                                             $preferences['custom_fields']);
-    $articles = $this->_filterByTag($articles,
-                                    $preferences['tag']);
-
-    $event_date = $preferences['event_date'];
-    if ((new ZendAfi_Validate_DateFormat)->isValid($event_date))
-      $articles = $this->_filterByDay($event_date, $articles);
-
-     $articles = $this->_filter_by_local_callback
-       ? call_user_func($this->_filter_by_local_callback, $articles)
-       : $articles;
-
-     $this->_all_articles = $articles = (new Class_Article_Collection($articles))
-       ->sortBy($select->getSortOrder());
-
-    if (
-        ($select->getSortOrder() == static::ORDER_SELECTION)
-        ||
-        (! $select->getNumberOfArticles())
-    )
-      return $articles;
-
-    return array_slice($articles, 0, $select->getNumberOfArticles());
-  }
-
-
-  public function getAllArticles() {
-    return $this->_all_articles;
-  }
 
+    $collection = (new Class_Article_Collection($articles))
+      ->filterByCustomFields($preferences['custom_fields'])
+      ->filterByTag($preferences['tag'])
+      ->filterByDay($preferences['event_date'])
+      ->apply($this->_map_callback)
+      ->sortBy($select->getSortOrder())
+      ;
 
-  protected function  _filterByTag($articles, $tag) {
-    if (!$tag)
-      return $articles;
+    $this->_all_articles = $collection->getArrayCopy();
 
-    return array_filter($articles,
-                        function($article) use ($tag) {
-                          return $article->hasTag($tag);
-                        });
+    return (static::ORDER_SELECTION != $select->getSortOrder()
+            && ($number_to_display = $select->getNumberOfArticles()))
+      ? $collection->slice($number_to_display)
+      : $this->_all_articles;
   }
 
 
-  protected function _filterByCustomFields($articles, $custom_fields) {
-    if (!$custom_fields)
-      return $articles;
-
-    $filter = function ($article) use ($custom_fields) {
-      foreach($custom_fields as $id => $value) {
-        if ($value != $article->findCustomFieldValueMatching($id,$value))
-          return false;
-      }
-      return true;
-    };
-    $articles = array_filter($articles, $filter);
-
-    return $articles;
+  public function getAllArticles() {
+    return $this->_all_articles;
   }
 
 
-  /**
-   * @param array $articles
-   * @return array
-   */
-  public static function groupByBibId(array $articles) {
+  public static function groupByBibId(array $articles) : array {
     $grouped = [];
 
     foreach ($articles as $article) {
-      $bib_id = ($bib = $article->getBib()) ? $bib->getId() : 0;
+      $bib_id = ($bib = $article->getBib())
+        ? $bib->getId()
+        : 0;
 
-      if (array_key_exists($bib_id, $grouped)) {
-        $grouped[$bib_id][] = $article;
-      } else {
-        $grouped[$bib_id] = array($article);
-      }
+      if (!array_key_exists($bib_id, $grouped))
+        $grouped[$bib_id] = [];
+
+      $grouped[$bib_id][] = $article;
     }
 
     return $grouped;
@@ -218,21 +177,6 @@ class Class_Article_Loader extends Storm_Model_Loader {
   }
 
 
-  protected function _filterByDay($day, $articles) {
-    if(!$day)
-      return $articles;
-
-    $day_num = date("w", strtotime($day));
-    return  array_filter($articles,
-                         function($event) use ($day_num)
-                         {
-                           $pick_day_as_array = $event->getPickDayAsArray();
-                           if(empty($pick_day_as_array) || in_array($day_num, $pick_day_as_array))
-                             return $event;
-                         });
-  }
-
-
   public function findDistinctStatus($articles) {
     $ids = array_map(function($article) {return $article->getId();},
                      $articles);
@@ -251,8 +195,8 @@ class Class_Article_Loader extends Storm_Model_Loader {
   }
 
 
-  public function setFilterByLocalCallback($callback) {
-    $this->_filter_by_local_callback = $callback;
+  public function setMapCallback($callback) {
+    $this->_map_callback = $callback;
   }
 
 
diff --git a/library/Class/Article/Select.php b/library/Class/Article/Select.php
index 991bbee957e389fe5b6c1dddedfd5bd25e481303..542a465c9758f8f2b0f529b82524efecc35fc1c4 100644
--- a/library/Class/Article/Select.php
+++ b/library/Class/Article/Select.php
@@ -467,15 +467,9 @@ class Class_Article_Select {
     $this->_select
       ->where('(cms_article.langue = "' . $langue . '" or exists (select \'x\' from cms_article as translation where translation.PARENT_ID = cms_article.ID_ARTICLE and trim(translation.langue) = "' . $langue . '") or cms_article.langue = "" or cms_article.langue is null)');
 
-    $callback = function ($articles) use ($langue)
-      {
-        return array_map(function ($article) use ($langue) {
-                                                              return $article->getTraductionLangue($langue);
-                                                            },
-                         $articles);
-      };
-
-      $this->_article_loader->setFilterByLocalCallback($callback);
-      return $this;
+    $this->_article_loader
+      ->setMapCallback(fn($article) => $article->getTraductionLangue($langue));
+
+    return $this;
   }
 }
diff --git a/library/Class/Batch/Typo3.php b/library/Class/Batch/Typo3.php
index 3d9ba03157c0bb67ed6460ef9cabeebea28918ad..e8abfc774a42113d3996eec28433d47f84512180 100644
--- a/library/Class/Batch/Typo3.php
+++ b/library/Class/Batch/Typo3.php
@@ -27,12 +27,13 @@ class Class_Batch_Typo3 extends Class_Batch_Abstract {
     return $this->_('Import d\'articles TYPO3');
   }
 
+
   public function run() {
-    return (new Class_Agenda_SQY())->importFromURL();
+    return null;
   }
 
+
   public function isEnabled() {
     return Class_AdminVar::isTypo3Enabled();
   }
 }
-?>
\ No newline at end of file
diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php
index 056cd5ecd3f011483761a79cc2cb54c4722642ce..898d6f42e7b98ba53e164fd279888f3549485631 100644
--- a/library/Class/Calendar.php
+++ b/library/Class/Calendar.php
@@ -212,7 +212,8 @@ class Class_Calendar {
     $sort_order = $this->preferences['display_order'] ?? '';
 
     return (new Class_Article_Collection(array_merge($articles, $next_articles)))
-      ->sortBy($sort_order);
+      ->sortBy($sort_order)
+      ->getArrayCopy();
   }
 
 
diff --git a/library/Class/Catalogue/Loader.php b/library/Class/Catalogue/Loader.php
index 44c50dfdd0cf51f5a49c2c0631d4483ef5acc4f6..6c95be8a9ebdc6240e8c82f6b3a6d4f47545ea1e 100644
--- a/library/Class/Catalogue/Loader.php
+++ b/library/Class/Catalogue/Loader.php
@@ -102,7 +102,7 @@ class Class_Catalogue_Loader extends Storm_Model_Loader {
       Class_CodifThesaurus::deleteAllWithIdOrigineAndCode($catalogue->getId(),
                                                           Class_CodifThesaurus::fixedCodeOf('Domain'));
       $new_thesaurus = $catalogue->getNewThesaurus();
-      $new_thesaurus_id = Class_CodifThesaurus::findNextThesaurusChildId('catalogue',
+      $new_thesaurus_id = Class_CodifThesaurus::findNextThesaurusChildId('Catalogue',
                                                                          $thesaurus_id);
       $new_thesaurus->setIdThesaurus($new_thesaurus_id);
       $new_thesaurus->save();
@@ -624,7 +624,7 @@ class Class_Catalogue_Loader extends Storm_Model_Loader {
       if (!$thesaurus_parent)
         return null;
       $new_thesaurus_id=Class_CodifThesaurus::findNextThesaurusChildId(
-                                                                       'catalogue',
+                                                                       'Catalogue',
                                                                        $thesaurus_parent->getIdThesaurus());
     }
     else if (strlen($thesaurus->getIdThesaurus())>8) {
diff --git a/library/Class/CodifAuteur.php b/library/Class/CodifAuteur.php
index 8576c4ba5ef30d0d438c4492a0037dda49263da1..80959457226f0ffef1343989604e1d98a99f9cc7 100644
--- a/library/Class/CodifAuteur.php
+++ b/library/Class/CodifAuteur.php
@@ -92,7 +92,10 @@ class CodifAuteurLoader extends Storm_Model_Loader {
       return $this->_by_alpha_cache[$code_alpha];
 
     return $this->_by_alpha_cache[$code_alpha] =
-      Class_CodifAuteur::findFirstBy(['where' => "MATCH(formes) AGAINST('" . $code_alpha . "' IN BOOLEAN MODE)"]);
+      Storm_Query::from(Class_CodifAuteur::class)
+      ->match((new Storm_Query_MatchBoolean('formes'))
+              ->against($code_alpha))
+      ->fetchFirst();
   }
 
 
@@ -111,14 +114,17 @@ class CodifAuteurLoader extends Storm_Model_Loader {
 
 
   protected function repairAuthor($author) {
-    if(($author->getLibelle() === 'x') && ($author->getFormes() === 'x')){
+    if (($author->getLibelle() === 'x') && ($author->getFormes() === 'x')){
       $author->delete();
       return;
     }
 
-    $notice = Class_Notice::findFirstBy(['where' => 'MATCH(facettes) AGAINST(\'A'.$author->getId().'\' IN BOOLEAN MODE)']);
+    $notice = Storm_Query::from(Class_Notice::class)
+      ->match((new Storm_Query_MatchBoolean('facettes'))
+              ->against('A' . $author->getId()))
+      ->fetchFirst();
 
-    if(!$notice) {
+    if (!$notice) {
       $author->delete();
       return;
     }
diff --git a/library/Class/CodifThesaurus/Loader.php b/library/Class/CodifThesaurus/Loader.php
index ded53c1985a2e82c33ff98ccff9ad207f9f56a90..521336304d68c66be2dfa05db15a46a9936698bd 100644
--- a/library/Class/CodifThesaurus/Loader.php
+++ b/library/Class/CodifThesaurus/Loader.php
@@ -243,9 +243,12 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
   /** @return string */
   public function findNextThesaurusChildId($code, $parentid_thesaurus) {
     Class_CodifThesaurus::clearCache();
-    $last_thesaurus = Class_CodifThesaurus::findFirstBy(['code' => $code,
-                                                         Class_CodifThesaurus::clauseStart('id_thesaurus', $parentid_thesaurus),
-                                                         'order' => 'id_thesaurus desc']);
+    $last_thesaurus = Storm_Query::from(Class_CodifThesaurus::class)
+      ->eq('code', $code)
+      ->start('id_thesaurus', $parentid_thesaurus)
+      ->order_desc('id_thesaurus')
+      ->fetchFirst();
+
     if (!$last_thesaurus)
       return $parentid_thesaurus.'0001';
 
@@ -285,8 +288,7 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
 
   public function deleteAllFrom($thesaurus) {
     if ($thesaurus && '' != $thesaurus->getIdThesaurus())
-      $this->basicDeleteBy([Class_CodifThesaurus::clauseStart('id_thesaurus',
-                                                              $thesaurus->getIdThesaurus())]);
+      $this->basicDeleteBy(['id_thesaurus like' => $thesaurus->getIdThesaurus() . '%']);
   }
 
 
@@ -357,7 +359,7 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
                 $this->fixedIdOf('AnnexeNovelty'),
                 $this->fixedIdOf('Domain'),
                 ...array_map(fn($thesaurus) => $thesaurus->getIdThesaurus(),
-                             $this->findDomainFacets())];
+                             Class_CodifThesaurus::findDomainFacets())];
     return $this
       ->_findAllFromRootExcluding($exclude);
   }
@@ -413,9 +415,10 @@ class Class_CodifThesaurus_Loader extends Storm_Model_Loader {
 
 
   public function findDomainFacets() : array {
-    return Class_CodifThesaurus::findAllBy(['code' => Class_CodifThesaurusFixed::CODE_DOMAIN_FACET,
-                                            Class_CodifThesaurus::clauseGreater('rules',
-                                                                                '')]);
+    return Storm_Query::from(Class_CodifThesaurus::class)
+      ->eq('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)
+      ->gt('rules', '')
+      ->fetchAll();
   }
 
 
diff --git a/library/Class/CommSigb.php b/library/Class/CommSigb.php
index 21877603f226ce4b76b4319ed1d3dc73ac6f2ce6..4656f9962724f3343837c3c94d294c5f41cdf173 100644
--- a/library/Class/CommSigb.php
+++ b/library/Class/CommSigb.php
@@ -255,7 +255,10 @@ class Class_CommSigb {
 
 
   public function withUserAndSIGBDo($std_user, $closure) {
-    $user = is_a($std_user, 'Class_Users') ? $std_user : Class_Users::find($std_user->ID_USER);
+    $user = is_a($std_user, Class_Users::class)
+      ? $std_user
+      : Class_Users::find($std_user->ID_USER);
+
     Class_Template::current()->withUserAndSIGBDo(
                                                  function() use ($user) {
                                                    Class_WebService_SIGB_EmprunteurCache::newInstance()->remove($user);
@@ -268,4 +271,4 @@ class Class_CommSigb {
   protected function _error($message) {
     return ['erreur' => $message];
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/Exemplaire/Shelf.php b/library/Class/Exemplaire/Shelf.php
index 80811344e68e4616ca4e15abc87b396b5fd492e5..bcf6354dd02e187917fa9ee1d9691eeac841e672 100644
--- a/library/Class/Exemplaire/Shelf.php
+++ b/library/Class/Exemplaire/Shelf.php
@@ -42,28 +42,27 @@ class Class_Exemplaire_Shelf {
 
 
   protected function _findBeforeItems() : array {
-    return array_reverse($this->_findItems(Class_Exemplaire::clauseLesser('shelf_key',
-                                                                          $this->_item->getShelfKey()),
-                                           'shelf_key desc'));
+    return array_reverse($this
+                         ->_findItems(Storm_Query::from(Class_Exemplaire::class)
+                                      ->lt('shelf_key', $this->_item->getShelfKey())
+                                      ->order_desc('shelf_key')));
   }
 
 
   protected function _findAfterItems() : array {
-    return $this->_findItems(Class_Exemplaire::clauseGreater('shelf_key',
-                                                             $this->_item->getShelfKey()),
-                             'shelf_key');
+    return $this->_findItems(Storm_Query::from(Class_Exemplaire::class)
+                             ->gt('shelf_key', $this->_item->getShelfKey())
+                             ->order('shelf_key'));
   }
 
 
-  protected function _findItems(Storm_Model_PersistenceStrategy_Clause $clause,
-                                string $order) : array {
-    return Class_Exemplaire::findAllBy([$clause,
-                                        'order' => $order,
-                                        'id_bib' => $this->_item->getIdBib(),
-                                        'section' => $this->_item->getSection(),
-                                        'emplacement' => $this->_item->getEmplacement(),
-                                        'id_notice not' => $this->_item->getIdNotice(),
-                                        'limit' => 12,
-                                        'group_by' => 'id_notice']);
+  protected function _findItems(Storm_Query $query) : array {
+    return $query->eq('id_bib', $this->_item->getIdBib())
+                 ->eq('section', $this->_item->getSection())
+                 ->eq('emplacement', $this->_item->getEmplacement())
+                 ->not_eq('id_notice', $this->_item->getIdNotice())
+                 ->limit(12)
+                 ->group('id_notice')
+                 ->fetchAll();
   }
 }
diff --git a/library/Class/FileManager/Model.php b/library/Class/FileManager/Model.php
index 80d4e2c646b631017bba0acd9a225f53008149bd..cd09624a8465950ebe5d3088a2cebc7c4fcdc220 100644
--- a/library/Class/FileManager/Model.php
+++ b/library/Class/FileManager/Model.php
@@ -189,8 +189,9 @@ class Class_FileManager_ModelRelationWidget {
 
   public function findAll(string $path) : array {
     $widgets = [];
-    foreach(Class_Profil::findAllBy([Class_Profil::clauseNotEqual('template', 'null'),
-                                     Class_Profil::clauseNotEqual('template', '')]) as $profile)
+    foreach (Storm_Query::from(Class_Profil::class)
+             ->not_is_null('template')
+             ->fetchAll() as $profile)
       $widgets = $this->_getWidgetsWithImage($path, $profile, $widgets);
 
     return $widgets;
@@ -249,4 +250,4 @@ class Class_FileManager_ModelRelationWidget {
               },
               $this->findAll($path));
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/Matiere.php b/library/Class/Matiere.php
index ac7ba123327d6b927b93de32a7d61590889ca3c4..88193679acf363d4fb590ef1213d2b56fe53cb2c 100644
--- a/library/Class/Matiere.php
+++ b/library/Class/Matiere.php
@@ -38,7 +38,9 @@ class Class_Matiere extends Storm_Model_Abstract {
 
   public function getSousVedettes() {
     $vedette = $this->getLibelle();
-    $children = $this->getLoader()->findAllBy([Storm_Model_PersistenceStrategy_Clause::clauseStart('libelle', $vedette . ' : ')]);
+    $children = Storm_Query::from(Class_Matiere::class)
+      ->start('libelle', $vedette . ' : ')
+      ->fetchAll();
 
     if (0 == count($children))
       return '';
diff --git a/library/Class/NatureDoc.php b/library/Class/NatureDoc.php
index 2dda3e9afab25e7e755b1c8f969d486c513ac42a..51379e041fd27d32ef6dfb7e2b53cf7a2ce237eb 100644
--- a/library/Class/NatureDoc.php
+++ b/library/Class/NatureDoc.php
@@ -87,7 +87,7 @@ class NatureDocLoader extends Class_CosmoVar_ModelLoader {
   }
 
 
-  public function findAll($select = null) {
+  public function findAll($select = null) : array {
     if (isset($this->_all_instances))
       return $this->_all_instances;
 
diff --git a/library/Class/Notice/Loader.php b/library/Class/Notice/Loader.php
index 33c66223625b5cb2a31967346003f8c7bf3ed37c..e5e64f78e158c09985628d9b4cc52b0c9d1c4f85 100644
--- a/library/Class/Notice/Loader.php
+++ b/library/Class/Notice/Loader.php
@@ -216,7 +216,9 @@ class Class_Notice_Loader extends Storm_Model_Loader {
 
 
   public function findAllByClefAlphaStartingWith(string $value) : array {
-    return Class_Notice::findAllBy([Class_Notice::clauseStart('clef_alpha', $value)]);
+    return Storm_Query::from(Class_Notice::class)
+      ->start('clef_alpha', $value)
+      ->fetchAll();
   }
 
 
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 94844a92f4958cac959e2a00a57be48e4e9f0529..dc941655dc0e3e7eff0dd6744579bb50f4eca538 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -158,8 +158,7 @@ class ProfilLoader extends Storm_Model_Loader {
 
   public function reset() : void {
     Class_Profil::clearCache();
-    if ($profile = Class_Profil::getCurrentProfil())
-      $profile->clearInstanceCache();
+    Class_Profil::clearCurrentProfil();
   }
 }
 
@@ -250,6 +249,11 @@ class Class_Profil extends Storm_Model_Abstract {
   }
 
 
+  public static function clearCurrentProfil() {
+    self::$_current_profil = null;
+  }
+
+
   public static function goBackToPreviousProfil() {
     $session = Zend_Registry::get('session');
     $session->id_profil = $session->previous_id_profil;
diff --git a/library/Class/Rss.php b/library/Class/Rss.php
index 7063f2ea4b91ff25d2ba1a41de431262a68fd39a..98a7d6240de589d62f8e27e9f6119049c4ba9c45 100644
--- a/library/Class/Rss.php
+++ b/library/Class/Rss.php
@@ -302,46 +302,6 @@ class Class_Rss extends Storm_Model_Abstract {
     }
   }
 
-  public function getAllCategorieByIdBib($id_bib ="all")
-  {
-    try
-      {
-        if($id_bib == "all")
-          {
-            $select = $this->_rssCategorie->getAdapter()->select()
-              ->from('rss_categorie',array('ID_CAT'=>'ID_CAT', 'ID_CAT_MERE'=>'ID_CAT_MERE','ID_SITE'=>'ID_SITE','LIBELLE'=>'LIBELLE'))
-              ->where('ID_SITE >=?', 0);
-            $stmt = $select->query();
-            $row = $stmt->fetchAll();
-            return $row;
-          }
-        else
-          {
-            $select = $this->_rssCategorie->getAdapter()->select()
-              ->from('rss_categorie',array('ID_CAT'=>'ID_CAT', 'ID_CAT_MERE'=>'ID_CAT_MERE','ID_SITE'=>'ID_SITE','LIBELLE'=>'LIBELLE'))
-              ->where('ID_SITE=?', $id_bib);
-            $stmt = $select->query();
-            $row = $stmt->fetchAll();
-            return $row;
-          }
-      }catch (Exception $e)
-         {
-           logErrorMessage('Class: Class_Rss; Function: getAllCategorieByIdBib' . NL . $e->getMessage());
-           return $this->_dataBaseError;
-         }
-  }
-
-  public function getCategorieByIdCat($id_cat)
-  {
-    try{
-      $where = $this->_rssCategorie->getAdapter()->quoteInto('ID_CAT=?', $id_cat);
-      return $fetch = $this->_rssCategorie->fetchRow($where);
-    }catch (Exception $e){
-      logErrorMessage('Class: Class_Rss; Function: getCategorieByIdCat' . NL . $e->getMessage());
-      return $this->_dataBaseError;
-    }
-  }
-
   public function getAllSousCategorie($id_cat_mere ="all")
   {
     try{
@@ -412,19 +372,6 @@ class Class_Rss extends Storm_Model_Abstract {
     return isset($row[0]["ID_CAT_MERE"]) ? $row[0]["ID_CAT_MERE"] : 0;
   }
 
-
-  public function rendComboCategorie($id_bib,$id_cat)
-  {
-    $html[] = '<select name="id_cat">';
-    $cat_array = $this->getAllCategorieByIdBib($id_bib);
-    foreach($cat_array as $cat)
-      {
-        if ($id_cat == $cat["ID_CAT"]) $sel ='selected="selected"'; else $sel ='';
-        $html[] = '<option value="'.$cat["ID_CAT"].'" '.$sel.'>'.$cat["LIBELLE"].'</option>';
-      }
-    $html[] = '</select>';
-    return (implode('',$html));
-  }
   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   //                                                     Méthode admin
   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -542,4 +489,4 @@ class Class_Rss extends Storm_Model_Abstract {
     $visitor->visitTitre($this->getTitre())
             ->visitTypeDocId(Class_TypeDoc::RSS);
   }
-}
\ No newline at end of file
+}
diff --git a/library/Class/SessionActivity.php b/library/Class/SessionActivity.php
index 692cc5046c2ede4578402877c9087fdad9cac2be..680a0057e2dd9b14e7ef62f888d6605049603cf2 100644
--- a/library/Class/SessionActivity.php
+++ b/library/Class/SessionActivity.php
@@ -481,14 +481,17 @@ class Class_SessionActivity extends Storm_Model_Abstract {
   }
 
 
-  /** @return string */
   public function getLibelleActivity() {
-    return $this->getActivity()->getLibelle();
+    return ($activity = $this->getActivity())
+      ? ($activity->getLibelle() ?? '')
+      : '';
   }
 
 
   public function getActivityDescription() {
-    return $this->getActivity()->getDescription();
+    return ($activity = $this->getActivity())
+            ? $activity->getDescription()
+            : '';
   }
 
 
diff --git a/library/Class/Systeme/Sql.php b/library/Class/Systeme/Sql.php
index cef08dd2c037dd10c300e758d06c16cddc3df8fc..d7f9f94e80f152000af55f9100b947833a40a95c 100644
--- a/library/Class/Systeme/Sql.php
+++ b/library/Class/Systeme/Sql.php
@@ -202,6 +202,6 @@ class Class_Systeme_Sql {
     print '</center>' . $msg;
 
     // On arrete tout
-    exit;
+    exit(1);
   }
 }
diff --git a/library/Class/TypeDoc.php b/library/Class/TypeDoc.php
index 8a25ef675bfd6a8545542b90b6cfc03e481d6f23..3ed58b40fe1270ad8465b5ca1f63e4b65c6210ca 100644
--- a/library/Class/TypeDoc.php
+++ b/library/Class/TypeDoc.php
@@ -63,7 +63,7 @@ class TypeDocLoader extends Class_CosmoVar_ModelLoader  {
   }
 
 
-  public function findAll($select=null) {
+  public function findAll($select = null) : array {
     if (isset($this->_all_instances))
       return $this->_all_instances;
 
diff --git a/library/Class/Users.php b/library/Class/Users.php
index 4ae67692c9c11a0eb1858dd7f8911bb4b4bad983..1f834d5bcbaa152152b7c65d89f627695dd51350 100644
--- a/library/Class/Users.php
+++ b/library/Class/Users.php
@@ -23,7 +23,7 @@ class UsersLoader extends Storm_Model_Loader {
   use Trait_Translator;
 
   public function getDisabledNewsletterUserMails(){
-    $request= 'select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null;';
+    $request= 'select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null';
     return array_map(function($element) { return $element; },
                      Zend_Registry::get('sql')->fetchAllByColumn($request));
   }
diff --git a/library/ZendAfi/Controller/Action/Helper/FlashMessenger.php b/library/ZendAfi/Controller/Action/Helper/FlashMessenger.php
index 9a9e6a262b82ce769a53a1546ff29d9e9546fcf8..795018a1c4be29c5149e074db362bcebff42cbd2 100644
--- a/library/ZendAfi/Controller/Action/Helper/FlashMessenger.php
+++ b/library/ZendAfi/Controller/Action/Helper/FlashMessenger.php
@@ -32,7 +32,7 @@ class ZendAfi_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Ac
 
   public function addNotification($message, $options = []) {
     $params = ['message' => $message] + $options;
-    $this->addMessage([static::NOTIFICATION => $params]);
+    return $this->addMessage([static::NOTIFICATION => $params]);
   }
 
 
@@ -84,4 +84,4 @@ class ZendAfi_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Ac
                      },
                      array_filter($this->getMessages(), [$this, 'isScript']));
   }
-}
\ No newline at end of file
+}
diff --git a/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Domain.php b/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Domain.php
index 16750cd6ebc420d9256378cd1fe5fa7719bb487a..5601854b6bf184489e5082753d92a9fc908b914c 100644
--- a/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Domain.php
+++ b/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Domain.php
@@ -25,8 +25,8 @@ class ZendAfi_Controller_Plugin_ResourceDefinition_DynamicFacet_Domain
 
   public function getDefinitions() {
     $definitions = parent::getDefinitions();
-    $definitions['model']['filter'] = [Class_CodifThesaurus::clauseGreater('rules', ''),
-                                       Class_CodifThesaurus::clauseEqual('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)];
+    $definitions['model']['filter'] = [Storm_Query_Clause::greater('rules', ''),
+                                       'code' => Class_CodifThesaurusFixed::CODE_DOMAIN_FACET];
     $definitions['actions']['index']['title'] = $this->_('Facettes dynamiques sur domaines');
     $definitions['actions']['edit']['title'] = $this->_('Modifier la facette sur domaines : %s');
     $definitions['actions']['add']['title'] = $this->_('Ajouter une facette dynamique pour des domaines');
diff --git a/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Unimarc.php b/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Unimarc.php
index 2535826d2d9bd176505c6cc99791facb825f71e7..f3d06d75768aa4b9b0e19bc03bdb881523d4b7ce 100644
--- a/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Unimarc.php
+++ b/library/ZendAfi/Controller/Plugin/ResourceDefinition/DynamicFacet/Unimarc.php
@@ -27,8 +27,8 @@ class ZendAfi_Controller_Plugin_ResourceDefinition_DynamicFacet_Unimarc
     return
       ['model' => ['class' => Class_CodifThesaurus::class,
                    'name' => 'thesauri',
-                   'filter' => [Class_CodifThesaurus::clauseGreater('rules', ''),
-                                Class_CodifThesaurus::clauseEqual('code', Class_CodifThesaurusFixed::CODE_UNIMARC_FACET)],
+                   'filter' => [Storm_Query_Clause::greater('rules', ''),
+                                'code' => Class_CodifThesaurusFixed::CODE_UNIMARC_FACET],
                    'order' => 'libelle'],
 
        'messages' => ['successful_save' => $this->_('Facette dynamique "%s" sauvegardée'),
diff --git a/library/digital_resources/Bacon/Service/ParserTXT.php b/library/digital_resources/Bacon/Service/ParserTXT.php
index 573c904cc46336a688512c524bbf0c016369369d..6f35ab4a60cc1f927799467d0532c17b5e09ae1d 100644
--- a/library/digital_resources/Bacon/Service/ParserTXT.php
+++ b/library/digital_resources/Bacon/Service/ParserTXT.php
@@ -26,6 +26,7 @@ class Bacon_Service_ParserTXT
   public function parse(string $txt) : self {
     $this->_albums = [];
     $album_datas=[];
+
     $stream = fopen('php://memory', 'r+');
     fwrite($stream, $txt);
     rewind($stream);
@@ -56,4 +57,4 @@ class Bacon_Service_ParserTXT
       if (method_exists($this, $data_handler))
         $this->$data_handler($value);
   }
-}
\ No newline at end of file
+}
diff --git a/library/digital_resources/Bibliondemand/tests/BibliondemandTest.php b/library/digital_resources/Bibliondemand/tests/BibliondemandTest.php
index 9943a4d87bb365c5092bda7247bc86168584b9a1..fb481031bfa151aa524f303310644ab1a6515a37 100644
--- a/library/digital_resources/Bibliondemand/tests/BibliondemandTest.php
+++ b/library/digital_resources/Bibliondemand/tests/BibliondemandTest.php
@@ -22,9 +22,6 @@
 
 class BibliondemandModulesControllerTest extends AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
-
   /** @test */
   public function shouldHaveAccessForbiddenMessage() {
     ZendAfi_Auth::getInstance()->logUser($this->fixture('Class_Users',
@@ -32,7 +29,7 @@ class BibliondemandModulesControllerTest extends AbstractControllerTestCase {
                                                          'login' => 'Tom',
                                                          'password' => 'pwd']));
 
-    $this->dispatch('/opac/modules/bibliondemand', true);
+    $this->dispatch('/opac/modules/bibliondemand');
     $this->assertFlashMessengerContentContains('Vous devez être abonné pour accéder à cette ressource.');
   }
 
@@ -60,14 +57,14 @@ class BibliondemandModulesControllerTest extends AbstractControllerTestCase {
 
     ZendAfi_Auth::getInstance()->logUser($user);
 
-    $this->dispatch('/opac/modules/bibliondemand', true);
+    $this->dispatch('/opac/modules/bibliondemand');
     $this->assertXpathContentContains('//script', 'document.location.href="https://biblio.org";');
   }
 
 
   /** @test */
   public function dashboardCustomIntegrationShouldBeDisplay() {
-    $this->dispatch('/Bibliondemand_Plugin', true);
+    $this->dispatch('/Bibliondemand_Plugin');
     $this->assertXpathContentContains('//h3', 'Diagnostic SSO');
     $this->assertNotXpathContentContains('//h3', 'Diagnostic moissonnage');
     $this->assertXpathContentContains('//h3', 'Diagnostic complémentaire');
@@ -108,17 +105,15 @@ class BibliondemandModulesControllerTest extends AbstractControllerTestCase {
     Class_Batch::newInstance(['type' => 'Bibliondemand_IndexThesauriBatch'])
       ->assertSave();
 
-    $this->dispatch('/Bibliondemand_Plugin', true);
-    $this->assertXPathContentContains('//table', 'Indexation incrémentale', $this->_response->getBody());
+    $this->dispatch('/Bibliondemand_Plugin');
+    $this->assertXPathContentContains('//table', 'Indexation incrémentale');
   }
 }
 
 
 
-class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase {
-
-  protected $_storm_default_to_volatile = true;
 
+class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -144,7 +139,6 @@ class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase {
 
     ZendAfi_Auth::getInstance()->logUser($user);
 
-
     $unimarc = (new Class_Indexation_PseudoNotice_UnimarcVisitor())
       ->visitCatalogAgency('Bibliondemand')
       ->visitLocations(['1DTOUCH'])
@@ -164,14 +158,14 @@ class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase {
 
   /** @test */
   public function unknownRecordshouldRedirectToReferer() {
-    $this->dispatch('/modules/sso/id/44', true);
+    $this->dispatch('/modules/sso/id/44');
     $this->assertRedirect();
   }
 
 
   /** @test */
   public function record21ShouldRedirectToBibliondemandSso() {
-    $this->dispatch('/modules/sso/id/21', true);
+    $this->dispatch('/modules/sso/id/21');
     $this->assertXPathContentContains('//script', 'document.location.href="http://numerique-pasdecalais.bibliondemand.com/logon.aspx?provider=SsoCas&sso-id=cg62-saintomer&returnUrl='. urlencode('/sarasvati/ws/secure/redirect.ashx?url=' . urlencode('http://music.1dtouch.com/users/auth/assa?dest=albums/137962&bibid=CG62')).'"',
                                       $this->_response->getBody());
   }
@@ -179,11 +173,10 @@ class ModulesControllerBibliondemandSsoTest extends AbstractControllerTestCase {
 
 
 
+
 class BibliondemandLibDocTypesTests extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_file_content = '';
 
+  protected $_file_content = '';
 
   public function setUp() {
     parent::setUp();
@@ -271,9 +264,6 @@ class BibliondemandLibDocTypesTests extends ModelTestCase {
 
 class BibliondemandMissingDocTypesTests extends Admin_AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
-
   public function tearDown() {
     Bibliondemand_Lib_DocTypesFinder::reset();
     parent::tearDown();
@@ -316,6 +306,7 @@ class BibliondemandMissingDocTypesTests extends Admin_AbstractControllerTestCase
 
 
 abstract class BibliondemandIndexThesauriBatchTestCase extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -346,7 +337,9 @@ abstract class BibliondemandIndexThesauriBatchTestCase extends ModelTestCase {
 
 
 
-class BibliondemandIndexThesauriBatchRunTest extends BibliondemandIndexThesauriBatchTestCase  {
+class BibliondemandIndexThesauriBatchRunTest
+  extends BibliondemandIndexThesauriBatchTestCase  {
+
   /** @test */
   public function batchShouldRun() {
     $config = Bibliondemand_Config::getInstance();
@@ -359,13 +352,16 @@ class BibliondemandIndexThesauriBatchRunTest extends BibliondemandIndexThesauriB
 
 
 
-class BibliondemandIndexThesauriBatchTest extends BibliondemandIndexThesauriBatchTestCase  {
+class BibliondemandIndexThesauriBatchTest
+  extends BibliondemandIndexThesauriBatchTestCase  {
+
   protected
     $_file_writer,
     $_script;
 
   public function setUp() {
     parent::setUp();
+
     $this->_file_writer = $this->mock()
                  ->whenCalled('unlink')
                  ->answers(true)
@@ -438,7 +434,6 @@ class BibliondemandIndexThesauriBatchTest extends BibliondemandIndexThesauriBatc
   }
 
 
-
   /** @test */
   public function batchShouldWriteLastRunElapsedTimeAndCountInReport() {
     $this->assertEquals([PATH_TEMP . 'bibliondemand_index_thesauri.json',
@@ -452,10 +447,8 @@ class BibliondemandIndexThesauriBatchTest extends BibliondemandIndexThesauriBatc
 
 
 
-class BibliondemandIndexThesauriActivateBatchTests extends Admin_AbstractControllerTestCase {
-
-  protected $_storm_default_to_volatile = true;
-
+class BibliondemandIndexThesauriActivateBatchTests
+  extends Admin_AbstractControllerTestCase {
 
   /** @test */
   public function batchShouldBeActivated() {
@@ -493,38 +486,37 @@ class BibliondemandIndexThesauriActivateBatchTests extends Admin_AbstractControl
 
 
 
-class BibliondemandSsoByProviderTests extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
+class BibliondemandSsoByProviderTests extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_AdminVar',
+    $this->fixture(Class_AdminVar::class,
                    ['id' => 'Bibliondemand_SSO_URL',
                     'valeur' => 'https://biblio.org']);
 
-    $this->fixture('Class_IntProfilDonnees',
+    $this->fixture(Class_IntProfilDonnees::class,
                    ['id' => 18,
                     'attributs' => serialize([]),
                     'format' => Class_IntProfilDonnees::FORMAT_BIBLIONDEMAND]);
 
-    $this->fixture('Class_IntMajAuto',
+    $this->fixture(Class_IntMajAuto::class,
                    ['id' => 1,
                     'profil' => 18,
                     'int_bib' => $this->fixture('Class_IntBib', ['id' => 15])]);
 
-    $group = $this->fixture('Class_UserGroup',
+    $group = $this->fixture(Class_UserGroup::class,
                             ['id' => 1,
                              'libelle' => 'Digital resources']);
 
-    $user = $this->fixture('Class_Users',
+    $user = $this->fixture(Class_Users::class,
                            ['id' => 1,
                             'login' => 'Tom',
                             'password' => 'pwd'])
                  ->setUserGroups([$group]);
 
-    $this->fixture('Class_Permission',
+    $this->fixture(Class_Permission::class,
                    ['id' => 1,
                     'code' => 'Bibliondemand'])
          ->permitTo($group,  new Class_Entity());
@@ -532,22 +524,25 @@ class BibliondemandSsoByProviderTests extends Admin_AbstractControllerTestCase {
     Class_Batch::newInstance(['type' => 'Bibliondemand_IndexThesauriBatch'])
       ->assertSave();
 
-    $this->onLoaderOfModel('Class_CodifThesaurus')
+    $this->onLoaderOfModel(Class_CodifThesaurus::class)
          ->whenCalled('findAllBy')
-         ->answers([$this->fixture('Class_CodifThesaurus',
+         ->answers([$this->fixture(Class_CodifThesaurus::class,
                                    ['id' => 8,
                                     'id_thesaurus' => 'DRDR0000100020001',
                                     'code' => 'Digital resources',
-                                    'libelle' => 'Arte'])]);
+                                    'libelle' => 'Arte'])])
 
-    $this->onLoaderOfModel('Class_Notice')
+         ->whenCalled('findNextThesaurusChildId')
+         ->answers('DRDR0000100020001');
+
+    $this->onLoaderOfModel(Class_Notice::class)
          ->whenCalled('findFirstBy')
          ->with("MATCH (facettes) AGAINST ('+HDRDR000100020001' IN BOOLEAN MODE)")
          ->answers($this->fixture('Class_Notice',
                                   ['id' => 456,
                                    'titre_principal' => 'Trolls de Troy']));
 
-    $this->dispatch('/Bibliondemand_Plugin', true);
+    $this->dispatch('/Bibliondemand_Plugin');
   }
 
 
@@ -566,10 +561,8 @@ class BibliondemandSsoByProviderTests extends Admin_AbstractControllerTestCase {
 
 
 
-class BibliondemandIndexDocTypesBatchActivatedTests extends Admin_AbstractControllerTestCase {
-
-  protected $_storm_default_to_volatile = true;
-
+class BibliondemandIndexDocTypesBatchActivatedTests
+  extends Admin_AbstractControllerTestCase {
 
   /** @test */
   public function batchShouldBeActivated() {
@@ -605,7 +598,6 @@ class BibliondemandIndexDocTypesBatchActivatedTests extends Admin_AbstractContro
   }
 
 
-
   /** @test */
   public function scriptIndexDocTypesShouldUpdateRecords() {
     $this->fixture('Class_AdminVar',
diff --git a/library/storm b/library/storm
index 225b570b6a4ee0b1330ec10a2e26b1d6df9c3bdb..bcc5c97963992a729a2d598c6945bccdf6c6d18c 160000
--- a/library/storm
+++ b/library/storm
@@ -1 +1 @@
-Subproject commit 225b570b6a4ee0b1330ec10a2e26b1d6df9c3bdb
+Subproject commit bcc5c97963992a729a2d598c6945bccdf6c6d18c
diff --git a/library/templates/Intonation/Library/Widget/Search/View.php b/library/templates/Intonation/Library/Widget/Search/View.php
index 271adf615d139a0da40fbc240587e1cbb6e6cd34..bf94682f245fd436daf6551fa266fad9deb16073 100644
--- a/library/templates/Intonation/Library/Widget/Search/View.php
+++ b/library/templates/Intonation/Library/Widget/Search/View.php
@@ -353,16 +353,28 @@ abstract class IntonationSearchRenderAbstract {
 
   protected function _createDomainSelectorByFacetCode(ZendAfi_Form $form, string $facet_code) : ?Zend_Form_Element {
     $facet_thesaurus_id = substr($facet_code, 1);
-    $parent_facet = Class_CodifThesaurus::findFirstBy(['id_thesaurus' => $facet_thesaurus_id]);
+    if ((!$facets = Storm_Query::from(Class_CodifThesaurus::class)
+         ->start('id_thesaurus', $facet_thesaurus_id)
+         ->not_is_null('id_origine')
+         ->eq('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)
+         ->order('libelle_facette')
+         ->fetchAll()))
+      return null;
+
+    $parent_facet = Storm_Query::from(Class_CodifThesaurus::class)
+      ->eq('id_thesaurus', $facet_thesaurus_id)
+      ->fetchFirst();
     if ((!$domain_ids = $parent_facet->getRuleListDomainId()))
       return null;
 
     $options = ['' => $parent_facet->getLibelleFacette()];
     foreach($domain_ids as $domain_id) {
       $domain = Class_Catalogue::find($domain_id);
-      if(!$facet = Class_CodifThesaurus::findFirstBy(['libelle_facette' => $domain->getLibelle(),
-                                                      Class_CodifThesaurus::clauseNotIs('id_origine'),
-                                                      'code' => Class_CodifThesaurusFixed::CODE_DOMAIN_FACET]))
+      if (!$facet = Storm_Query::from(Class_CodifThesaurus::class)
+          ->eq('libelle_facette', $domain->getLibelle())
+          ->not_is_null('id_origine')
+          ->eq('code', Class_CodifThesaurusFixed::CODE_DOMAIN_FACET)
+          ->fetchFirst())
         continue;
       $options[Class_CodifThesaurus::CODE_FACETTE . $facet->getIdThesaurus()] = $facet->getLibelleFacette();
     }
diff --git a/scripts/snife_setup_teardown.php b/scripts/snife_setup_teardown.php
new file mode 100644
index 0000000000000000000000000000000000000000..330e5fe7ee3c3140a17d4dd719d1f4a9307926a0
--- /dev/null
+++ b/scripts/snife_setup_teardown.php
@@ -0,0 +1,119 @@
+<?php
+require(__DIR__ . '/../console.php');
+ini_set('display_errors', true);
+error_reporting(E_ALL);
+class SnifeSetupTeardown {
+
+  protected array $_missing_setup = [];
+  protected array $_missing_teardown = [];
+  protected array $_with_this_setup = [];
+  protected array $_with_volatile_false = [];
+
+  public function run() : self {
+    foreach ($this->_getAllTestsFiles() as $file_name)
+      $this->_runOne($file_name);
+
+    return $this->_render();
+  }
+
+
+  protected function _runOne(string $file_name) : self {
+    $extends = $this->_allExtendsInFile($file_name);
+
+    foreach ($extends as $extend) {
+      if ($this->_missingParentSetup($extend))
+        $this->_missing_setup [$file_name]
+          = ($this->_missing_setup[$file_name] ?? 0) + 1;
+      if ($this->_missingParentTeardown($extend))
+        $this->_missing_teardown [$file_name]
+          = ($this->_missing_teardown[$file_name] ?? 0) + 1;
+      if ($this->_withThisSetup($extend))
+        $this->_with_this_setup [$file_name]
+          = ($this->_with_this_setup[$file_name] ?? 0) + 1;
+      if ($this->_withVolatileFalse($extend))
+        $this->_with_volatile_false [$file_name]
+          = ($this->_with_volatile_false[$file_name] ?? 0) + 1;
+    }
+
+    return $this;
+  }
+
+
+  protected function _render() : self {
+    echo 'Files without parent::setup' . "\n";
+    foreach ($this->_missing_setup as $setup => $nb)
+      echo " - " . $setup . " : " . $nb . " fois\n";
+
+    echo "\n" . 'Files without parent::teardown' . "\n";
+    foreach ($this->_missing_teardown as $teardown => $nb)
+      echo " - " . $teardown . " : " . $nb . " fois\n";
+
+    echo "\n" . 'Files without this->setup' . "\n";
+    foreach ($this->_with_this_setup as $this_setup => $nb)
+      echo " - " . $this_setup . " : " . $nb . " fois\n";
+
+    echo "\n" . 'Files with default volatile at false' . "\n";
+    foreach ($this->_with_volatile_false as $volatile_false => $nb)
+      echo " - " . $volatile_false . " : " . $nb . " fois\n";
+
+    return $this;
+  }
+
+
+  protected function _getAllTestsFiles() : array {
+    $all_files = [];
+    exec('find ./tests ./library/digital_resources -type f -name \\*Test.php',
+         $all_files);
+
+    return $all_files;
+  }
+
+
+  protected function _allExtendsInFile($file_name) : array {
+    if (!($extends = preg_split("/\\s+extends\\s+/i",
+                                file_get_contents($file_name))))
+      return [];
+
+    return $extends;
+  }
+
+
+  protected function _startWithPHPunit($content) : bool {
+    return 'PHPUnit' === substr($content, 0, 7);
+  }
+
+
+  protected function _missingParentSetup(string $content) : bool {
+    $setups = preg_split("/\\s+function\\s+setup\\(/i", $content);
+    if (count($setups) < 2 || $this->_startWithPHPunit($setups[0]))
+      return false;
+
+    $nb = preg_match("/parent::setup\\(/i", $setups[1]);
+    return 1 !== $nb;
+  }
+
+
+  protected function _missingParentTeardown(string $content) : bool {
+    $teardowns = preg_split("/\\s+function\\s+teardown\\(/i", $content);
+    if (count($teardowns) < 2 || $this->_startWithPHPunit($teardowns[0]))
+      return false;
+
+    $nb = preg_match("/parent::teardown\\(/i", $teardowns[1]);
+    return 1 !== $nb;
+  }
+
+
+  protected function _withThisSetup(string $content) : bool {
+    $nb = preg_match("/this->setup\\(/i", $content);
+    return false !== $nb && $nb > 0;
+  }
+
+
+  protected function _withVolatileFalse($content) : bool {
+    $nb = preg_match("/storm_default_to_volatile\\s*=\\s*false/i", $content);
+    return false !== $nb && $nb > 0;
+  }
+}
+
+
+(new SnifeSetupTeardown)->run();
diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php
index 16bc47ed0c8bdc70428458f9eb5fb38b9d5e96b1..0c5cbf1fa11af69f98e43551d8eac1dc5299b42f 100644
--- a/tests/application/modules/AbstractControllerTestCase.php
+++ b/tests/application/modules/AbstractControllerTestCase.php
@@ -158,6 +158,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
     Class_Notice_Thumbnail_ProviderCacheServer::doNotTrackSeen();
     Class_CriteresRecherche::setMaxSearchResults('');
     Class_Systeme_Report_Portal::setIp('0.0.0.0');
+    Class_Systeme_ModulesAccueil::reset();
     Class_Systeme_ModulesMenu::reset();
     Class_AdminVar_Cookies::setManager(new Class_Cookies_Base());
     Class_Systeme_Widget_Abstract::reset();
diff --git a/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php b/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php
index 47e11603a2498443f3425be7876e68bac2441a6e..05c11f5687072f59de3a6f6df13694fbc83d3cc1 100644
--- a/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php
+++ b/tests/application/modules/admin/controllers/CmsControllerCustomFieldsTest.php
@@ -48,7 +48,12 @@ abstract class CmsControllerCustomFieldsTestCase extends AbstractControllerTestC
       ->whenCalled('findAllBy')
       ->with(['where' => 'id_thesaurus like "CFCF0001%" and LENGTH(id_thesaurus) = 12',
               'order' => 'libelle'])
-      ->willDo($closure);
+      ->willDo($closure)
+
+      ->whenCalled('findNextThesaurusChildId')
+      ->willDo(fn($code, $parent_id) => ('CFCF' === $parent_id
+                                         ? 'CFCF0001'
+                                         : 'CFCF00010001'));
 
     $meta = $this->fixture(Class_CustomField_Meta::class,
                    ['id' => 3,
diff --git a/tests/application/modules/admin/controllers/CustomFieldsMetaControllerTest.php b/tests/application/modules/admin/controllers/CustomFieldsMetaControllerTest.php
index cf43fdffc05a494618f9f5f39aaa74e2386240f6..2a8720a0c43488637ef5adc37ea7d7af4e4eebfe 100644
--- a/tests/application/modules/admin/controllers/CustomFieldsMetaControllerTest.php
+++ b/tests/application/modules/admin/controllers/CustomFieldsMetaControllerTest.php
@@ -19,32 +19,32 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
-abstract class CustomFieldsMetaControllerTestCase extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+abstract class CustomFieldsMetaControllerTestCase
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CodifThesaurus',
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 34,
                     'id_thesaurus' => Class_CodifThesaurus::fixedIdOf('CustomField'),
                     'code' => Class_CodifThesaurus::fixedCodeOf('CustomField'),
                     'libelle' => 'Champs personnalisés']);
 
-    $this->fixture('Class_CustomField_Meta',
+    $this->fixture(Class_CustomField_Meta::class,
                    ['id' => 1,
                     'label' => 'Address',
                     'field_type' => Class_CustomField_Meta::TEXT_INPUT,
                     'options_list' => '',
                     'indexable' => 0]);
 
-    $this->fixture('Class_CustomField_Meta',
+    $this->fixture(Class_CustomField_Meta::class,
                    ['id' => 2,
                     'label' => 'Status',
                     'field_type' => Class_CustomField_Meta::SELECT,
                     'indexable' => 1]);
 
-    $this->fixture('Class_CustomField',
+    $this->fixture(Class_CustomField::class,
                    ['id' => 1,
                     'meta_id' => 1,
                     'priority' => 2,
@@ -58,7 +58,7 @@ abstract class CustomFieldsMetaControllerTestCase extends AbstractControllerTest
 class CustomFieldsMetaControllerIndexActionTest extends CustomFieldsMetaControllerTestCase {
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/custom-fields-meta', true);
+    $this->dispatch('/admin/custom-fields-meta');
   }
 
 
@@ -72,7 +72,8 @@ class CustomFieldsMetaControllerIndexActionTest extends CustomFieldsMetaControll
    * @dataProvider columnsProvider
    */
   public function columnShouldBePresent($header) {
-    $this->assertXPathContentContains('//table[@id="custom-fields-meta"]//th', $header);
+    $this->assertXPathContentContains('//table[@id="custom-fields-meta"]//th',
+                                      $header);
   }
 
 
@@ -131,10 +132,12 @@ class CustomFieldsMetaControllerIndexActionTest extends CustomFieldsMetaControll
 
 
 
-class CustomFieldsMetaControllerEditAddressActionTest extends CustomFieldsMetaControllerTestCase {
+class CustomFieldsMetaControllerEditAddressActionTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('admin/custom-fields-meta/edit/id/1', true);
+    $this->dispatch('admin/custom-fields-meta/edit/id/1');
   }
 
 
@@ -158,10 +161,13 @@ class CustomFieldsMetaControllerEditAddressActionTest extends CustomFieldsMetaCo
 
 
 
-class CustomFieldsMetaControllerEditStatusActionTest extends CustomFieldsMetaControllerTestCase {
+
+class CustomFieldsMetaControllerEditStatusActionTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('admin/custom-fields-meta/edit/id/2', true);
+    $this->dispatch('admin/custom-fields-meta/edit/id/2');
   }
 
 
@@ -185,10 +191,13 @@ class CustomFieldsMetaControllerEditStatusActionTest extends CustomFieldsMetaCon
 
 
 
-class CustomFieldsMetaControllerAddActionTest extends CustomFieldsMetaControllerTestCase {
+
+class CustomFieldsMetaControllerAddActionTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('admin/custom-fields-meta/add', true);
+    $this->dispatch('admin/custom-fields-meta/add');
   }
 
 
@@ -206,20 +215,25 @@ class CustomFieldsMetaControllerAddActionTest extends CustomFieldsMetaController
 
   /** @test */
   public function typeDeChampsShouldContainsDate() {
-    $this->assertXPathContentContains('//select[@name="field_type"]/option', 'Date',$this->_response->getBody());
+    $this->assertXPathContentContains('//select[@name="field_type"]/option',
+                                      'Date');
   }
 }
 
 
 
-class CustomFieldsMetaControllerPostEditActionTest extends CustomFieldsMetaControllerTestCase {
+
+class CustomFieldsMetaControllerPostEditActionTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setup() {
     parent::setup();
 
     $this->postDispatch('admin/custom-fields-meta/edit/id/1',
                         ['label' => 'public',
                          'field_type' => Class_CustomField_Meta::SELECT,
-                         'option' => ['teens','parents',
+                         'option' => ['teens',
+                                      'parents',
                                       'all public'],
                          'indexable' => 1]);
 
@@ -235,17 +249,15 @@ class CustomFieldsMetaControllerPostEditActionTest extends CustomFieldsMetaContr
 
   /** @test */
   public function fieldTypeShouldBeSelect() {
-    $this->assertEquals(
-      Class_CustomField_Meta::SELECT,
-      $this->meta->getFieldType());
+    $this->assertEquals(Class_CustomField_Meta::SELECT,
+                        $this->meta->getFieldType());
   }
 
 
   /** @test */
   public function optionsListShouldBeTeensAndParents() {
-    $this->assertEquals(
-      ['teens', 'parents', 'all public'],
-      $this->meta->getOptionsListAsArray());
+    $this->assertEquals(['teens', 'parents', 'all public'],
+                        $this->meta->getOptionsListAsArray());
   }
 
 
@@ -266,6 +278,7 @@ class CustomFieldsMetaControllerPostEditActionTest extends CustomFieldsMetaContr
 
 
 
+
 class CustomFieldsMetaControllerPostEditUnindexActionTest
   extends CustomFieldsMetaControllerTestCase {
 
@@ -320,10 +333,14 @@ class CustomFieldsMetaControllerPostEditUnindexActionTest
 
 
 
-class CustomFieldsMetaControllerDeleteAddressFieldTest extends CustomFieldsMetaControllerTestCase {
+
+class CustomFieldsMetaControllerDeleteAddressFieldTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->fixture('Class_CodifThesaurus',
+
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 42,
                     'id_origine' => 1,
                     'id_thesaurus' => 'CFCF0001',
@@ -331,11 +348,11 @@ class CustomFieldsMetaControllerDeleteAddressFieldTest extends CustomFieldsMetaC
                     'libelle' => 'public',
                     'libelle_facette' => 'public']);
 
-    $this->onLoaderOfModel('Class_CodifThesaurus')
+    $this->onLoaderOfModel(Class_CodifThesaurus::class)
          ->whenCalled('deleteAllFrom')
          ->answers(true);
 
-    $this->dispatch('admin/custom-fields-meta/delete/id/1', true);
+    $this->dispatch('admin/custom-fields-meta/delete/id/1');
   }
 
 
@@ -360,39 +377,52 @@ class CustomFieldsMetaControllerDeleteAddressFieldTest extends CustomFieldsMetaC
 
 
 
-class CustomFieldsMetaControllerDeleteAddressFieldEditTest extends CustomFieldsMetaControllerTestCase {
+class CustomFieldsMetaControllerDeleteAddressFieldEditTest
+  extends CustomFieldsMetaControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->fixture('Class_CodifThesaurus',
+
+    $fixed_code = Class_CodifThesaurus::fixedCodeOf('CustomField');
+
+    $this->fixture(Class_CodifThesaurus::class,
                    ['id' => 42,
                     'id_origine' => 1,
                     'id_thesaurus' => 'CFCF0001',
-                    'code' => Class_CodifThesaurus::fixedCodeOf('CustomField'),
+                    'code' => $fixed_code,
                     'libelle' => 'public',
                     'libelle_facette' => 'public']);
 
-    $this->onLoaderOfModel('Class_CodifThesaurus')
-         ->whenCalled('deleteAllFrom')
-         ->answers(true);
-    $this->onLoaderOfModel('Class_CodifThesaurus')
+    $public_children =
+      [$this->fixture(Class_CodifThesaurus::class,
+                      ['id' => 422,
+                       'id_origine' => 'CFCF'.hash('crc32b', 'teens'),
+                       'id_thesaurus' => 'CFCF000100001',
+                       'code' => $fixed_code,
+                       'libelle' => 'teens',
+                       'libelle_facette' => 'teens']),
+       $this->fixture(Class_CodifThesaurus::class,
+                      ['id' => 423,
+                       'id_origine' => 'CFCF'.hash('crc32b', 'unknown'),
+                       'id_thesaurus' => 'CFCF000100002',
+                       'code' => $fixed_code,
+                       'libelle' => 'unknown',
+                       'libelle_facette' => 'unknown'])
+      ];
+
+    $this->onLoaderOfModel(Class_CodifThesaurus::class)
+         ->whenCalled('deleteAllFrom')->answers(true)
+
          ->whenCalled('findAllBy')
          ->with(['where' => 'id_thesaurus like "CFCF0001%" and LENGTH(id_thesaurus) = 12',
                  'order' => 'libelle'])
-         ->answers([ $this->fixture('Class_CodifThesaurus',
-                                    ['id' => 422,
-                                     'id_origine' => 'CFCF'.hash('crc32b', 'teens'),
-                                     'id_thesaurus' => 'CFCF000100001',
-                                     'code' => Class_CodifThesaurus::fixedCodeOf('CustomField'),
-                                     'libelle' => 'teens',
-                                     'libelle_facette' => 'teens']),
-                    $this->fixture('Class_CodifThesaurus',
-                                   ['id' => 423,
-                                    'id_origine' => 'CFCF'.hash('crc32b', 'unknown'),
-                                    'id_thesaurus' => 'CFCF000100002',
-                                    'code' => Class_CodifThesaurus::fixedCodeOf('CustomField'),
-                                    'libelle' => 'unknown',
-                                    'libelle_facette' => 'unknown'])
-                                      ]);
+         ->answers($public_children)
+
+         ->whenCalled('findNextThesaurusChildId')
+         ->willDo(fn($code, $parent_id) => ('CFCF0001' == $parent_id
+                                            ? 'CFCF000100003'
+                                            : '?????????????'))
+      ;
 
     $this->postDispatch('admin/custom-fields-meta/edit/id/1',
                         ['label' => 'un autre public',
@@ -402,24 +432,27 @@ class CustomFieldsMetaControllerDeleteAddressFieldEditTest extends CustomFieldsM
                                       'all public'],
                          'indexable' => 1]);
 
+    Class_CodifThesaurus::clearCache();
   }
 
 
   /** @test */
   public function libelleFacetShouldBeChanged() {
-    $this->assertEquals('un autre public',Class_CodifThesaurus::findFirstBy(['id' => 42])->getLibelleFacette());
+    $this->assertEquals('un autre public',
+                        Class_CodifThesaurus::find(42)->getLibelleFacette());
   }
 
 
   /** @test */
-  public function teensThesaurusShouldBeUpdated() {
-    $this->assertCount(1,Class_CodifThesaurus::findAllBy(['libelle' => 'teens']));
+  public function teensThesaurusShouldExist() {
+    $this->assertEquals('teens', Class_CodifThesaurus::find(422)->getLibelle());
   }
 
 
   /** @test */
-  public function parentsThesaurusShouldBeAdded() {
-    $this->assertCount(1,Class_CodifThesaurus::findAllBy(['libelle' => 'parents']));
+  public function parentsThesaurusShouldExist() {
+    $this->assertEquals('parents',
+                        Class_CodifThesaurus::find(424)->getLibelle());
   }
 
 
diff --git a/tests/application/modules/admin/controllers/ImportFichierGenerationSiteTest.php b/tests/application/modules/admin/controllers/ImportFichierGenerationSiteTest.php
index 748efd20cbc95cd9d50206c91471c5f9fb5baa52..b501ac0db4332a387b4971e0b0dc27da6528ca56 100644
--- a/tests/application/modules/admin/controllers/ImportFichierGenerationSiteTest.php
+++ b/tests/application/modules/admin/controllers/ImportFichierGenerationSiteTest.php
@@ -20,7 +20,7 @@
  */
 
 class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
+
   protected $_importTxt;
   protected $_file_contents;
   protected $file_writer;
@@ -43,41 +43,22 @@ class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
 
     $this->old_sql = Zend_Registry::get('sql');
     $this->mock_sql = Storm_Test_ObjectWrapper::mock();
-    $this->mock_sql->whenCalled('execute')->answers(0);
+    $this->mock_sql
+      ->whenCalled('execute')
+      ->answers(0)
+      ->whenCalled('query')
+      ->answers(0);
     Zend_Registry::set('sql', $this->mock_sql);
 
+    Storm_Test_ObjectWrapper::onLoaderOfModel(Class_Catalogue::class)
+      ->whenCalled('findAll')
+      ->answers([$this->fixture(Class_Catalogue::class,
+                                ['id' => 3,
+                                 'libelle' => 'Géo'])
+                 ->setSousDomaines([])]);
 
-    Class_CodifThesaurus::beVolatile();
-    Class_ArticleCategorie::beVolatile();
-    Class_Article::beVolatile();
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifThesaurus')
-      ->whenCalled('updateAllThesaurusForCatalogueChildren')
-      ->answers(null)
-      ->whenCalled('findFirstBy')
-      ->answers(null);
-
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil')
-                    ->whenCalled('save')->answers(true)
-                    ->whenCalled('delete')->answers(true);
-
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie')
-                    ->whenCalled('save')->answers(true)
-                    ->whenCalled('delete')->answers(true);
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
-                    ->whenCalled('delete')->answers(true);
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue')
-                    ->whenCalled('save')->answers(true)
-                    ->whenCalled('delete')->answers(true)
-                    ->whenCalled('findAll')->answers([Class_Catalogue::newInstanceWithId(3, ['libelle' => 'Géo'])
-                                                      ->setSousDomaines([])]);
-
-    $this->_importTxt= new Class_ImportFichierGenerationSite();
-    Class_ImportFichierGenerationSite::setFileWriter($this->file_writer=Storm_Test_ObjectWrapper::mock());
+    $this->_importTxt = new Class_ImportFichierGenerationSite();
+    Class_ImportFichierGenerationSite::setFileWriter($this->file_writer = Storm_Test_ObjectWrapper::mock());
     $this->file_writer->whenCalled('mkdir')->answers(true);
 
     $this->_importTxt->setFileContents($this->_file_contents);
@@ -90,52 +71,39 @@ class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
   }
 
 
-  /** @test */
-  public function getSubLineNameShouldReturnNameWithoutEtoiles() {
-    //    $this->assertEquals('Le nom d\'une page',$this->_importTxt->getSubLineName('**Le nom d\'une page'));
-
-  }
-
-
   /** @test */
   public function importFileShouldCreateProfilVieProfessionnellleEtActivity() {
     $profils = $this->_importTxt->readAllProfils();
 
-    foreach ($profils as $profil) {
-      //   echo "prof=".$profil->getLibelle()."--\n";
-       if (strcmp($profil->getLibelle(),'Vie professionnelle et formation')==0)
+    foreach ($profils as $profil)
+      if (strcmp($profil->getLibelle(),'Vie professionnelle et formation')==0)
         return $this->assertTrue(true);
 
-    }
     $this->assertTrue(false);
-
   }
 
+
   /** @test */
   public function importFileShouldCreateProfilCinema() {
     $profils = $this->_importTxt->readAllProfils();
 
-    foreach ($profils as $profil) {
-
-       if (strcmp($profil->getLibelle(),'Cinema')==0)
+    foreach ($profils as $profil)
+      if (strcmp($profil->getLibelle(),'Cinema')==0)
         return $this->assertTrue(true);
 
-    }
     $this->assertTrue(false);
-
   }
 
+
   /** @test */
   public function importFileShouldNotCreateProfilEntreprises() {
     $profils = $this->_importTxt->readAllProfils();
 
-    foreach ($profils as $profil) {
+    foreach ($profils as $profil)
       if (strcmp($profil->getLibelle(),'Entreprises')==0)
         return $this->assertTrue(false);
 
-    }
     $this->assertTrue(true);
-
   }
 
 
@@ -143,30 +111,25 @@ class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
   public function importFileShouldCreateSubProfilEntreprises() {
     $profils = $this->_importTxt->readAllProfils();
 
-    foreach ($profils as $profil) {
-      foreach ($profil->getSubProfils() as $subprofil) {
-
+    foreach ($profils as $profil)
+      foreach ($profil->getSubProfils() as $subprofil)
         if (strcmp($subprofil->getLibelle(),'Entreprises')==0)
           return $this->assertTrue(true);
-      }
-      }
-    $this->assertTrue(false);
 
-    }
+    $this->assertTrue(false);
+  }
 
 
   /** @test */
   public function importFileShouldCreateSubProfilSeriesTV() {
     $profils = $this->_importTxt->readAllProfils();
 
-    foreach ($profils as $profil) {
-      if (strcmp($profil->getLibelle(),'Cinema')==0) {
-        foreach ($profil->getSubProfils() as $subprofil) {
+    foreach ($profils as $profil)
+      if (strcmp($profil->getLibelle(),'Cinema')==0)
+        foreach ($profil->getSubProfils() as $subprofil)
           if (strcmp($subprofil->getLibelle(),'Series_tv')==0)
             return $this->assertTrue(true);
-        }
-      }
-    }
+
     $this->assertTrue(false);
   }
 
@@ -177,6 +140,7 @@ class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
     $this->assertTrue(sizeof($profils)==3);
   }
 
+
   /** @test */
   public function importFileShouldCreateDomaineNatureEtLoisirs() {
     $profils = $this->_importTxt->readAllProfils();
@@ -224,11 +188,12 @@ class ImportFichierGenerationSiteReadProfilTest extends ModelTestCase {
 
 
 
-class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTestCase {
+class ImportFichierGenerationSiteDirectoryCreationReadProfilTest
+  extends ModelTestCase {
+
   protected $_importTxt;
   protected $file_writer;
   protected $profils;
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -242,16 +207,8 @@ class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTe
 ";
 
     $this->_importTxt= new Class_ImportFichierGenerationSite();
-    Class_ImportFichierGenerationSite::setFileWriter($this->file_writer=Storm_Test_ObjectWrapper::mock());
-    $this->_category=Storm_Test_ObjectWrapper::mock();
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Profil')
-                    ->whenCalled('save')
-                    ->answers(true);
+    Class_ImportFichierGenerationSite::setFileWriter($this->file_writer = Storm_Test_ObjectWrapper::mock());
 
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie')
-                    ->whenCalled('save')
-                    ->answers(true);
     $this->file_writer->whenCalled('mkdir')
                       ->with($this->_importTxt->getDefaultPath().'Nature_et_loisirs/Sport')
                       ->answers(true)
@@ -262,9 +219,6 @@ class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTe
                       ->with($this->_importTxt->getDefaultPath().'Cinema/Series_tv')
                       ->answers(true)
                       ->beStrict();
-    /*    $this->file_writer->whenCalled('mkdir')
-                      ->do(function (){ echo $directory_name;});
-    */
 
     $this->_importTxt->setFileContents($_file_contents);
     $this->profils = $this->_importTxt->readAllProfils();
@@ -276,7 +230,6 @@ class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTe
     $this->_importTxt->createDirectoriesForProfil($this->profils[0]);
     $this->assertTrue($this->file_writer->methodHasBeenCalledWithParams('mkdir',[$this->_importTxt->getDefaultPath().'Nature_et_loisirs/Jeux']));
     $this->assertTrue($this->file_writer->methodHasBeenCalledWithParams('mkdir',[$this->_importTxt->getDefaultPath().'Nature_et_loisirs/Sport']));
-
   }
 
 
@@ -291,7 +244,6 @@ class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTe
   public function importFileShouldCreateSubCategorieSeriesTvForProfilCinema() {
     $category = $this->_importTxt->createCategoriesForProfil($this->profils[1]);
     $this->assertEquals('Series tv',$category->getSousCategories()[0]->getLibelle());
-
   }
 
 
@@ -299,22 +251,21 @@ class ImportFichierGenerationSiteDirectoryCreationReadProfilTest extends ModelTe
   public function importFileShouldCreateCategorieCinemaForProfilCinema() {
     $category = $this->_importTxt->createCategoriesForProfil($this->profils[1]);
     $this->assertEquals('Cinema',$category->getLibelle());
-
   }
 
 
   /** @test */
   public function importFileShouldSaveCreatedProfil() {
     $this->_importTxt->saveProfils($this->profils);
-    $this->assertTrue(Class_Profil::methodHasBeenCalled('save'));
+    $this->assertEquals('Nature et loisirs', Class_Profil::find(1)->getLibelle());
+    $this->assertEquals('Cinema', Class_Profil::find(4)->getLibelle());
   }
 
 
   /** @test */
   public function importFileShouldSaveCreatedCategories() {
     $category = $this->_importTxt->createCategoriesForProfil($this->profils[1]);
-    $this->assertTrue(Class_ArticleCategorie::methodHasBeenCalled('save'));
+    $this->assertEquals('Cinema',
+                        Class_ArticleCategorie::find(1)->getLibelle());
   }
-
-
 }
diff --git a/tests/application/modules/admin/controllers/SystemeControllerTest.php b/tests/application/modules/admin/controllers/SystemeControllerTest.php
index 4450cf9be0af07639215dbe946a9946ca1bb22d1..bcdf1150086be2b0e0170903439e70b30e03a294 100644
--- a/tests/application/modules/admin/controllers/SystemeControllerTest.php
+++ b/tests/application/modules/admin/controllers/SystemeControllerTest.php
@@ -22,6 +22,7 @@
 require ROOT_PATH . 'application/modules/admin/controllers/SystemeController.php';
 
 class SystemeControllerMailTestActionTest extends Admin_AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -77,15 +78,16 @@ class SystemeControllerMailTestActionTest extends Admin_AbstractControllerTestCa
 
 
 
-abstract class SystemeControllerPostMailActionTestCase extends Admin_AbstractControllerTestCase {
+abstract class SystemeControllerPostMailActionTestCase
+  extends Admin_AbstractControllerTestCase {
+
   protected
-    $_storm_default_to_volatile = true,
     $_mock_transport,
     $_mail;
 
-
   public function setUp() {
     parent::setUp();
+
     $this->_mock_transport = new MockMailTransport();
     Zend_Mail::setDefaultTransport($this->_mock_transport);
 
@@ -104,9 +106,12 @@ abstract class SystemeControllerPostMailActionTestCase extends Admin_AbstractCon
 
 
 
-class SystemeControllerPostMailActionTest extends SystemeControllerPostMailActionTestCase {
+class SystemeControllerPostMailActionTest
+  extends SystemeControllerPostMailActionTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->postDatas(['sender' => 'pollux@afi-sa.fr',
                       'recipient' => 'castor@afi-sa.fr']);
   }
@@ -148,9 +153,12 @@ class SystemeControllerPostMailActionTest extends SystemeControllerPostMailActio
 
 
 
-class SystemeControllerPostMailWithAttachmentTestActionTest extends SystemeControllerPostMailActionTestCase {
+class SystemeControllerPostMailWithAttachmentTestActionTest
+  extends SystemeControllerPostMailActionTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $_FILES['attachment'] = ['size' => (250 * 1000),
                              'name' => 'greetings.txt',
                              'type' => 'text/plain',
@@ -211,10 +219,12 @@ class SystemeControllerPostMailWithAttachmentTestActionTest extends SystemeContr
 
 
 class SystemeControllerPostInvalidPostTest extends Admin_AbstractControllerTestCase {
+
   protected $_mail;
 
   public function setUp() {
     parent::setUp();
+
     Zend_Mail::setDefaultTransport(new MockMailTransport());
 
     $this->postDispatch('admin/systeme/mailtest',
@@ -236,10 +246,13 @@ class SystemeControllerPostInvalidPostTest extends Admin_AbstractControllerTestC
 
 
 
+
 class SystemeControllerPHPInfoActionTest extends Admin_AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('admin/systeme/phpinfo', true);
+
+    $this->dispatch('admin/systeme/phpinfo');
   }
 
 
@@ -258,10 +271,8 @@ class SystemeControllerPHPInfoActionTest extends Admin_AbstractControllerTestCas
 
 
 
-class SystemeControllerImageCacheTest extends Admin_AbstractControllerTestCase {
-  protected
-    $_storm_default_to_volatile = true;
 
+class SystemeControllerImageCacheTest extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -322,14 +333,17 @@ class SystemeControllerImageCacheTest extends Admin_AbstractControllerTestCase {
 
 
 
-class SystemeControllerImageCacheResetAllTest extends Admin_AbstractControllerTestCase {
+
+class SystemeControllerImageCacheResetAllTest
+  extends Admin_AbstractControllerTestCase {
+
   protected
-    $_storm_default_to_volatile = true,
     $_fs,
     $_sql;
 
   public function setUp() {
     parent::setUp();
+
     $this->_sql = $this->mock()
                        ->whenCalled('execute')
                        ->answers('');
@@ -371,9 +385,8 @@ class SystemeControllerImageCacheResetAllTest extends Admin_AbstractControllerTe
       ->whenCalled('closedir')
       ->answers(true);
 
-
     Admin_SystemeController::setFileSystem($this->_fs);
-    $this->dispatch('/admin/systeme/cacheimages/mode/reset_all', true);
+    $this->dispatch('/admin/systeme/cacheimages/mode/reset_all');
   }
 
 
@@ -416,7 +429,6 @@ class SystemeControllerImageCacheResetAllTest extends Admin_AbstractControllerTe
 
 
 class Admin_SystemControllerStatusTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -437,7 +449,7 @@ class Admin_SystemControllerStatusTest extends Admin_AbstractControllerTestCase
                                               ->with('https://api.ipify.org')
                                               ->answers('1.2.3.4'));
 
-    $this->dispatch('/admin/systeme/status', true);
+    $this->dispatch('/admin/systeme/status');
   }
 
 
@@ -474,11 +486,12 @@ class Admin_SystemControllerStatusTest extends Admin_AbstractControllerTestCase
 
 
 
-class Admin_SystemControllerStatusWithErrorDeterminingPublicIpTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class Admin_SystemControllerStatusWithErrorDeterminingPublicIpTest
+  extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_Systeme_Report_Portal::setIp(null);
     Class_Systeme_Report_Portal::setWebClient($this->mock()
                                               ->whenCalled('open_url')
@@ -504,12 +517,12 @@ class Admin_SystemControllerStatusWithErrorDeterminingPublicIpTest extends Admin
 
 
 
-class Admin_SystemControllerNoMemchaedStatusTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
+class Admin_SystemControllerNoMemchaedStatusTest
+  extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/systeme/memcached-status');
   }
 
@@ -529,9 +542,8 @@ class Admin_SystemControllerNoMemchaedStatusTest extends Admin_AbstractControlle
 
 
 
-class Admin_SystemControllerMemchaedStatusTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
+class Admin_SystemControllerMemchaedStatusTest
+  extends Admin_AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -594,6 +606,7 @@ class Admin_SystemControllerMemchaedStatusTest extends Admin_AbstractControllerT
 
   public function tearDown() {
     Storm_Cache::setDefaultZendCache(null);
+    parent::tearDown();
   }
 
 
@@ -649,4 +662,4 @@ class Admin_SystemControllerMemchaedStatusTest extends Admin_AbstractControllerT
   public function memcachedGetShouldReturnAnError() {
     $this->assertXPathContentContains('//p[@class="error"]', 'Memcached::get(1234578UIEUIESRT3242) a retourné le message suivant : NOT STORED');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
index d1a0ce782ab3dcf972e9f7d4d71f4e98a6818afa..1fe02c3eafd685b4aec8b5c5c1e9f6ae7ad784f0 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerPretsTest.php
@@ -23,11 +23,12 @@ require_once 'tests/fixtures/DilicomFixtures.php';
 require_once 'tests/fixtures/NanookFixtures.php';
 require_once 'tests/fixtures/KohaFixtures.php';
 
-abstract class AbstractAbonneControllerPretsTestCase extends AbstractControllerTestCase {
+abstract class AbstractAbonneControllerPretsTestCase
+  extends AbstractControllerTestCase {
+
   protected
     $_old_zend_cache,
     $_http, $_time_source,
-    $_storm_default_to_volatile = true,
     $_potter_item;
 
   protected function _loginHook($account) {
@@ -110,7 +111,10 @@ abstract class AbstractAbonneControllerPretsTestCase extends AbstractControllerT
 
 
 
-abstract class AbonneControllerPretsListThreePretsTestCase extends AbstractAbonneControllerPretsTestCase {
+
+abstract class AbonneControllerPretsListThreePretsTestCase
+  extends AbstractAbonneControllerPretsTestCase {
+
   public function setUp() {
     parent::setUp();
     $potter = new Class_WebService_SIGB_Emprunt('12', new Class_WebService_SIGB_Exemplaire(123));
@@ -205,7 +209,6 @@ abstract class AbonneControllerPretsListThreePretsTestCase extends AbstractAbonn
                                                'titre' => 'Pinocchio'])->addAuthor('Collodi')
                    ]);
 
-
     $this->fixture('Class_Loan_Pnb',
                    ['id' => 6,
                     'user_id' => $this->florence->getId(),
@@ -219,7 +222,6 @@ abstract class AbonneControllerPretsListThreePretsTestCase extends AbstractAbonn
                                                'titre' => 'Peter Pan'])
                    ]);
 
-
     $this->florence
       ->setFicheSigb(['type_comm' => 2, //OPSYS
                       'fiche' => $emprunteur,
@@ -231,7 +233,9 @@ abstract class AbonneControllerPretsListThreePretsTestCase extends AbstractAbonn
 
 
 
-class AbonneControllerPretsExportThreePretsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPretsExportThreePretsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
+
   protected
     $_dl_file,
     $unimarc = '01201nam0 22002891  450 001001500000010003700015100004100052101000800093102000700101105001800108106000600126200009300132210002400225211001300249215006400262300002400326307002900350330027300379345001800652461005600670700001800726701003000744801003300774856008300807940000700890995001400897frOr0354235228  a978-2-35592-635-8bbr.d7,65 EUR  a20140225d2014    |  |0fre|0103||||ba  afre  aFR  a        0||y|  ar1 aAlice au royaume de TrÁefleeCheshire cat Waltzh5fQuinRosegdessin Mamenosuke Fujimaru  aPariscKi-oond2014 1a20140227  a1 vol. (164 p.)cillustrations en noir et blancd18 x 13 cm  aTraduit du japonais  aSens de lecture japonais  aPerdue dans la forÃet aux portes, Alice tombe nez Áa nez avec Ace. Devenue malgrÂe elle la confidente du chevalier, elle ne sait comment repousser ses avances. Lorsque le chat du Cheshire, qui a assistÂe Áa la scÁene, intervient, la rencontre tourne Áa l\'affrontement.  b9782355926358 1tAlice au royaume de TrÁefle : Cheshire cat Waltzv5 1aQuinRose4070 1aFujimarubMamenosuke4440  aFRbElectrec20140225gAFNOR  uhttp://www.electre.com//GetBlob.ashx?Ean=9782355926358,0-1913692&Size=Original  aLR 1aAliceItem00604nam0 22001931  450 001001500000010001800015100004100033101000800074200010700082210003000189215001100219461002000230606002900250676000800279700004500287801005600332940000700388995001500395frOr1314913787  a9781408812792  a20140320                  0103        aEng1 aHarry Potter and the deathly hallowsdHarry Potter et les reliques de la mortfJoanne Kathleen Rowling  aLondrescBloomsburyd2010  a831 p. 1tHarry Potterv7  aAnglais (langue)2Rameau  a420 1aRowlingbJoanne Kathleenf1965-....4070  aFRbBibliothÁeque de l\'agglomÂeration de Saint-Omer  apm 1aPotterItem';
@@ -240,7 +244,7 @@ class AbonneControllerPretsExportThreePretsTest extends AbonneControllerPretsLis
   public function setUp() {
     parent::setUp();
 
-    $this->dispatch('/opac/abonne/loan-export', true);
+    $this->dispatch('/opac/abonne/loan-export');
     $this->_dl_file = tempnam('/tmp', 'UNIMARC');
     file_put_contents($this->_dl_file, $this->_response->getBody());
   }
@@ -281,8 +285,8 @@ class AbonneControllerPretsExportThreePretsTest extends AbonneControllerPretsLis
 
 
 
-class AbonneControllerPretsPagedLoansTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class AbonneControllerPretsPagedLoansTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -345,7 +349,9 @@ class AbonneControllerPretsPagedLoansTest extends AbstractControllerTestCase {
 
 
 
-class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPretsListThreePretsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -353,7 +359,8 @@ class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListT
 
     $this->fixture('Class_CodifAuteur',
                    ['id' => 565,
-                    'libelle' => 'QUINROSE']);
+                    'libelle' => 'QUINROSE',
+                    'formes' => 'QUINROSE']);
 
     (new Class_Profil_Preferences())
       ->setModulePref(Class_Profil::getCurrentProfil(),
@@ -362,15 +369,14 @@ class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListT
                       ->setAction('prets'),
                       ['tools_composition' => 'pager;search_tool;export_barcodes;export_unimarc;extend_all;print']);
 
-    $this->dispatch('/opac/abonne/prets', true);
+    $this->dispatch('/opac/abonne/prets');
   }
 
 
   /** @test */
   public function extendAllLoansButtonShouldBeDisplayed() {
     $this->assertXPathContentContains('//a[contains(@href, "/abonne/prolongerPret/id_pret/123456_13%3B123456_12")]',
-                                      'Tout prolonger',
-                                      $this->_response->getBody());
+                                      'Tout prolonger');
   }
 
 
@@ -423,7 +429,7 @@ class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListT
 
 /** @test */
   public function pageShouldLoadPagerScriptOnClassPagerBorrowerLoans() {
-    $this->assertXPathContentContains('//script','$("#borrower_loans").tablesorterPager({container: $(".pager_borrower_loans"),output:',$this->_response->getBody());
+    $this->assertXPathContentContains('//script','$("#borrower_loans").tablesorterPager({container: $(".pager_borrower_loans"),output:');
   }
 
 
@@ -439,7 +445,6 @@ class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListT
   }
 
 
-
   /** @test */
   public function pageShouldContainsTwoPagersForBorrowerLoansPNB() {
     $this->assertXPathCount('//div[@class="pager model_table_pager pager_borrower_loans_pnb"]',2);
@@ -578,8 +583,9 @@ class AbonneControllerPretsListThreePretsTest extends AbonneControllerPretsListT
 
 
 
+class AbonneControllerPretsListThreePretsPnbEarlyReturnTest
+  extends AbonneControllerPretsListThreePretsTestCase {
 
-class AbonneControllerPretsListThreePretsPnbEarlyReturnTest extends AbonneControllerPretsListThreePretsTestCase {
   public function setUp() {
     parent::setUp();
 
@@ -591,7 +597,7 @@ class AbonneControllerPretsListThreePretsPnbEarlyReturnTest extends AbonneContro
       ->answers(DilicomFixtures::getEndedLoansResponse(['{"loanId":"5","returnDate":"2015-09-18T14:30:00+02:00"}']))
       ->beStrict();
 
-    $this->dispatch('/opac/abonne/prets', true);
+    $this->dispatch('/opac/abonne/prets');
   }
 
 
@@ -611,8 +617,9 @@ class AbonneControllerPretsListThreePretsPnbEarlyReturnTest extends AbonneContro
 
 
 
-abstract class AbonneControllerPretsListReservationTestCase extends AbstractAbonneControllerPretsTestCase {
-  protected $_storm_default_to_volatile = true;
+
+abstract class AbonneControllerPretsListReservationTestCase
+  extends AbstractAbonneControllerPretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -690,11 +697,13 @@ abstract class AbonneControllerPretsListReservationTestCase extends AbstractAbon
 
 
 
-class AbonneControllerPretsListReservationTest extends AbonneControllerPretsListReservationTestCase {
+class AbonneControllerPretsListReservationTest
+  extends AbonneControllerPretsListReservationTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('AUTHOR_PAGE', 0);
-    $this->dispatch('/opac/abonne/reservations', true);
+    $this->dispatch('/opac/abonne/reservations');
   }
 
 
@@ -753,6 +762,7 @@ class AbonneControllerPretsListReservationTest extends AbonneControllerPretsList
     $this->assertXPathContentContains('//tbody/tr[1]//td', 'DVD');
   }
 
+
   /** @test */
   public function etatShouldBeReservationEmise() {
     $this->assertXPathContentContains('//tbody/tr[1]//td', 'Réservation émise');
@@ -791,7 +801,9 @@ class AbonneControllerPretsListReservationTest extends AbonneControllerPretsList
 
 
 
-abstract class AbonneControllerPretsRenewThreePretsTestCase extends AbonneControllerPretsListThreePretsTestCase {
+
+abstract class AbonneControllerPretsRenewThreePretsTestCase
+  extends AbonneControllerPretsListThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -819,7 +831,8 @@ abstract class AbonneControllerPretsRenewThreePretsTestCase extends AbonneContro
 
 
 
-class AbonneControllerPretsRenewErrorThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsRenewErrorThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -844,7 +857,8 @@ class AbonneControllerPretsRenewErrorThreePretsTest extends AbonneControllerPret
 
 
 
-class AbonneControllerPretsRenewSuccessThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsRenewSuccessThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -868,7 +882,8 @@ class AbonneControllerPretsRenewSuccessThreePretsTest extends AbonneControllerPr
 
 
 
-class AbonneControllerPretsWithoutLoanToExtendThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsWithoutLoanToExtendThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -892,7 +907,8 @@ class AbonneControllerPretsWithoutLoanToExtendThreePretsTest extends AbonneContr
 
 
 
-class AbonneControllerPretsExtendAllLoansSuccessThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsExtendAllLoansSuccessThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -922,7 +938,8 @@ class AbonneControllerPretsExtendAllLoansSuccessThreePretsTest extends AbonneCon
 
 
 
-class AbonneControllerPretsExtendAllLoansErrorThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsExtendAllLoansErrorThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -955,7 +972,8 @@ class AbonneControllerPretsExtendAllLoansErrorThreePretsTest extends AbonneContr
 
 
 
-class AbonneControllerPretsExtendAllLoansSuccessAndErrorThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsExtendAllLoansSuccessAndErrorThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -994,7 +1012,8 @@ class AbonneControllerPretsExtendAllLoansSuccessAndErrorThreePretsTest extends A
 
 
 
-class AbonneControllerPretsBadFormatExtendLoanThreePretsTest extends AbonneControllerPretsRenewThreePretsTestCase {
+class AbonneControllerPretsBadFormatExtendLoanThreePretsTest
+  extends AbonneControllerPretsRenewThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -1018,10 +1037,10 @@ class AbonneControllerPretsBadFormatExtendLoanThreePretsTest extends AbonneContr
 
 
 
-class AbonneControllerPretsProlongerPretsWithPagedLoansTest extends AbstractControllerTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_mock_web_client;
+class AbonneControllerPretsProlongerPretsWithPagedLoansTest
+  extends AbstractControllerTestCase {
+
+  protected $_mock_web_client;
 
   public function setUp() {
     parent::setUp();
@@ -1063,9 +1082,10 @@ class AbonneControllerPretsProlongerPretsWithPagedLoansTest extends AbstractCont
 
 
 
-
 /** @see http://forge.afi-sa.fr/issues/31316 */
-class AbonneControllerPretsPeriodicalTitleTest extends AbstractAbonneControllerPretsTestCase {
+class AbonneControllerPretsPeriodicalTitleTest
+  extends AbstractAbonneControllerPretsTestCase {
+
   protected $_sigb;
 
   public function setUp() {
@@ -1123,7 +1143,7 @@ class AbonneControllerPretsPeriodicalTitleTest extends AbstractAbonneControllerP
 
     $identity->setIdabon('007');
 
-    $this->dispatch('/opac/abonne/prets', true);
+    $this->dispatch('/opac/abonne/prets');
   }
 
 
@@ -1160,7 +1180,9 @@ class AbonneControllerPretsPeriodicalTitleTest extends AbstractAbonneControllerP
 
 
 
-class AbonneControllerPretsListMoreThanUndredLoansTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPretsListMoreThanUndredLoansTest
+  extends AbonneControllerPretsListThreePretsTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->fixture('Class_CodifAuteur',
@@ -1177,14 +1199,13 @@ class AbonneControllerPretsListMoreThanUndredLoansTest extends AbonneControllerP
     $emprunteur = new Class_WebService_SIGB_Emprunteur('1234', 'Florence');
     $emprunteur->empruntsAddAll($loans);
 
-
     $this->florence
       ->setFicheSigb(['type_comm' => 2, //OPSYS
                       'fiche' => $emprunteur,
                       'erreur' => ''])
       ->setPseudo('FloFlo');
 
-    $this->dispatch('/opac/abonne/prets', true);
+    $this->dispatch('/opac/abonne/prets');
   }
 
 
@@ -1215,7 +1236,9 @@ class AbonneControllerPretsListMoreThanUndredLoansTest extends AbonneControllerP
 
 
 
-class AbonneControllerPretsListWithILSChildCardLinkTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPretsListWithILSChildCardLinkTest
+  extends AbonneControllerPretsListThreePretsTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->fixture(Class_CodifAuteur::class,
@@ -1311,7 +1334,9 @@ class AbonneControllerPretsListWithILSChildCardLinkTest extends AbonneController
 
 
 
-class AbonneControllerPretsListMoreThanUndredHoldsTest extends AbonneControllerPretsListReservationTestCase {
+class AbonneControllerPretsListMoreThanUndredHoldsTest
+  extends AbonneControllerPretsListReservationTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->fixture('Class_CodifAuteur',
@@ -1335,7 +1360,7 @@ class AbonneControllerPretsListMoreThanUndredHoldsTest extends AbonneControllerP
                       'erreur' => ''])
       ->setPseudo('FloFlo');
 
-    $this->dispatch('/opac/abonne/reservations', true);
+    $this->dispatch('/opac/abonne/reservations');
   }
 
 
@@ -1354,11 +1379,12 @@ class AbonneControllerPretsListMoreThanUndredHoldsTest extends AbonneControllerP
 
 
 
-class AbonneControllerBarcodesExportThreePretsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerBarcodesExportThreePretsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('abonne/barcodes-export', true);
+    $this->dispatch('abonne/barcodes-export');
   }
 
 
@@ -1385,7 +1411,9 @@ class AbonneControllerBarcodesExportThreePretsTest extends AbonneControllerPrets
 
 
 
-class AbonneControllerPrintActionPretsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPrintActionPretsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
+
   public function setUp() {
     parent::setUp();
     $helper = new ZendAfi_View_Helper_ModeleFusion_Template_Loans();
@@ -1396,7 +1424,7 @@ class AbonneControllerPrintActionPretsTest extends AbonneControllerPretsListThre
                     'type' => 'Loans_List',
                     'nom' => 'loans',
                     'contenu' => $helper->ModeleFusion_Template_Loans()]);
-    $this->dispatch('abonne/print/ids/reload/strategy/Loans_List/modele_fusion/9', true);
+    $this->dispatch('abonne/print/ids/reload/strategy/Loans_List/modele_fusion/9');
   }
 
 
@@ -1433,9 +1461,8 @@ class AbonneControllerPrintActionPretsTest extends AbonneControllerPretsListThre
 
 
 
-
-
-class AbonneControllerPretsExportThreePretsInCardsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerPretsExportThreePretsInCardsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
 
   protected
     $_dl_file,
@@ -1456,7 +1483,7 @@ class AbonneControllerPretsExportThreePretsInCardsTest extends AbonneControllerP
 
     ZendAfi_Auth::getInstance()->logUser($e_wok);
 
-    $this->dispatch('/opac/abonne/loan-export', true);
+    $this->dispatch('/opac/abonne/loan-export');
     $this->_dl_file = tempnam('/tmp', 'UNIMARC');
     file_put_contents($this->_dl_file, $this->_response->getBody());
   }
@@ -1497,7 +1524,8 @@ class AbonneControllerPretsExportThreePretsInCardsTest extends AbonneControllerP
 
 
 
-class AbonneControllerBarcodesExportThreePretsInCardsTest extends AbonneControllerPretsListThreePretsTestCase {
+class AbonneControllerBarcodesExportThreePretsInCardsTest
+  extends AbonneControllerPretsListThreePretsTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -1513,7 +1541,7 @@ class AbonneControllerBarcodesExportThreePretsInCardsTest extends AbonneControll
 
     ZendAfi_Auth::getInstance()->logUser($e_wok);
 
-    $this->dispatch('abonne/barcodes-export', true);
+    $this->dispatch('abonne/barcodes-export');
   }
 
 
@@ -1535,4 +1563,4 @@ class AbonneControllerBarcodesExportThreePretsInCardsTest extends AbonneControll
     $this->assertContains('124', $this->_response->getBody());
     $this->assertContains('123', $this->_response->getBody());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
index af58f7e3c24a63e0a23925c9433b4624edd28eed..7d362dc2cc47c43803e208c01045d12721dda837 100644
--- a/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
+++ b/tests/application/modules/opac/controllers/NoticeAjaxControllerTest.php
@@ -22,8 +22,10 @@
 include_once 'tests/fixtures/NanookFixtures.php';
 
 class NoticeAjaxControllerNonRegressionTest extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Notice',
                    ['id' => '197143']);
   }
@@ -53,7 +55,7 @@ class NoticeAjaxControllerNonRegressionTest extends AbstractControllerTestCase {
       ->answers([]);
 
 
-    $this->dispatch('/opac/noticeajax/similaires?isbn=&onglet=set197143_onglet_0&page=0&id_notice=197143', true);
+    $this->dispatch('/opac/noticeajax/similaires?isbn=&onglet=set197143_onglet_0&page=0&id_notice=197143');
     $this->assertXPathContentContains('//td', 'Aucune information');
   }
 }
@@ -61,16 +63,16 @@ class NoticeAjaxControllerNonRegressionTest extends AbstractControllerTestCase {
 
 
 
-class NoticeAjaxControllerDetailNoticeWithGamUrlTestCase extends AbstractControllerTestCase {
+class NoticeAjaxControllerDetailNoticeWithGamUrlTestCase
+  extends AbstractControllerTestCase {
+
   protected $_storm_default_to_volatile = false;
   protected $_wesley;
 
-
   public function setUp() {
     parent::setUp();
 
-    $this->_wesley = $this->fixture(
-                                    'Class_Notice',
+    $this->_wesley = $this->fixture(Class_Notice::class,
                                     ['id' => 1,
                                      'facettes' => 'A1',
                                      'isbn' => '',
@@ -93,13 +95,13 @@ class NoticeAjaxControllerDetailNoticeWithGamUrlTestCase extends AbstractControl
 
     $this->fixture('Class_CosmoVar', ['id' => 'types_docs',
                                       'liste' => "1:cd\r\n200:non identifié\r\n201:livres\r\n202:bd"]);
-    $this->dispatch('/opac/noticeajax/detail/id_notice/1', true);
+    $this->dispatch('/opac/noticeajax/detail/id_notice/1');
   }
 
 
   /** @test */
   public function withNoticeFoundResponseShouldContainsLienInternet() {
-    $this->assertXPathContentContains('//a', 'http://www.gamannecy.com//upload/albums/201202/0602527840871_thumb.jpg', $this->_response->getBody());
+    $this->assertXPathContentContains('//a', 'http://www.gamannecy.com//upload/albums/201202/0602527840871_thumb.jpg');
   }
 
 
@@ -120,10 +122,10 @@ class NoticeAjaxControllerDetailNoticeWithGamUrlTestCase extends AbstractControl
 
 
 
-abstract class NoticeAjaxControllerNoticeSouleymaneTestCase extends AbstractControllerTestCase {
-  protected
-    $_souleymane;
+abstract class NoticeAjaxControllerNoticeSouleymaneTestCase
+  extends AbstractControllerTestCase {
 
+  protected $_souleymane;
 
   public function setUp() {
     parent::setUp();
@@ -131,9 +133,10 @@ abstract class NoticeAjaxControllerNoticeSouleymaneTestCase extends AbstractCont
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' => ['resultatsimple' => ['liste_codes' => "TANWCRG"]]]);
 
-    $this->fixture('Class_CodifAuteur',
+    $this->fixture(Class_CodifAuteur::class,
                    ['id' => 1,
-                    'libelle' => 'Souleymane Cisse']);
+                    'libelle' => 'Souleymane Cisse',
+                    'formes' => 'CISSExSOULEYMANE']);
 
     $this->_souleymane = Class_Notice::newInstanceWithId(1,
                                                          ['facettes' => 'A1',
@@ -153,18 +156,23 @@ abstract class NoticeAjaxControllerNoticeSouleymaneTestCase extends AbstractCont
 
 
 
-class NoticeAjaxControllerDetailActionTest extends NoticeAjaxControllerNoticeSouleymaneTestCase {
+
+class NoticeAjaxControllerDetailActionTest
+  extends NoticeAjaxControllerNoticeSouleymaneTestCase {
+
   protected $_storm_default_to_volatile = false;
 
+
   /** @test */
   public function withNoticeFoundResponseShouldContainsTitleLaJeuneFille() {
-    $this->dispatch('/opac/noticeajax/detail/id_notice/1', true);
-    $this->assertXPathContentContains('//div', 'La jeune fille', $this->_response->getBody());
+    $this->dispatch('/opac/noticeajax/detail/id_notice/1');
+    $this->assertXPathContentContains('//div', 'La jeune fille');
   }
 
+
   /** @test */
   public function withrNoticeNotFoundResponseShouldBeEmpty() {
-    $this->dispatch('/opac/noticeajax/detail/id_notice/-1', true);
+    $this->dispatch('/opac/noticeajax/detail/id_notice/-1');
     $this->assertEmpty($this->_response->getBody());
   }
 }
@@ -172,9 +180,12 @@ class NoticeAjaxControllerDetailActionTest extends NoticeAjaxControllerNoticeSou
 
 
 
-class NoticeAjaxControllerNoticeSimilairesSouleymaneTest extends NoticeAjaxControllerNoticeSouleymaneTestCase {
+class NoticeAjaxControllerNoticeSimilairesSouleymaneTest
+  extends NoticeAjaxControllerNoticeSouleymaneTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('AUTHOR_PAGE', 0);
     Class_Notice::newInstanceWithId(18787,
                                     ['titres' => 'IRM SOULEY',
@@ -190,7 +201,7 @@ class NoticeAjaxControllerNoticeSimilairesSouleymaneTest extends NoticeAjaxContr
               'limit' => 10])
       ->answers([$this->_souleymane]);
 
-    $this->dispatch('/opac/noticeajax/similaires?isbn=&onglet=set197143_onglet_0&page=0&id_notice=18787', true);
+    $this->dispatch('/opac/noticeajax/similaires?isbn=&onglet=set197143_onglet_0&page=0&id_notice=18787');
   }
 
 
@@ -243,8 +254,8 @@ class NoticeAjaxControllerNoticeSimilairesSouleymaneTest extends NoticeAjaxContr
 
 
 
-class NoticeAjaxControllerNoticeSimilairesTerryPratchetTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerNoticeSimilairesTerryPratchetTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -262,7 +273,7 @@ class NoticeAjaxControllerNoticeSimilairesTerryPratchetTest extends AbstractCont
               'limit' => 10])
       ->answers([$disque_monde]);
 
-    $this->dispatch('/opac/noticeajax/similaires/id/3', true);
+    $this->dispatch('/opac/noticeajax/similaires/id/3');
   }
 
 
@@ -276,10 +287,10 @@ class NoticeAjaxControllerNoticeSimilairesTerryPratchetTest extends AbstractCont
 
 
 class NoticeAjaxControllerResNumeriquesTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
-  public function setup() {
-    parent::setup();
+  public function setUp() {
+    parent::setUp();
+
     $this->fixture('Class_Notice', ['id' => 123,
                                     'type_doc' => Class_TypeDoc::LIVRE_NUM]);
     $this->fixture('Class_Exemplaire', ['id' => 34,
@@ -318,7 +329,7 @@ class NoticeAjaxControllerResNumeriquesTest extends AbstractControllerTestCase {
                                             'titre' => 'diapo vacances',
                                             'type_doc_id' => Class_TypeDoc::DIAPORAMA]);
 
-    $this->dispatch('noticeajax/resnumeriques?id_notice=123', true);
+    $this->dispatch('noticeajax/resnumeriques?id_notice=123');
 
     $this->assertXPath('//script[contains(@src, "jquery.cycle.all")]');
   }
@@ -326,11 +337,13 @@ class NoticeAjaxControllerResNumeriquesTest extends AbstractControllerTestCase {
 
 
 
-abstract class NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
-  public function setup() {
-    parent::setup();
+abstract class NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase
+  extends AbstractControllerTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
     $this->fixture('Class_Notice', ['id' => 123, 'clef_alpha' => 'ACESHIGH--IRONM---1984-1']);
     $album = $this->fixture('Class_Album',
                             ['id' => 42,
@@ -377,13 +390,14 @@ abstract class NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase extends Abs
 
 
 
-class NoticeAjaxControllerResNumeriquesFromFrbrLinkTest extends NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase {
 
+class NoticeAjaxControllerResNumeriquesFromFrbrLinkTest
+  extends NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase {
 
-  public function setup() {
-    parent::setup();
+  public function setUp() {
+    parent::setUp();
 
-    $this->dispatch('noticeajax/resnumeriques?id_notice=123', true);
+    $this->dispatch('noticeajax/resnumeriques?id_notice=123');
   }
 
 
@@ -401,7 +415,7 @@ class NoticeAjaxControllerResNumeriquesFromFrbrLinkTest extends NoticeAjaxContro
 
   /** @test */
   public function frbrLinkTargetLabelShouldBeDisplayed() {
-    $this->assertXPathContentContains('//div[@class="notice_info_titre"]', 'A pour pistes audio', $this->_response->getBody());
+    $this->assertXPathContentContains('//div[@class="notice_info_titre"]', 'A pour pistes audio');
   }
 
 
@@ -431,17 +445,18 @@ class NoticeAjaxControllerResNumeriquesFromFrbrLinkTest extends NoticeAjaxContro
 
 
 
-class NoticeAjaxControllerResNumeriquesFromFrbrLinkNonAdminTest extends NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase {
 
+class NoticeAjaxControllerResNumeriquesFromFrbrLinkNonAdminTest
+  extends NoticeAjaxControllerResNumeriquesFromFrbrLinkTestCase {
 
   public function _login() {
   }
 
 
-  public function setup() {
-    parent::setup();
+  public function setUp() {
+    parent::setUp();
 
-    $this->dispatch('noticeajax/resnumeriques?id_notice=123', true);
+    $this->dispatch('noticeajax/resnumeriques?id_notice=123');
   }
 
 
@@ -455,10 +470,10 @@ class NoticeAjaxControllerResNumeriquesFromFrbrLinkNonAdminTest extends NoticeAj
 
 
 class NoticeAjaxControllerBandeAnnonceTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile =  true;
 
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::setValueOf('url_services', 'https://websvc.net/main.php');
     Class_WebService_Afi::setHttpClient($this->mock()
                                         ->whenCalled('open_url')
@@ -547,19 +562,19 @@ class NoticeAjaxControllerBandeAnnonceTest extends AbstractControllerTestCase {
 
 
     $this->dispatch('/noticeajax/bandeannonce/id/2');
-    $this->assertXPath('//iframe', $this->_response->getBody());
+    $this->assertXPath('//iframe');
   }
 }
 
 
 
 
-
-class NoticeAjaxControllerBandeAnnonceDesactiveeTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile =  true;
+class NoticeAjaxControllerBandeAnnonceDesactiveeTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::setValueOf('url_services', 'https://websvc.net/main.php');
     Class_WebService_Afi::setHttpClient($this->mock()
                                         ->whenCalled('open_url')
@@ -594,11 +609,12 @@ class NoticeAjaxControllerBandeAnnonceDesactiveeTest extends AbstractControllerT
 
 
 
-abstract class NoticeAjaxControllerLastFmTestCase extends AbstractControllerTestCase {
-
+abstract class NoticeAjaxControllerLastFmTestCase
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->lastfm = $this->mock();
     Class_WebService_Lastfm::setInstance($this->lastfm);
 
@@ -617,7 +633,7 @@ abstract class NoticeAjaxControllerLastFmTestCase extends AbstractControllerTest
 
   /** @test */
   public function shouldContainsTitle() {
-    $this->assertXPath('//h3', $this->_response->getBody());
+    $this->assertXPath('//h3');
   }
 }
 
@@ -629,9 +645,10 @@ class NoticeAjaxControllerBibliographiesTest
 
   public function setUp() {
     parent::setUp();
+
     $this->lastfm->whenCalled('getDiscographie')->with('Frodo')
                  ->answers([['vignette' => '', 'titre' => '']]);
-    $this->dispatch('noticeajax/bibliographie?id_notice=777', true);
+    $this->dispatch('noticeajax/bibliographie?id_notice=777');
   }
 }
 
@@ -639,7 +656,6 @@ class NoticeAjaxControllerBibliographiesTest
 
 
 class NoticeAjaxControllerInterviewsTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   /** @test */
   public function responseH3ShouldContainsFrodoInterview() {
@@ -664,27 +680,30 @@ class NoticeAjaxControllerInterviewsTest extends AbstractControllerTestCase {
 
 
 /** @see http://forge.afi-sa.fr/issues/16741 */
-class NoticeAjaxControllerResumeGamWidgetTest extends AbstractControllerTestCase {
+class NoticeAjaxControllerResumeGamWidgetTest
+  extends AbstractControllerTestCase {
+
   /** @test */
   public function shouldDisplayGamWidget() {
     $this->fixture('Class_Notice',
                    ['id' => 3800226,
                     'unimarc' => file_get_contents(dirname(__FILE__)
                                                    . '/sous_la_peau.uni')]);
-    $this->dispatch('noticeajax/resume/id/3800226', true);
+    $this->dispatch('noticeajax/resume/id/3800226');
     $this->assertXPath('//iframe[contains(@src, "gamannecy.com")]');
   }
 }
 
 
 
+
 class NoticeAjaxControllerResumeAlbumTest extends AbstractControllerTestCase {
+
   protected $_notice;
 
   public function setUp() {
     parent::setUp();
 
-
     $this->_notice = Class_Notice::getLoader()
       ->newInstanceWithId(123)
       ->beLivreNumerique()
@@ -706,7 +725,7 @@ class NoticeAjaxControllerResumeAlbumTest extends AbstractControllerTestCase {
   /** @test */
   public function contenuShouldContainsResume() {
     $this->dispatch('noticeajax/resume?id_notice=123');
-    $this->assertXPathContentContains('//div', 'Lucky Luke est un grand cow-boy de l\'Ouest', $this->_response->getBody());
+    $this->assertXPathContentContains('//div', 'Lucky Luke est un grand cow-boy de l\'Ouest');
   }
 
 
@@ -733,15 +752,14 @@ class NoticeAjaxControllerResumeAlbumTest extends AbstractControllerTestCase {
 
 
 
-abstract class NoticeAjaxControllerExemplairesTestCase extends AbstractControllerTestCase {
 
+abstract class NoticeAjaxControllerExemplairesTestCase
+  extends AbstractControllerTestCase {
 
   protected
-    $_storm_default_to_volatile = true,
     $_notice,
     $_sigb_exemplaire;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -829,15 +847,15 @@ abstract class NoticeAjaxControllerExemplairesTestCase extends AbstractControlle
 
 
 
-class NoticeAjaxControllerExemplairesWithOtherAnnexTest extends AbstractControllerTestCase {
+class NoticeAjaxControllerExemplairesWithOtherAnnexTest
+  extends AbstractControllerTestCase {
+
   protected
-    $_storm_default_to_volatile=true,
     $_notice,
     $_service,
     $_web_client,
     $_sigb_exemplaire;
 
-
   public function setUp() {
     parent::setUp();
     Class_WebService_SIGB_Nanook::reset();
@@ -891,7 +909,6 @@ class NoticeAjaxControllerExemplairesWithOtherAnnexTest extends AbstractControll
                                                             'code_barres' => '028111272'])]);
     $this->_notice->save();
 
-
     $this->fixture('Class_Notice', ['id' => 125,
                                     'clef_oeuvre' => 'AAA',
                                     'exemplaires' => [$this->fixture('Class_Exemplaire',
@@ -918,8 +935,8 @@ class NoticeAjaxControllerExemplairesWithOtherAnnexTest extends AbstractControll
 
 
 
-class NoticeAjaxControllerExemplairesSameWorkTest extends NoticeAjaxControllerExemplairesTestCase {
-
+class NoticeAjaxControllerExemplairesSameWorkTest
+  extends NoticeAjaxControllerExemplairesTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -942,8 +959,8 @@ class NoticeAjaxControllerExemplairesSameWorkTest extends NoticeAjaxControllerEx
 
 
 
-class NoticeAjaxControllerExemplairesWithIdBibs extends NoticeAjaxControllerExemplairesTestCase {
-
+class NoticeAjaxControllerExemplairesWithIdBibs
+  extends NoticeAjaxControllerExemplairesTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -964,7 +981,7 @@ class NoticeAjaxControllerExemplairesWithIdBibs extends NoticeAjaxControllerExem
                                                   'code_barres' => '7777734343488']));
     $this->_notice->save();
     Zend_Registry::get('session')->id_bibs=[77];
-    $this->dispatch('noticeajax/exemplaires/id/123/id_notice/8', true);
+    $this->dispatch('noticeajax/exemplaires/id/123/id_notice/8');
   }
 
 
@@ -978,13 +995,14 @@ class NoticeAjaxControllerExemplairesWithIdBibs extends NoticeAjaxControllerExem
   public function coteVODTShouldBeNotBeInExemplaire() {
     $this->assertNotXPathContentContains('//td[@class="cote"]','VOD-T-DLJ');
   }
-
 }
 
 
 
 
-class NoticeAjaxControllerExemplairesTest extends NoticeAjaxControllerExemplairesTestCase {
+class NoticeAjaxControllerExemplairesTest
+  extends NoticeAjaxControllerExemplairesTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1056,7 +1074,7 @@ class NoticeAjaxControllerExemplairesTest extends NoticeAjaxControllerExemplaire
     $this->bootstrap();
     ZendAfi_Auth::getInstance()->logUser(Class_Users::newInstanceWithId(5)->beAdminPortail());
     $this->dispatch('noticeajax/exemplaires?id_notice=123');
-    $this->assertXPath('//a[@data-popup="true"][@href="/admin/modulesnotice/exemplaires/config/admin/id_profil/2"]', $this->_response->getBody());
+    $this->assertXPath('//a[@data-popup="true"][@href="/admin/modulesnotice/exemplaires/config/admin/id_profil/2"]');
   }
 
 
@@ -1066,15 +1084,15 @@ class NoticeAjaxControllerExemplairesTest extends NoticeAjaxControllerExemplaire
                                          ->beModoBib()
                                          ->setUserGroups([Class_UserGroup::newInstanceWithId(2)
                                                           ->addRightConfigFront()]));
-    $this->dispatch('noticeajax/exemplaires?id_notice=123', true);
-    $this->assertXPath('//a[@data-popup="true"][@href="/admin/modulesnotice/exemplaires/config/admin/id_profil/2"]', $this->_response->getBody());
+    $this->dispatch('noticeajax/exemplaires?id_notice=123');
+    $this->assertXPath('//a[@data-popup="true"][@href="/admin/modulesnotice/exemplaires/config/admin/id_profil/2"]');
   }
 }
 
 
 
+
 class NoticeAjaxControllerBabelthequeTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -1084,7 +1102,7 @@ class NoticeAjaxControllerBabelthequeTest extends AbstractControllerTestCase {
 
     Class_AdminVar::set('BABELTHEQUE_JS', 'https://www.babelio.com/bw_85.js');
 
-    $this->dispatch('/opac/noticeajax/babeltheque?id_notice=N157675', true);
+    $this->dispatch('/opac/noticeajax/babeltheque?id_notice=N157675');
   }
 
 
@@ -1114,7 +1132,10 @@ class NoticeAjaxControllerBabelthequeTest extends AbstractControllerTestCase {
 
 
 
-class NoticeAjaxControllerBabelthequeWithoutOptionTest extends AbstractControllerTestCase {
+
+class NoticeAjaxControllerBabelthequeWithoutOptionTest
+  extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1122,7 +1143,7 @@ class NoticeAjaxControllerBabelthequeWithoutOptionTest extends AbstractControlle
       ->newInstanceWithId('BABELTHEQUE_JS')
       ->setValeur('');
 
-    $this->dispatch('/opac/noticeajax/babeltheque?id_notice=N157675', true);
+    $this->dispatch('/opac/noticeajax/babeltheque?id_notice=N157675');
   }
 
 
@@ -1134,8 +1155,8 @@ class NoticeAjaxControllerBabelthequeWithoutOptionTest extends AbstractControlle
 
 
 
-class NoticeAjaxControllerFrbrNotFoundTest extends AbstractControllerTestCase {
 
+class NoticeAjaxControllerFrbrNotFoundTest extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -1145,7 +1166,7 @@ class NoticeAjaxControllerFrbrNotFoundTest extends AbstractControllerTestCase {
       ->with(777)
       ->answers(null);
 
-    $this->dispatch('/opac/noticeajax/frbr?id_notice=777', true);
+    $this->dispatch('/opac/noticeajax/frbr?id_notice=777');
   }
 
 
@@ -1163,11 +1184,13 @@ class NoticeAjaxControllerFrbrNotFoundTest extends AbstractControllerTestCase {
 
 
 
-abstract class NoticeAjaxControllerFrbrWithLinksTestCase extends AbstractControllerTestCase {
+
+abstract class NoticeAjaxControllerFrbrWithLinksTestCase
+  extends AbstractControllerTestCase {
+
   private $_lesGrandsTextes;
   private $_moiCEstQuoi;
 
-
   public function setUp() {
     parent::setUp();
     Storm_Model_Loader::defaultToVolatile();
@@ -1240,7 +1263,7 @@ abstract class NoticeAjaxControllerFrbrWithLinksTestCase extends AbstractControl
 
   /** @test */
   public function lesGrandsTextesShouldBePresent() {
-    $this->assertXPathContentContains('//a', 'Les grands textes de droit',$this->_response->getBody());
+    $this->assertXPathContentContains('//a', 'Les grands textes de droit');
   }
 
 
@@ -1252,19 +1275,19 @@ abstract class NoticeAjaxControllerFrbrWithLinksTestCase extends AbstractControl
 
   /** @test */
   public function linkTypeEstSuiteShouldBePresent() {
-    $this->assertXPathContentContains('//div', 'est une suite de', $this->_response->getBody());
+    $this->assertXPathContentContains('//div', 'est une suite de');
   }
 
 
   /** @test */
   public function moiCEstQuoiShouldBePresent() {
-    $this->assertXPathContentContains('//a', 'Moi, c\'est quoi',$this->_response->getBody());
+    $this->assertXPathContentContains('//a', 'Moi, c\'est quoi');
   }
 
 
   /** @test */
   public function linkToSourceShouldBePresent() {
-    $this->assertXPath('//a[contains(@href, "/viewnotice/clef/' . $this->_moiCEstQuoi . '")]',$this->_response->getBody());
+    $this->assertXPath('//a[contains(@href, "/viewnotice/clef/' . $this->_moiCEstQuoi . '")]');
   }
 
 
@@ -1282,31 +1305,38 @@ abstract class NoticeAjaxControllerFrbrWithLinksTestCase extends AbstractControl
 
 
 
-class NoticeAjaxControllerFrbrWithLinksTest extends NoticeAjaxControllerFrbrWithLinksTestCase {
 
+class NoticeAjaxControllerFrbrWithLinksTest
+  extends NoticeAjaxControllerFrbrWithLinksTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/frbr?id_notice=777', true);
+
+    $this->dispatch('/opac/noticeajax/frbr?id_notice=777');
   }
 }
 
 
 
-class NoticeAjaxControllerFrbrWithLinksAndNInIdTest extends NoticeAjaxControllerFrbrWithLinksTestCase {
 
+class NoticeAjaxControllerFrbrWithLinksAndNInIdTest
+  extends NoticeAjaxControllerFrbrWithLinksTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/frbr?id_notice=N777', true);
+
+    $this->dispatch('/opac/noticeajax/frbr?id_notice=N777');
   }
 }
 
 
 
+
 class NoticeAjaxControllerNoticeActionTest extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->fixture(Class_Notice::class,
                    ['id' => 23,
                     'titre_principal' => 'Bending new corners']);
@@ -1329,10 +1359,13 @@ class NoticeAjaxControllerNoticeActionTest extends AbstractControllerTestCase {
 
 
 
-abstract class NoticeAjaxControllerVideoMorceauTest extends AbstractControllerTestCase {
+abstract class NoticeAjaxControllerVideoMorceauTest
+  extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/videomorceau?auteur=The%20Beatles&titre=Come%20together&width=300', true);
+
+    $this->dispatch('/opac/noticeajax/videomorceau?auteur=The%20Beatles&titre=Come%20together&width=300');
   }
 
 
@@ -1341,15 +1374,14 @@ abstract class NoticeAjaxControllerVideoMorceauTest extends AbstractControllerTe
    * @test
    */
   public function responseShouldContainsIframe() {
-    $this->assertXPath('//iframe[contains(@src, "http://www.ultimedia.com/swf/iframe_pub.php")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//iframe[contains(@src, "http://www.ultimedia.com/swf/iframe_pub.php")]');
   }
 }
 
 
 
-class NoticeAjaxControllerResumeNoticeTest extends AbstractControllerTestCase {
 
+class NoticeAjaxControllerResumeNoticeTest extends AbstractControllerTestCase {
 
   /** @test */
   public function withResumeNoticeShouldRenderHistoireDeLHomme() {
@@ -1357,7 +1389,7 @@ class NoticeAjaxControllerResumeNoticeTest extends AbstractControllerTestCase {
                                     ['titre_principal' => 'Tarzan',
                                      'resume' => 'L \'histoire de l\'homme qui habite dans la jungle.']);
 
-    $this->dispatch('/noticeajax/resumenotice?id_notice=123',true);
+    $this->dispatch('/noticeajax/resumenotice?id_notice=123');
     $this->assertXPathContentContains('//body', 'homme qui habite dans la jungle');
   }
 
@@ -1367,14 +1399,16 @@ class NoticeAjaxControllerResumeNoticeTest extends AbstractControllerTestCase {
     Class_Notice::newInstanceWithId(123,
                                     ['titre_principal' => 'Tarzan']);
 
-    $this->dispatch('/noticeajax/resumenotice?id_notice=123', true);
+    $this->dispatch('/noticeajax/resumenotice?id_notice=123');
     $this->assertXPathContentContains('//body', utf8_encode('Aucun résumé'));
   }
 }
 
 
 
+
 class NoticeAjaxControllerDVDSeriesTest extends AbstractControllerTestCase {
+
   /** @test */
   public function withSeriesNoticeShouldOzSeason3() {
     $oz_season1=Class_Notice::newInstanceWithId(234,
@@ -1421,6 +1455,7 @@ class NoticeAjaxControllerDVDSeriesTest extends AbstractControllerTestCase {
 
 
 abstract class NoticeAjaxMemeAuteurTest extends AbstractControllerTestCase {
+
   /** @test */
   public function withAuteurNoticeShouldOzSeason3() {
     Class_Notice::newInstanceWithId(234,
@@ -1428,39 +1463,37 @@ abstract class NoticeAjaxMemeAuteurTest extends AbstractControllerTestCase {
                                      'alpha_auteur' => 'HENRI LABORIT',
                                      'resume' => '']);
 
-
     Class_Notice::newInstanceWithId(234,
                                     ['titre_principal' => 'La nouvelle grille',
                                      'alpha_auteur' => 'HENRI LABORIT',
                                      'resume' => '']);
 
-    $this->dispatch('/noticeajax/auteur?id_notice=234',true);
-    $this->assertXPathContentContains('//body', 'nouvelle grille',$this->_response->getBody());
+    $this->dispatch('/noticeajax/auteur?id_notice=234');
+    $this->assertXPathContentContains('//body', 'nouvelle grille');
   }
 
 
-
   /** @test */
   public function withoutSeriesNoticeShouldRenderAucuneSerie() {
     $this->fixture('Class_Notice', ['id'=>123,
                                     'titre_principal' => 'Tarzan']);
 
-    $this->dispatch('/noticeajax/series?id_notice=123', true);
-    $this->assertXPathContentContains('//body', utf8_encode('Aucune information'),$this->_response->getBody());
+    $this->dispatch('/noticeajax/series?id_notice=123');
+    $this->assertXPathContentContains('//body', utf8_encode('Aucune information'));
   }
 }
 
 
 
-class NoticeAjaxControllerDisponibiliteNoticeTest extends AbstractControllerTestCase {
+
+class NoticeAjaxControllerDisponibiliteNoticeTest
+  extends AbstractControllerTestCase {
 
   protected
-    $_storm_default_to_volatile = true,
     $_notice,
     $_exemplaire,
     $_sigb_exemplaire;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -1492,15 +1525,15 @@ class NoticeAjaxControllerDisponibiliteNoticeTest extends AbstractControllerTest
 
   private function assertDispoNoticeHtmlContains($available) {
     $this->dispatch('/noticeajax/dispo-notice?id_notice=123');
-    $this->assertXPathContentContains('//body', $available, $this->_response->getBody());
+    $this->assertXPathContentContains('//body', $available);
   }
 
 
   /** @test */
   public function noScriptShouldBePresentShouldExpectation() {
     $this->_sigb_exemplaire->setDisponibilite(false);
-    $this->dispatch('/noticeajax/dispo-notice?id_notice=123',true);
-    $this->assertNotXPath('//script', $this->_response->getBody());
+    $this->dispatch('/noticeajax/dispo-notice?id_notice=123');
+    $this->assertNotXPath('//script');
   }
 
 
@@ -1530,7 +1563,7 @@ class NoticeAjaxControllerDisponibiliteNoticeTest extends AbstractControllerTest
   public function assertNoticeShouldBeUpdatedWithAvailabilityTrue() {
     $this->_sigb_exemplaire->setDisponibilite('');
 
-    $this->dispatch('/noticeajax/exemplaires/id/123',true);
+    $this->dispatch('/noticeajax/exemplaires/id/123');
     Class_Exemplaire::clearCache();
     Class_Notice::clearCache();
 
@@ -1555,7 +1588,7 @@ class NoticeAjaxControllerDisponibiliteNoticeTest extends AbstractControllerTest
 
     $this->_sigb_exemplaire->setDisponibilite('false');
 
-    $this->dispatch('/noticeajax/exemplaires/id/123',true);
+    $this->dispatch('/noticeajax/exemplaires/id/123');
     Class_Exemplaire::clearCache();
     Class_Notice::clearCache();
 
@@ -1575,13 +1608,12 @@ class NoticeAjaxControllerDisponibiliteNoticeTest extends AbstractControllerTest
 
 
 
+
 abstract class NoticeAjaxControllerNoticeWithAvisTestCase
   extends AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
-  public function setup() {
-    parent::setup();
+  public function setUp() {
+    parent::setUp();
 
     Class_AdminVar::set('AVIS_BIB_SEULEMENT', 0);
     Class_AdminVar::set('AVIS_MIN_SAISIE', 1);
@@ -1716,9 +1748,10 @@ class NoticeAjaxControllerNoticeWithAvisFederationReviewGuestLoggedDisabledTest
 
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('FEDERATION_COMMUNITY_SERVER', '');
 
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc/cherche/federationreview', true);
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc/cherche/federationreview');
   }
 
 
@@ -1743,9 +1776,10 @@ class NoticeAjaxControllerNoticeWithAvisFederationReviewGuestLoggedEnabledTest
 
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('FEDERATION_COMMUNITY_SERVER', $this->_endpoint);
 
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc/cherche/federationreview', true);
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc/cherche/federationreview');
   }
 
 
@@ -1771,10 +1805,10 @@ class NoticeAjaxControllerNoticeWithAvisEditLinkNotLoggedTest
    */
   protected function _login() {}
 
-
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc', true);
+
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc');
   }
 
 
@@ -1785,19 +1819,19 @@ class NoticeAjaxControllerNoticeWithAvisEditLinkNotLoggedTest
 }
 
 
+
+
 /** @see http://forge.afi-sa.fr/issues/64605 */
 class NoticeAjaxControllerNoticeWithAvisWithModerationAndAuthorLostNotLoggedTest
   extends AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
   /**
    * parent::_login setup an admin account by default -> do not log at all in this test
    */
   protected function _login() {}
 
-  public function setup() {
-    parent::setup();
+  public function setUp() {
+    parent::setUp();
 
     Class_AdminVar::set('AVIS_BIB_SEULEMENT', 0);
     Class_AdminVar::set('AVIS_MIN_SAISIE', 1);
@@ -1821,20 +1855,20 @@ class NoticeAjaxControllerNoticeWithAvisWithModerationAndAuthorLostNotLoggedTest
                                      'clef_oeuvre'=>'potter',
                                      'avis' => [$avis_orphelin]]);
 
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc', true);
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc');
   }
 
 
   /** @test */
   public function notValidatedShouldNotBePresent() {
     $this->assertNotXPathContentContains('//a[contains(@href, "/viewavis/")][contains(@href, "/id/23")]',
-                                         'Tres Bien',
-                                         $this->_response->getBody());
+                                         'Tres Bien');
   }
 }
 
 
 
+
 class NoticeAjaxControllerNoticeWithAvisEditLinkGuestLoggedTest
   extends NoticeAjaxControllerNoticeWithAvisTestCase {
 
@@ -1846,14 +1880,17 @@ class NoticeAjaxControllerNoticeWithAvisEditLinkGuestLoggedTest
 
   /** @test */
   public function editLinkShouldNotBePresent() {
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc', true);
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc');
     $this->assertNotXPath('//a[contains(@href, "abonne/editavisnotice")]');
   }
 }
 
 
 
-class NoticeAjaxControllerNoticeWithAvisEditLinkModoLoggedTest extends NoticeAjaxControllerNoticeWithAvisTestCase {
+
+class NoticeAjaxControllerNoticeWithAvisEditLinkModoLoggedTest
+  extends NoticeAjaxControllerNoticeWithAvisTestCase {
+
   protected function _loginHook($account) {
     $account->ROLE_LEVEL = ZendAfi_Acl_AdminControllerRoles::MODO_BIB;
     $account->ROLE = 'modo_bib';
@@ -1862,7 +1899,8 @@ class NoticeAjaxControllerNoticeWithAvisEditLinkModoLoggedTest extends NoticeAja
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc', true);
+
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc');
   }
 
 
@@ -1886,12 +1924,14 @@ class NoticeAjaxControllerNoticeWithAvisEditLinkModoLoggedTest extends NoticeAja
 
 
 
-class NoticeAjaxControllerAvisNoticeNotFoundTest extends AbstractControllerTestCase {
 
+class NoticeAjaxControllerAvisNoticeNotFoundTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/avis/id_notice/-1', true);
+
+    $this->dispatch('/opac/noticeajax/avis/id_notice/-1');
   }
 
 
@@ -1904,18 +1944,19 @@ class NoticeAjaxControllerAvisNoticeNotFoundTest extends AbstractControllerTestC
 
 
 
-class NoticeAjaxControllerNoticeWithAvisAvisAbonneTest extends NoticeAjaxControllerNoticeWithAvisTestCase {
-
+class NoticeAjaxControllerNoticeWithAvisAvisAbonneTest
+  extends NoticeAjaxControllerNoticeWithAvisTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/noticeajax/avis-abonne/id_notice/34', true);
+
+    $this->dispatch('/opac/noticeajax/avis-abonne/id_notice/34');
   }
 
 
   /** @test */
   public function globalCsssShouldBePresent() {
-    $this->assertXPath('//link[contains(@href, "global.css")]', $this->_response->getBody());
+    $this->assertXPath('//link[contains(@href, "global.css")]');
   }
 
 
@@ -1936,7 +1977,10 @@ class NoticeAjaxControllerNoticeWithAvisAvisAbonneTest extends NoticeAjaxControl
 
 
 
-class NoticeAjaxControllerNoticeWithAvisAvisTest extends NoticeAjaxControllerNoticeWithAvisTestCase {
+
+class NoticeAjaxControllerNoticeWithAvisAvisTest
+  extends NoticeAjaxControllerNoticeWithAvisTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1951,26 +1995,26 @@ class NoticeAjaxControllerNoticeWithAvisAvisTest extends NoticeAjaxControllerNot
 
     Class_AdminVar::newInstanceWithId('AVIS_BIB_SEULEMENT')->setValeur(0);
 
-    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc', true);
+    $this->dispatch('/opac/noticeajax/avis/id_notice/34/page/0/onglet/bloc');
   }
 
 
   /** @test */
   public function linkAddAvisShouldBePopup() {
     $this->assertXPathContentContains('//a[contains(@href, "/noticeajax/add-avis/id_notice/34")][@data-popup="true"]',
-                                      'Donnez ou modifiez votre avis', $this->_response->getBody());
+                                      'Donnez ou modifiez votre avis');
   }
 }
 
 
 
 
-
-
 class NoticeAjaxControllerErrorTagsTest extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/noticeajax/tags/id/-1', true);
+
+    $this->dispatch('/noticeajax/tags/id/-1');
   }
 
 
@@ -1983,8 +2027,8 @@ class NoticeAjaxControllerErrorTagsTest extends AbstractControllerTestCase {
 
 
 
-abstract class NoticeAjaxControllerBiographieTestCase extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+abstract class NoticeAjaxControllerBiographieTestCase
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2023,7 +2067,9 @@ abstract class NoticeAjaxControllerBiographieTestCase extends AbstractController
 
 
 
-class NoticeAjaxControllerBiographieTest extends NoticeAjaxControllerBiographieTestCase {
+class NoticeAjaxControllerBiographieTest
+  extends NoticeAjaxControllerBiographieTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2049,7 +2095,7 @@ class NoticeAjaxControllerBiographieTest extends NoticeAjaxControllerBiographieT
                                                                ]
                                                                ]))
                                                 ->beStrict());
-    $this->dispatch('/opac/noticeajax/biographie/id_notice/23', true);
+    $this->dispatch('/opac/noticeajax/biographie/id_notice/23');
   }
 
 
@@ -2092,7 +2138,7 @@ class NoticeAjaxControllerBiographieTest extends NoticeAjaxControllerBiographieT
 
   /** @test */
   public function linkModifierLaBiographieShouldBeVisible() {
-    $this->assertXPathContentContains('//button', 'Modifier la biographie', $this->_response->getBody());
+    $this->assertXPathContentContains('//button', 'Modifier la biographie');
   }
 
 
@@ -2121,21 +2167,23 @@ class NoticeAjaxControllerBiographieTest extends NoticeAjaxControllerBiographieT
     $abon = Class_Users::newInstanceWithId(15,['login'=>'abon'])->beAbonneSIGB();
     Zend_Auth::getInstance()->logUser($abon);
 
-    $this->dispatch('/opac/noticeajax/biographie/id_notice/23', true);
+    $this->dispatch('/opac/noticeajax/biographie/id_notice/23');
     $this->assertNotXPathContentContains('//button', 'Modifier la biographie');
   }
 
 
   /** @test */
   public function onloadUtilShouldBeLoaded() {
-    $this->assertXPath('//script[contains(@src, "onload_util")]', $this->_response->getBody());
+    $this->assertXPath('//script[contains(@src, "onload_util")]');
   }
 }
 
 
 
 
-class NoticeAjaxControllerBiographieNonTrouveeTest extends NoticeAjaxControllerBiographieTestCase {
+class NoticeAjaxControllerBiographieNonTrouveeTest
+  extends NoticeAjaxControllerBiographieTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2148,7 +2196,7 @@ class NoticeAjaxControllerBiographieNonTrouveeTest extends NoticeAjaxControllerB
                                                                        'image' => '',
                                                                        'biographie' => ''
                                                                        ])));
-    $this->dispatch('/opac/noticeajax/biographie/id_notice/23', true);
+    $this->dispatch('/opac/noticeajax/biographie/id_notice/23');
   }
 
 
@@ -2161,9 +2209,10 @@ class NoticeAjaxControllerBiographieNonTrouveeTest extends NoticeAjaxControllerB
 
 
 
-abstract class NoticeAjaxControllerLocalisationTestCase extends AbstractControllerTestCase {
-  protected $_json,
-    $_storm_default_to_volatile = true;
+abstract class NoticeAjaxControllerLocalisationTestCase
+  extends AbstractControllerTestCase {
+
+  protected $_json;
 
   public function setUp() {
     parent::setUp();
@@ -2202,17 +2251,18 @@ abstract class NoticeAjaxControllerLocalisationTestCase extends AbstractControll
                    ['id' => 1,
                     'image' => 'plan_bib_level_1.png']);
   }
-
 }
 
 
 
-class NoticeAjaxControllerNoLocalisationTest extends NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerNoLocalisationTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('noticeajax/localisation/id_bib/1', true);
+
+    $this->dispatch('noticeajax/localisation/id_bib/1');
   }
 
 
@@ -2224,8 +2274,9 @@ class NoticeAjaxControllerNoLocalisationTest extends NoticeAjaxControllerLocalis
 
 
 
-class NoticeAjaxControllerNoLocaltionForExemplaireTest extends NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerNoLocaltionForExemplaireTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2241,7 +2292,7 @@ class NoticeAjaxControllerNoLocaltionForExemplaireTest extends NoticeAjaxControl
                     'id_notice' => '1',
                     'section' => '',
                     'emplacement' => '']);
-    $this->dispatch('noticeajax/localisation/id_bib/1/cote/123', true);
+    $this->dispatch('noticeajax/localisation/id_bib/1/cote/123');
   }
 
 
@@ -2253,8 +2304,9 @@ class NoticeAjaxControllerNoLocaltionForExemplaireTest extends NoticeAjaxControl
 
 
 
-class NoticeAjaxControllerWithLocalisationTest extends NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerWithLocalisationTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2269,8 +2321,7 @@ class NoticeAjaxControllerWithLocalisationTest extends NoticeAjaxControllerLocal
                     'section' => '',
                     'emplacement' => '']);
 
-
-    $this->dispatch('noticeajax/localisation/id_item/1', true);
+    $this->dispatch('noticeajax/localisation/id_item/1');
     $this->_json = json_decode($this->_response->getBody());
   }
 
@@ -2289,8 +2340,9 @@ class NoticeAjaxControllerWithLocalisationTest extends NoticeAjaxControllerLocal
 
 
 
-class NoticeAjaxControllerWithMultipleSelectorLocalisationTest extends NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerWithMultipleSelectorLocalisationTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2319,7 +2371,7 @@ class NoticeAjaxControllerWithMultipleSelectorLocalisationTest extends NoticeAja
                     'libelle' => 'Last floor',
                     'cote_fin' => '995 z']);
 
-    $this->dispatch('noticeajax/localisation/id_item/5', true);
+    $this->dispatch('noticeajax/localisation/id_item/5');
     $this->_json = json_decode($this->_response->getBody());
   }
 
@@ -2332,11 +2384,13 @@ class NoticeAjaxControllerWithMultipleSelectorLocalisationTest extends NoticeAja
 
 
 
-class NoticeAjaxControllerLocalisationWithCoteTest extends  NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerLocalisationWithCoteTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Exemplaire',
                    ['id' => 5,
                     'id_bib' => 1,
@@ -2354,7 +2408,7 @@ class NoticeAjaxControllerLocalisationWithCoteTest extends  NoticeAjaxController
       ->setCoteFin('999 Z')
       ->save();
 
-    $this->dispatch('noticeajax/localisation/id_item/5', true);
+    $this->dispatch('noticeajax/localisation/id_item/5');
     $this->_json = json_decode($this->_response->getBody());
   }
 
@@ -2367,11 +2421,13 @@ class NoticeAjaxControllerLocalisationWithCoteTest extends  NoticeAjaxController
 
 
 
-class NoticeAjaxControllerLocalisationWithStartedCoteTest extends  NoticeAjaxControllerLocalisationTestCase {
 
+class NoticeAjaxControllerLocalisationWithStartedCoteTest
+  extends NoticeAjaxControllerLocalisationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Exemplaire',
                    ['id' => 5,
                     'id_bib' => 1,
@@ -2389,7 +2445,7 @@ class NoticeAjaxControllerLocalisationWithStartedCoteTest extends  NoticeAjaxCon
       ->setCoteFin('999 Z')
       ->save();
 
-    $this->dispatch('noticeajax/localisation/id_item/5', true);
+    $this->dispatch('noticeajax/localisation/id_item/5');
     $this->_json = json_decode($this->_response->getBody());
   }
 
@@ -2402,9 +2458,13 @@ class NoticeAjaxControllerLocalisationWithStartedCoteTest extends  NoticeAjaxCon
 
 
 
-class NoticeAjaxControllerLocalisationWithEndCoteTest extends  NoticeAjaxControllerLocalisationTestCase {
+
+class NoticeAjaxControllerLocalisationWithEndCoteTest
+  extends NoticeAjaxControllerLocalisationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Exemplaire',
                    ['id' => 5,
                     'id_bib' => 1,
@@ -2428,7 +2488,7 @@ class NoticeAjaxControllerLocalisationWithEndCoteTest extends  NoticeAjaxControl
                     'libelle' => 'Third floor',
                     'cote_fin' => '999 z']);
 
-    $this->dispatch('noticeajax/localisation/id_item/5', true);
+    $this->dispatch('noticeajax/localisation/id_item/5');
     $this->_json = json_decode($this->_response->getBody());
   }
 
@@ -2441,7 +2501,10 @@ class NoticeAjaxControllerLocalisationWithEndCoteTest extends  NoticeAjaxControl
 
 
 
-class NoticeAjaxControllerRessourceEpubPictoTypeTest extends AbstractControllerTestCase {
+
+class NoticeAjaxControllerRessourceEpubPictoTypeTest
+  extends AbstractControllerTestCase {
+
   /** @test */
   public function withPictoInSkinShouldUseIt() {
     $album = $this->fixture('Class_Album',
@@ -2470,45 +2533,35 @@ class NoticeAjaxControllerRessourceEpubPictoTypeTest extends AbstractControllerT
 
     $this->dispatch('/noticeajax/resnumeriques/type_doc/102/tri/%2A/type_recherche/fulltext/clef/LARTDAIMER--OVIDE----102/id/2167753?isbn=&onglet=bloc_2167753_1&page=0&id_notice=N2167753&width=1160');
 
-    $this->assertXPath('//img[contains(@src,"/skins/myskin/images/epub.png")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//img[contains(@src,"/skins/myskin/images/epub.png")]');
   }
 
 
   public function tearDown() {
     Class_Profil_Skin::setFileSystem(null);
+    parent::tearDown();
   }
 }
 
 
 
+
 class NoticeAjaxControllerRecountsTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+
   public function setUp() {
     parent::setUp();
 
-    $deniau = $this->fixture('Class_CodifAuteur',
+    $deniau = $this->fixture(Class_CodifAuteur::class,
                              ['id' => 25,
                               'code_alpha' => 'DENIAU',
                               'libelle' => 'Deniau',
                               'formes' => 'DENIAU']);
 
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-      ->whenCalled('findByCodeAlpha')
-      ->answers(null)
-
-      ->whenCalled('findByCodeAlpha')
-      ->with('DENIAU')
-      ->answers($deniau);
-
     $record = $this->fixture('Class_Notice',['id'=> 10,
                                              'titre_principal' => 'Un héros trés discret',
                                              'auteur_principal' => 'Jacques Audiard',
                                              'unimarc' =>file_get_contents(realpath(dirname(__FILE__)).'../../../../../fixtures/audiard_herosdiscret.uni')]);
 
-
-
-
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' =>
                        ['viewnotice0' => [
@@ -2517,7 +2570,7 @@ class NoticeAjaxControllerRecountsTest extends AbstractControllerTestCase {
                                          'analytics_authors' => 'a'
                          ]]]);
 
-    $this->dispatch('/noticeajax/recounts/id_notice/10', true);
+    $this->dispatch('/noticeajax/recounts/id_notice/10');
   }
 
 
@@ -2529,18 +2582,20 @@ class NoticeAjaxControllerRecountsTest extends AbstractControllerTestCase {
 
   /** @test */
   public function dupontelShouldBePresent() {
-    $this->assertXpathContentContains('//ul/li','Acteur / Dupontel', $this->_response->getBody());
+    $this->assertXpathContentContains('//ul/li','Acteur / Dupontel');
   }
-
 }
 
 
+
+
 class NoticeAjaxControllerAddAvisTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+
   protected $_json, $_xpath;
 
   public function setUp() {
     parent::setUp();
+
     $notice = $this->fixture('Class_Notice',
                              ['id' => '1',
                              ]);
@@ -2586,8 +2641,9 @@ class NoticeAjaxControllerAddAvisTest extends AbstractControllerTestCase {
 
 
 
-class NoticeAjaxControllerNanookSIGBWithHoldSiteEnabledTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+
+class NoticeAjaxControllerNanookSIGBWithHoldSiteEnabledTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2634,29 +2690,30 @@ class NoticeAjaxControllerNanookSIGBWithHoldSiteEnabledTest extends AbstractCont
                  ->setFicheSIGB(['fiche' => $user_from_sigb]);
 
     ZendAfi_Auth::getInstance()->logUser($user);
-    $this->dispatch('/noticeajax/exemplaires/id_notice/10', true);
+    $this->dispatch('/noticeajax/exemplaires/id_notice/10');
   }
 
 
   /** @test */
   public function holdLinkShouldContainsPaulBranchCode() {
-    $this->assertXPath('//table//a[@href="/recherche/reservation-pickup-ajax/id_notice/10/id_int_bib/12/id_bib/12/copy_id/654/code_annexe/CAV"]', $this->_response->getBody());
+    $this->assertXPath('//table//a[@href="/recherche/reservation-pickup-ajax/id_notice/10/id_int_bib/12/id_bib/12/copy_id/654/code_annexe/CAV"]');
   }
 }
 
 
 
 
-class NoticeAjaxControllerDetailWithMultipleEditorsTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerDetailWithMultipleEditorsTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $record = $this->fixture('Class_Notice',
                              ['id' => 1,
                               'unimarc' => file_get_contents(__DIR__ . '/hl_70912.unimarc')]);
 
-    $this->dispatch('/opac/noticeajax/detail/id_notice/1', true);
+    $this->dispatch('/opac/noticeajax/detail/id_notice/1');
   }
 
 
@@ -2675,11 +2732,12 @@ class NoticeAjaxControllerDetailWithMultipleEditorsTest extends AbstractControll
 
 
 
-class NoticeAjaxControllerDetailWithEditor214OnlyTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerDetailWithEditor214OnlyTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '')
       ->zoneWithChildren('214', ['a' => '[Paris]', 'c' => 'Vagnon'], ' 0')
@@ -2702,11 +2760,12 @@ class NoticeAjaxControllerDetailWithEditor214OnlyTest extends AbstractController
 
 
 
-class NoticeAjaxControllerDetailWithMultipleEditors214OnlyTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerDetailWithMultipleEditors214OnlyTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '');
 
@@ -2740,11 +2799,12 @@ class NoticeAjaxControllerDetailWithMultipleEditors214OnlyTest extends AbstractC
 
 
 
-class NoticeAjaxControllerDetailWith214OnlyDistributorTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerDetailWith214OnlyDistributorTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '')
       ->zoneWithChildren('214', ['a' => '[Paris]', 'c' => 'Vagnon'], ' 0')
@@ -2763,6 +2823,7 @@ class NoticeAjaxControllerDetailWith214OnlyDistributorTest extends AbstractContr
     $this->dispatch('/opac/noticeajax/detail/id_notice/1');
   }
 
+
   protected function assertPropertyContains($property, $value){
     $this->assertXPathContentContains('//dt[contains(text(), "'. $property .'")]/following-sibling::dd//div', $value);
   }
@@ -2813,12 +2874,14 @@ class NoticeAjaxControllerDetailWith214OnlyDistributorTest extends AbstractContr
 
 
 
-class NoticeAjaxControllerDetailWith214And210Test extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true,
-    $_record;
+class NoticeAjaxControllerDetailWith214And210Test
+  extends AbstractControllerTestCase {
+
+  protected $_record;
 
   public function setUp() {
     parent::setUp();
+
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '')
       ->zoneWithChildren('214', ['a' => '[Paris]', 'c' => 'Vagnon'], ' 0')
@@ -2859,13 +2922,13 @@ class NoticeAjaxControllerDetailWith214And210Test extends AbstractControllerTest
 
 
 
-class NoticeAjaxControllerWithKiosqueInResumeTest extends AbstractControllerTestCase {
-
-  protected $_storm_default_to_volatile = true;
 
+class NoticeAjaxControllerWithKiosqueInResumeTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $album = $this->fixture('Class_Album',
                             ['id' => 55,
                              'titre' => 'Belgique',
@@ -2888,14 +2951,14 @@ class NoticeAjaxControllerWithKiosqueInResumeTest extends AbstractControllerTest
 
   /** @test */
   public function pageShouldContainsIFrame() {
-    $this->dispatch('/noticeajax/detail/id/1', true);
+    $this->dispatch('/noticeajax/detail/id/1');
     $this->assertXPath( '//iframe[contains(@src, "style_liste=jcarousel")]');
   }
 
 
   /** @test */
   public function pageShouldContainsDescription() {
-    $this->dispatch('/noticeajax/detail/id/2', true);
+    $this->dispatch('/noticeajax/detail/id/2');
     $this->assertXPathContentContains( '//dd', 'Ceci est un logiciel libre.');
   }
 }
@@ -2904,8 +2967,8 @@ class NoticeAjaxControllerWithKiosqueInResumeTest extends AbstractControllerTest
 
 
 /** @see http://forge.afi-sa.fr/issues/108496 */
-class NoticeAjaxControllerRecordWithSerieAnd995ZeroSameAsIdOrigineTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class NoticeAjaxControllerRecordWithSerieAnd995ZeroSameAsIdOrigineTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -2934,7 +2997,6 @@ class NoticeAjaxControllerRecordWithSerieAnd995ZeroSameAsIdOrigineTest extends A
   /** @test */
   public function detailsShouldNotContainsLinkToSerialParent() {
     $this->assertNotXPathContentContains('//a[contains(@href,"/viewnotice/id/2")]',
-                                         utf8_encode('Voir ce numéro de '),
-                                         $this->_response->getBody());
+                                         utf8_encode('Voir ce numéro de '));
   }
 }
diff --git a/tests/application/modules/opac/controllers/RechercheControllerAtomTest.php b/tests/application/modules/opac/controllers/RechercheControllerAtomTest.php
index c17ebfe25223c35a0730bc5ea8e8d5f7f61f87c0..a6ebc595d02d6ebfa4fcf5c8191573147b180ab0 100644
--- a/tests/application/modules/opac/controllers/RechercheControllerAtomTest.php
+++ b/tests/application/modules/opac/controllers/RechercheControllerAtomTest.php
@@ -18,9 +18,11 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
+
+
 abstract class RechercheControllerAtomTestCase extends AbstractControllerTestCase {
+
   protected
-    $_storm_default_to_volatile = true,
     $_json,
     $_xpath;
 
@@ -53,13 +55,12 @@ abstract class RechercheControllerAtomTestCase extends AbstractControllerTestCas
     $this->_json = json_decode($this->_response->getBody());
     $this->_xpath = new Storm_Test_XPathXML();
     $this->_xpath->registerNameSpace('atom', "http://www.w3.org/2005/Atom");
-
-
   }
 
 
   protected function _prepareLoader($loader) {}
 
+
   protected function _prepareSql($sql) {}
 
 
@@ -75,7 +76,9 @@ abstract class RechercheControllerAtomTestCase extends AbstractControllerTestCas
 
 
 
+
 class RechercheControllerAtomEmptyTest extends RechercheControllerAtomTestCase {
+
   protected function _prepareLoader($loader) {
     $loader->whenCalled('findAllByIds')
            ->with([], 5, null)
@@ -100,7 +103,6 @@ class RechercheControllerAtomEmptyTest extends RechercheControllerAtomTestCase {
   }
 
 
-
   protected function _searchUrl() {
     return 'recherche/simple/expressionRecherche/Harry+Potter/tri/*/format/atom/page_size/5/facettes/S1-G123';
   }
@@ -113,20 +115,20 @@ class RechercheControllerAtomEmptyTest extends RechercheControllerAtomTestCase {
   }
 
 
-
   /** @test */
   public function summaryShouldContainsNoResult() {
     $this->_xpath->assertXPathContentContains($this->_response->getBody(),
                                               '//atom:feed/atom:subtitle',
                                               'Aucun résultat trouvé');
-
   }
 }
 
 
 
 
-abstract class RechercheControllerAtomWithTwoNoticesTestCase extends RechercheControllerAtomTestCase {
+abstract class RechercheControllerAtomWithTwoNoticesTestCase
+  extends RechercheControllerAtomTestCase {
+
   protected function _prepareLoader($loader) {
     $potter = $this->fixture('Class_Notice',
                              ['id' => 234,
@@ -170,7 +172,9 @@ abstract class RechercheControllerAtomWithTwoNoticesTestCase extends RechercheCo
 
 
 
-class RechercheControllerAtomWithTwoNoticesTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+class RechercheControllerAtomWithTwoNoticesTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
+
   protected function _searchUrl() {
     return 'recherche/simple/expressionRecherche/Harry+Potter/tri/*/format/atom/page_size/5/facettes/S1-G123';
   }
@@ -304,16 +308,13 @@ class RechercheControllerAtomWithTwoNoticesTest extends RechercheControllerAtomW
 
 
 class RechercheControllerAtomWithErrorTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setup() {
     parent::setup();
-    $this->dispatch('recherche/simple/format/atom/id_catalogue/6666', true);
+    $this->dispatch('recherche/simple/format/atom/id_catalogue/6666');
   }
 
 
-
   /** @test */
   public function feedSubtitleShouldContainsSelectionWithoutNotices() {
     $this->assertContains('Erreur: La sélection ne contient aucune notice', $this->_response->getBody());
@@ -334,7 +335,8 @@ class RechercheControllerAtomWithErrorTest extends AbstractControllerTestCase {
 
 
 
-class RechercheControllerAtomOnDomainTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+class RechercheControllerAtomOnDomainTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
 
   protected function _prepareLoader($loader) {
     $this->fixture('Class_Catalogue',
@@ -353,19 +355,23 @@ class RechercheControllerAtomOnDomainTest extends RechercheControllerAtomWithTwo
     $this->_xpath->assertXPathContentContains($this->_response->getBody(),
                                               '//atom:feed/atom:title',
                                               "Domaine: mangas");
-
   }
 }
 
 
 
-class RechercheControllerAtomOnPanierTypeDocNouveauteTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+
+class RechercheControllerAtomOnPanierTypeDocNouveauteTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
 
   protected function _prepareLoader($loader) {
-    $this->fixture('Class_PanierNotice',
+    $this->fixture(Class_PanierNotice::class,
                    ['id' => 23,
                     'libelle' => 'mangas',
                     'cles_notices' => ['RENDEZVOUSAKIRUNA--ANNANOVIONDARROUSSINJEANPIERRESOULISANASTASIOSLJUNGMARKCLAESBODNIAKIMHENRY---2012-104']]);
+
+    $loader->whenCalled('findAllByClefAlphaStartingWith')
+           ->answers([Class_Notice::find(10141532)]);
   }
 
 
@@ -401,7 +407,10 @@ class RechercheControllerAtomOnPanierTypeDocNouveauteTest extends RechercheContr
 
 
 
-class RechercheControllerAtomWithSerieTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+
+class RechercheControllerAtomWithSerieTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
+
   protected function _searchUrl() {
     return 'recherche/simple/expressionRecherche/Harry+Potter/tri/*/format/atom/serie/HP';
   }
@@ -416,7 +425,10 @@ class RechercheControllerAtomWithSerieTest extends RechercheControllerAtomWithTw
 
 
 
-class RechercheControllerAtomWithRubricTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+
+class RechercheControllerAtomWithRubricTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
+
   protected function _prepareLoader($loader) {
     $this->fixture('Class_Catalogue',
                    ['id' => 23,
@@ -428,10 +440,12 @@ class RechercheControllerAtomWithRubricTest extends RechercheControllerAtomWithT
                     'libelle' => 'mangas']);
   }
 
+
   protected function _searchUrl() {
     return 'recherche/simple/rubrique/HCCCC23/format/atom';
   }
 
+
   /** @test */
   public function feedTitleShouldContainsRubriqueMangas() {
     $this->_xpath->assertXPathContentContains($this->_response->getBody(),
@@ -442,11 +456,15 @@ class RechercheControllerAtomWithRubricTest extends RechercheControllerAtomWithT
 
 
 
-class RechercheControllerAtomWithCodeRebondTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+
+class RechercheControllerAtomWithCodeRebondTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
+
   protected function _searchUrl() {
     return 'recherche/simple/expressionRecherche/Harry+Potter/tri/*/format/atom/code_rebond/G123';
   }
 
+
   /** @test */
   public function feedTitleShouldContainsRechercheElargie() {
     $this->_xpath->assertXPathContentContains($this->_response->getBody(),
@@ -457,7 +475,10 @@ class RechercheControllerAtomWithCodeRebondTest extends RechercheControllerAtomW
 
 
 
-class RechercheControllerAtomWithAdvancedSearchTest extends RechercheControllerAtomWithTwoNoticesTestCase {
+
+class RechercheControllerAtomWithAdvancedSearchTest
+  extends RechercheControllerAtomWithTwoNoticesTestCase {
+
   protected function _searchUrl() {
     return 'recherche/simple/format/atom/rech_titres/potter/operateur_auteurs/or/rech_auteurs/rowling/section/1/annexe/1';
   }
@@ -485,5 +506,4 @@ class RechercheControllerAtomWithAdvancedSearchTest extends RechercheControllerA
                                               '//atom:feed/atom:title',
                                               'Recherche: Et titre: potter');
   }
-
 }
diff --git a/tests/application/modules/opac/controllers/RechercheControllerTest.php b/tests/application/modules/opac/controllers/RechercheControllerTest.php
index 9ba80b077042a458b5d22f963b2e63c8b8960de4..ea14efba24cd2b9fa2c9a3402ba8d0a88126cff5 100644
--- a/tests/application/modules/opac/controllers/RechercheControllerTest.php
+++ b/tests/application/modules/opac/controllers/RechercheControllerTest.php
@@ -26,7 +26,8 @@ abstract class RechercheControllerNoticeTestCase extends AbstractControllerTestC
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 123,
-                    'libelle' => 'Bernard Génin']);
+                    'libelle' => 'Bernard Génin',
+                    'formes' => 'GENINxBERNARD']);
 
     $this->fixture(Class_CodifAuteurFonction::class,
                    ['id' => '070',
@@ -132,16 +133,18 @@ class RechercheControllerPrintTest extends RechercheControllerNoticeTestCase {
     $this->dispatch('/recherche/viewnotice/id/' . $this->notice->getId());
     $this->assertXPathContentContains('//div', 'Imprimer');
   }
-
 }
 
 
 
-class RechercheControllerViewNoticeBabelthequeTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControllerViewNoticeBabelthequeTest
+  extends RechercheControllerNoticeTestCase {
+
   /** @test */
   public function withoutBabelthequeJSShouldNotBeLoaded() {
     Class_AdminVar::newInstanceWithId('BABELTHEQUE_JS')->setValeur('');
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertNotXpath('//script[contains(@src, "babeltheque.js")]');
   }
 
@@ -149,7 +152,7 @@ class RechercheControllerViewNoticeBabelthequeTest extends RechercheControllerNo
   /** @test */
   public function withBabelthequeJSShouldBeLoadedWithRightId() {
     Class_AdminVar::newInstanceWithId('BABELTHEQUE_JS')->setValeur('http://www.babeltheque.com/bw_666.js');
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertXpath('//script[contains(@src, "babeltheque.js?bwid=666")]');
   }
 
@@ -157,17 +160,17 @@ class RechercheControllerViewNoticeBabelthequeTest extends RechercheControllerNo
   /** @test */
   public function noticeShouldNotHaveTome() {
     $this->notice->setClefChapeau("test")->save();
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
 
     $this->assertNotXPathContentContains('//div[@class="entete_notice"]',"Voir tous les tomes");
   }
-
 }
 
 
 
 
 class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
+
   protected $_notice;
 
   public function setUp() {
@@ -207,19 +210,20 @@ class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
          ->beStrict();
   }
 
+
   /** @test */
   public function searchTermShouldNotBeEditable() {
     Class_Profil::getCurrentProfil()->setCfgModules(['recherche' => ['resultatsimple' => ['search_term_editable' => 0,
                                                                                           'header_composition' => 'Advanced']]]);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPath('//div[@class="resultats_page"]//div[@class="expression-recherche"][contains(text(), "pomme")]');
   }
 
 
   /** @test */
   public function searchTermShouldBeEditable() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPath('//input[@name="expressionRecherche"][@value="pomme"]');
   }
 
@@ -227,7 +231,7 @@ class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
   /** @test */
   public function pagerShouldBeDisplayedOnTop() {
     Class_AdminVar::newInstanceWithId('SEARCH_PAGINATE_POSITION', ['valeur' => 'TOP']);
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPath('//h1/following-sibling::node()[@class="pager"]');
   }
 
@@ -235,7 +239,7 @@ class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
   /** @test */
   public function pagerShouldBeDisplayedOnBottom() {
     Class_AdminVar::newInstanceWithId('SEARCH_PAGINATE_POSITION', ['valeur' => 'BOTTOM']);
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPath('//div[@class="liste_notices"]/following-sibling::node()[@class="pager"]');
   }
 
@@ -243,56 +247,56 @@ class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
   /** @test */
   public function pagerShouldBeDisplayedOnTopAndBottom() {
     Class_AdminVar::newInstanceWithId('SEARCH_PAGINATE_POSITION', ['valeur' => 'BOTH']);
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPathCount('//div[@class="pager"]', 2);
   }
 
 
   /** @test */
   public function urlPage2ShouldBeWithListeFormatParameter() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/liste_format/4');
     $this->assertXPath('//a[contains(@href, "/liste_format/4")][contains(@href,"/page/2")]');
   }
 
 
   /** @test */
   public function withPageSize10PageFiveShouldBePresent() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3');
     $this->assertXPath('//a[contains(@href,"/page/5")]');
   }
 
 
   /** @test */
   public function withPageSize100PageFiveShouldFallbackToMaximumPageSize50() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/100', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/100');
     $this->assertXPath('//a[contains(@href,"/page_size/50")]');
   }
 
 
   /** @test */
   public function withPageSize10PageSixShouldNotBePresent() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3');
     $this->assertNotXPath('//a[contains(@href,"/page/6")]');
   }
 
 
   /** @test */
   public function urlWithPageSizeSevenShouldCallFindAllWithPageSize() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7');
     $this->assertXPath('//a[contains(@href, "/page_size/7")][contains(@href,"/page/2")]');
   }
 
 
   /** @test */
   public function withPageSizeSevenPageSevenShouldBePresent() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7');
     $this->assertXPath('//a[contains(@href,"/page/7")]');
   }
 
 
   /** @test */
   public function withPageSizeSevenPageHeightShouldNotBePresent() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/*/facette/T3/page_size/7');
     $this->assertNotXPath('//a[contains(@href,"/page/8")]');
   }
 }
@@ -300,7 +304,9 @@ class RechercheControllerPagerTest extends RechercheControllerNoticeTestCase {
 
 
 
-abstract class RechercheControllerViewNoticeCollectionWithPreferencesTest extends RechercheControllerNoticeTestCase {
+abstract class RechercheControllerViewNoticeCollectionWithPreferencesTest
+  extends RechercheControllerNoticeTestCase {
+
   protected $_web_analytics_client;
 
   public function setUp() {
@@ -403,7 +409,9 @@ class RechercheControllerViewNoticeCollectionWithoutSerie
 
 
 
-class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeWithPreferencesTest
+  extends RechercheControllerNoticeTestCase {
+
   protected $_web_analytics_client;
 
   public function setUp() {
@@ -456,7 +464,7 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
       ->answers(true);
     ZendAfi_Controller_Action_Helper_TrackEvent::setDefaultWebAnalyticsClient($this->_web_analytics_client);
 
-    $this->dispatch('recherche/viewnotice/id/345', true);
+    $this->dispatch('recherche/viewnotice/id/345');
   }
 
 
@@ -513,19 +521,19 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
 
   /** @test */
   public function enteteShouldDisplayRebondInterestMarionettes() {
-    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/F2")]', 'marionettes', $this->_response->getBody());
+    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/F2")]', 'marionettes');
   }
 
 
   /** @test */
   public function enteteShouldDisplayRebondTagEnfants() {
-    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/Z3")]', 'enfants', $this->_response->getBody());
+    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/Z3")]', 'enfants');
   }
 
 
   /** @test */
   public function enteteShouldDisplayRebondPcdm4Rock() {
-    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/P4")]', 'rock', $this->_response->getBody());
+    $this->assertXPathContentContains('//dl//a[contains(@href, "recherche/simple/id/345/code_rebond/P4")]', 'rock');
   }
 
 
@@ -591,6 +599,7 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
     $this->assertXPathContentContains('//div[@id="set345_onglet_3"][@class="titre_onglet"]', 'videos');
   }
 
+
   /** @test */
   public function noJavascriptShouldOpenSecondOnglet() {
     $this->assertNotXPathContentContains('//script', "infos_onglet('set345_onglet_1')");
@@ -605,8 +614,7 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
 
   /** @test */
   public function vignetteShouldBeGenerated() {
-    $this->assertXPath('//div[@class="nothumbnail type_doc_1"]',
-                       $this->_response->getBody());
+    $this->assertXPath('//div[@class="nothumbnail type_doc_1"]');
   }
 
 
@@ -660,6 +668,7 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
     $this->assertXPathContentContains('//div[@class="barre_nav"]//span', 'Cinéma d\'animation');
   }
 
+
   /** @test */
   public function deweyAndPcdm4WithSameLibelleShouldBePresent() {
     $this->assertXPathContentContains('//div[@class="entete_notice"]//dt[contains(@class, "classification")]', 'Classification');
@@ -673,18 +682,18 @@ class RechercheControllerViewNoticeWithPreferencesTest extends RechercheControll
 
 
 class RechercheControllerViewNoticeTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('AUTHOR_PAGE', 0);
-    $this->dispatch('recherche/viewnotice/id/345', true);
+    $this->dispatch('recherche/viewnotice/id/345');
   }
 
 
   /** @test */
   public function titleShouldBeDisplayed() {
     $this->assertXPathContentContains('//h1',
-                                      array_first(explode('<br />', $this->notice->getTitrePrincipal())),
-                                      $this->_response->getBody());
+                                      array_first(explode('<br />', $this->notice->getTitrePrincipal())));
   }
 
 
@@ -715,7 +724,9 @@ class RechercheControllerViewNoticeTest extends RechercheControllerNoticeTestCas
 
 
 
-class RechercheControllerViewNoticeMetasTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeMetasTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -732,7 +743,7 @@ class RechercheControllerViewNoticeMetasTest extends RechercheControllerNoticeTe
                     'facettes' => 'A123 F2 G1 P4 Y2 B1 Lfre M1 Z3 D1',
                     'date_creation' => '2013-12-31']);
 
-    $this->dispatch('recherche/viewnotice/id/345', true);
+    $this->dispatch('recherche/viewnotice/id/345');
   }
 
 
@@ -777,9 +788,10 @@ class RechercheControllerViewNoticeMetasTest extends RechercheControllerNoticeTe
 
 
 class RechercheControllerThumbnailTest extends RechercheControllerNoticeTestCase {
+
   /** @test */
   public function rechercheVignetteActionShouldRedirectToRawThumbnailAction() {
-    $this->dispatch('recherche/vignette/id_notice/345', true);
+    $this->dispatch('recherche/vignette/id_notice/345');
     $this->assertRedirectTo(Class_Url::absolute('/recherche/raw-thumbnail/id/345'),
                             $this->getResponseLocation());
   }
@@ -787,15 +799,15 @@ class RechercheControllerThumbnailTest extends RechercheControllerNoticeTestCase
 
   /** @test */
   public function rawThumbnailForIdNoticeTwoShouldAnswerPngImage() {
-    $this->dispatch('/recherche/raw-thumbnail/id/345', true);
+    $this->dispatch('/recherche/raw-thumbnail/id/345');
     $this->assertContains('iVBORw0', base64_encode($this->_response->getBody()));
   }
 }
 
 
 
+
 class RechercheControllerVignetteEmptyTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -811,7 +823,7 @@ class RechercheControllerVignetteEmptyTest extends AbstractControllerTestCase {
                                'titre' => 'An article with img',
                                'contenu' => 'This article should contains an image like this <img src="/images/articles/img.png" />']);
     $article->index();
-    $this->dispatch('recherche/vignette/id_notice/1', true);
+    $this->dispatch('recherche/vignette/id_notice/1');
   }
 
 
@@ -883,7 +895,9 @@ class RechercheControllerViewNoticeClefAlphaTest
 
 
 
-class RechercheControllerViewNoticeClefAlphaWithDoublonsTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeClefAlphaWithDoublonsTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -910,14 +924,14 @@ class RechercheControllerViewNoticeClefAlphaWithDoublonsTest extends RechercheCo
 
   /** @test */
   public function withOnlyClefResponseShouldRedirectToRechercheTWILIGHT_SLADED() {
-    $this->dispatch('recherche/viewnotice/clef/'.urlencode('TWILIGHT--SLADED-3-M6VIDEO-2010-4'), true);
+    $this->dispatch('recherche/viewnotice/clef/'.urlencode('TWILIGHT--SLADED-3-M6VIDEO-2010-4'));
     $this->assertRedirectTo('/opac/recherche?q=TWILIGHT+SLADED');
   }
 
 
   /** @test */
   public function withClefAndIdResponseShouldRenderTwilight2() {
-    $this->dispatch('recherche/viewnotice/clef/'.urlencode('TWILIGHT--SLADED-3-M6VIDEO-2010-4').'/id/1', true);
+    $this->dispatch('recherche/viewnotice/clef/'.urlencode('TWILIGHT--SLADED-3-M6VIDEO-2010-4').'/id/1');
     $this->assertXPathContentContains('//div[contains(@class, "view_notice")]//h1', 'Twilight 2');
   }
 }
@@ -926,6 +940,7 @@ class RechercheControllerViewNoticeClefAlphaWithDoublonsTest extends RechercheCo
 
 
 class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->notice->setTypeDoc(5);
@@ -935,7 +950,7 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
   /** @test */
   public function linkToUploadVignetteShouldNotBePresentForAbonneSIGB() {
     Class_Users::getIdentity()->beAbonneSIGB();
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertNotXPathContentContains('//a', 'Modifier la vignette');
   }
 
@@ -943,7 +958,7 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
   /** @test */
   public function linkToUploadVignetteShouldBePresentForModoBib() {
     Class_Users::getIdentity()->changeRoleTo(ZendAfi_Acl_AdminControllerRoles::MODO_BIB);
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertXPath('//button[contains(@title, "Modifier la vignette")]');
   }
 
@@ -951,7 +966,7 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
   /** @test */
   public function dispatchWithIframeAndAdminLoggedShouldDisplayRecord() {
     Class_Users::getIdentity()->changeRoleTo(ZendAfi_Acl_AdminControllerRoles::MODO_BIB);
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d/render/iframe', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d/render/iframe', $this->notice->getId()));
     $this->assertXPath('//button[contains(@title, "Modifier la vignette")]');
   }
 
@@ -960,7 +975,7 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
   public function linkToUploadVignetteShouldNotBePresentForTypeDocMoreThanFive() {
     Class_Users::getIdentity()->beAdminPortail();
     $this->notice->setTypeDoc(6);
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertNotXPathContentContains('//a', 'Modifier la vignette');
   }
 
@@ -972,7 +987,7 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
     $this->fixture('Class_CodifTypeDoc', ['id' => Class_TypeDoc::EPUB,
                                           'famille_id' => Class_CodifTypeDoc::LIVRE]);
 
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertXPath('//button[contains(@title, "Modifier la vignette")]');
   }
 }
@@ -980,12 +995,13 @@ class RechercheControllerUploadVignetteTest extends RechercheControllerNoticeTes
 
 
 
+class RechercheControllerGenerateThumbnailTest
+  extends RechercheControllerNoticeTestCase {
 
-class RechercheControllerGenerateThumbnailTest extends RechercheControllerNoticeTestCase {
   /** @test */
   public function linkToGenerateThumbnailShouldNotBePresentForAbonneSIGB() {
     Class_Users::getIdentity()->beAbonneSIGB();
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertNotXPath('//button[contains(@onclick, "admin/records/reset-thumbnail")][contains(@title, "Supprimer et re-générer la vignette")]');
   }
 
@@ -993,7 +1009,7 @@ class RechercheControllerGenerateThumbnailTest extends RechercheControllerNotice
   /** @test */
   public function linkToGenerateThumbnailShouldBePresentForModoBib() {
     Class_Users::getIdentity()->changeRoleTo(ZendAfi_Acl_AdminControllerRoles::MODO_BIB);
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
     $this->assertXPath('//button[contains(@onclick, "admin/records/reset-thumbnail")][contains(@title, "Supprimer et re-générer la vignette")]');
   }
 }
@@ -1001,7 +1017,9 @@ class RechercheControllerGenerateThumbnailTest extends RechercheControllerNotice
 
 
 
-class RechercheControllerViewNoticeAsAdminTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeAsAdminTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->notice->setTypeDoc(5);
@@ -1021,7 +1039,7 @@ class RechercheControllerViewNoticeAsAdminTest extends RechercheControllerNotice
                                                           'preferences' => [],
                                                           'sous_menus' => '']]]]]]);
 
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
   }
 
 
@@ -1033,7 +1051,7 @@ class RechercheControllerViewNoticeAsAdminTest extends RechercheControllerNotice
 
   /** @test */
   public function linkToConfigModulesRechercheShouldHaveActionViewNotice() {
-    $this->assertXPath('//a[contains(@href, "/admin/modules/recherche/config/site/type_module/recherche/id_profil/2/action1/viewnotice/action2/5")]', $this->_response->getBody());
+    $this->assertXPath('//a[contains(@href, "/admin/modules/recherche/config/site/type_module/recherche/id_profil/2/action1/viewnotice/action2/5")]');
   }
 
 
@@ -1057,8 +1075,11 @@ class RechercheControllerViewNoticeAsAdminTest extends RechercheControllerNotice
 
 
 
+
 /** @see http://forge.afi-sa.fr/issues/116900#note-3 */
-class RechercheControllerViewNoticeAsAdminWithMenuIdZeroTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeAsAdminWithMenuIdZeroTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_Users::getIdentity()->beAdminPortail();
@@ -1083,14 +1104,16 @@ class RechercheControllerViewNoticeAsAdminWithMenuIdZeroTest extends RechercheCo
 
   /** @test */
   public function linkToConfigModulesRechercheShouldHaveActionViewNotice() {
-    $this->assertXPath('//a[contains(@href, "/admin/modules/recherche/config/site/type_module/recherche/id_profil/2/action1/viewnotice")]', $this->_response->getBody());
+    $this->assertXPath('//a[contains(@href, "/admin/modules/recherche/config/site/type_module/recherche/id_profil/2/action1/viewnotice")]');
   }
 }
 
 
 
 
-class RechercheControllerViewNoticeAndResnumeriqueTabAsAdminTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeAndResnumeriqueTabAsAdminTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_Users::getIdentity()->beAdminPortail();
@@ -1169,7 +1192,7 @@ class RechercheControllerViewNoticeAndResnumeriqueTabAsAdminTest extends Recherc
          ->setBarreNavOn(true)
          ->setCfgModules(['recherche' => ['viewnotice1' => $preferences]])
          ->beCurrentProfil();
-    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/viewnotice/id/%d', $this->notice->getId()));
   }
 
 
@@ -1178,6 +1201,7 @@ class RechercheControllerViewNoticeAndResnumeriqueTabAsAdminTest extends Recherc
     $this->assertXPathContentContains('//div[@class="resnumeriques block_info_notice"]//h2', 'Ressources nu');
   }
 
+
   /** @test */
   public function babelBlocShouldBePresent() {
     $this->assertXPathContentContains('//div[@class="babeltheque block_info_notice"]//h2', 'Bab Tech');
@@ -1186,7 +1210,10 @@ class RechercheControllerViewNoticeAndResnumeriqueTabAsAdminTest extends Recherc
 
 
 
-class RechercheControllerViewNoticeAndRecountsTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControllerViewNoticeAndRecountsTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_Users::getIdentity()->beAdminPortail();
@@ -1277,22 +1304,24 @@ class RechercheControllerViewNoticeAndRecountsTest extends RechercheControllerNo
                    ['id' => 12,
                     'type_doc' => Class_TypeDoc::LIVRE,
                     'unimarc' => file_get_contents(ROOT_PATH . 'tests/fixtures/mobiclic.uni')]);
-    $this->dispatch('recherche/viewnotice/id/12', true);
+    $this->dispatch('recherche/viewnotice/id/12');
   }
 
 
   /** @test */
   public function recountsTabShouldBePresent() {
-    $this->assertXpathContentContains('//div//h2', 'Depouillements', $this->_response->getBody());
+    $this->assertXpathContentContains('//div//h2', 'Depouillements');
   }
 }
 
 
 
+
 class RechercheControllerReadNoticeTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch(sprintf('recherche/readnotice/id/%d', $this->notice->getId()), true);
+    $this->dispatch(sprintf('recherche/readnotice/id/%d', $this->notice->getId()));
   }
 
 
@@ -1315,7 +1344,10 @@ class RechercheControllerReadNoticeTest extends RechercheControllerNoticeTestCas
 
 
 
-abstract class RechercheAvanceeControllerSimpleActionTestCase extends RechercheControllerNoticeTestCase {
+
+abstract class RechercheAvanceeControllerSimpleActionTestCase
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::newInstanceWithId('FACETTE_TYPE_DOC_LIBELLE', ['valeur' => 'Type de document']);
@@ -1481,30 +1513,26 @@ class RechercheAvanceeControllerSimpleActionWithDefaultConfigTest
 
   /** @test */
   public function tagsCloudLevel5ShouldBePresent() {
-    $this->assertXPath('//a[contains(@class,"nuage_niveau5")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//a[contains(@class,"nuage_niveau5")]');
   }
 
 
   /** @test */
   public function tagsCloudLevel10ShouldBePresent() {
-    $this->assertXPath('//a[contains(@class,"nuage_niveau10")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//a[contains(@class,"nuage_niveau10")]');
   }
 
 
   /** @test */
   public function orderSelectShouldHaveLabel() {
-    $this->assertXPath('//label[@for="tri"]',
-                       $this->_response->getBody());
+    $this->assertXPath('//label[@for="tri"]');
   }
 
 
   /** @test */
   public function suggestsBoxShouldContainsLinkToReboundCD() {
     $this->assertXPathContentContains('//div[@class="suggests facette"]/ul/li/a[contains(@href, "code_rebond/M1355")]',
-                                      'CD (Sujet)',
-                                      $this->_response->getBody());
+                                      'CD (Sujet)');
   }
 
 
@@ -1529,7 +1557,9 @@ class RechercheAvanceeControllerSimpleActionWithDefaultConfigTest
 
 
 
-abstract class RechercheControllerSimpleActionTestCase extends RechercheControllerNoticeTestCase {
+abstract class RechercheControllerSimpleActionTestCase
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::newInstanceWithId('FACETTE_TYPE_DOC_LIBELLE', ['valeur' => 'Type de document']);
@@ -1538,7 +1568,9 @@ abstract class RechercheControllerSimpleActionTestCase extends RechercheControll
 
 
 
-class RechercheControllerWithBookmarkableLibrariesDisabledTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerWithBookmarkableLibrariesDisabledTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('ENABLE_BOOKMARKABLE_LIBRARIES', 0);
@@ -1547,7 +1579,7 @@ class RechercheControllerWithBookmarkableLibrariesDisabledTest extends Recherche
 
   /** @test */
   public function librariesBookmarksShouldNotBePresent() {
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/',true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/');
     $this->assertNotXPath('//div[contains(@class, "bookmarks_outer")]');
   }
 
@@ -1555,20 +1587,23 @@ class RechercheControllerWithBookmarkableLibrariesDisabledTest extends Recherche
   /** @test */
   public function withNoSessionManageYourBookmarksShouldNotBePresent() {
     ZendAfi_Auth::getInstance()->clearIdentity();
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/',true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/');
     $this->assertNotXPathContentContains('//div//p', 'Vous devez être connecté pour gérer vos favoris');
   }
 }
 
 
 
-class RechercheControllerSimpleActionWithDefaultConfigTest extends RechercheControllerSimpleActionTestCase {
+
+class RechercheControllerSimpleActionWithDefaultConfigTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
 
     Class_Profil::getCurrentProfil()->setCfgModules([]);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur asc',true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur asc');
   }
 
 
@@ -1619,11 +1654,13 @@ class RechercheControllerSimpleActionWithDefaultConfigTest extends RechercheCont
 
 
 
-class RechercheControllerIndexActionTestWithParamQ extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerIndexActionTestWithParamQ
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
 
-    $this->dispatch('/recherche/index?q=pomme',true);
+    $this->dispatch('/recherche/index?q=pomme');
   }
 
 
@@ -1636,14 +1673,16 @@ class RechercheControllerIndexActionTestWithParamQ extends RechercheControllerSi
 
 
 
-class RechercheControllerSimpleActionWithConfigWithoutSuggestionAchatAsAdminTest extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerSimpleActionWithConfigWithoutSuggestionAchatAsAdminTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
 
     Class_Profil::getCurrentProfil()->setCfgModules(['recherche' => ['resultatsimple' => ['suggestion_achat' => 0,
                                                                                           'liste_format' => 3]]]);
     Class_Users::getIdentity()->beAdminPortail();
-    $this->dispatch('/recherche/simple', true);
+    $this->dispatch('/recherche/simple');
   }
 
 
@@ -1662,27 +1701,31 @@ class RechercheControllerSimpleActionWithConfigWithoutSuggestionAchatAsAdminTest
 
 
 
-class RechercheControllerSimpleActionWithWrongParametersTest extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerSimpleActionWithWrongParametersTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
 
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/zork', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/zork');
   }
 
 
   /** @test */
   public function pageShouldDisplayResults() {
-    $this->assertXPathContentContains('//div', 'pomme', $this->_response->getBody());
+    $this->assertXPathContentContains('//div', 'pomme');
   }
 }
 
 
 
-class RechercheControllerSimpleActionWithNoResultsTest extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerSimpleActionWithNoResultsTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
 
-    $this->dispatch('/recherche/simple/expressionRecherche/%nuaisteauei', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/%nuaisteauei');
   }
 
 
@@ -1699,13 +1742,11 @@ class RechercheControllerSimpleActionWithNoResultsTest extends RechercheControll
 abstract class RechercheControllerSimpleActionListeFormatTestCase
   extends AbstractControllerTestCase {
 
-
   protected
     $_liste_format,
     $_search_term_editable = 0,
     $_nb_par_page = 10;
 
-
   public function setUp() {
     parent::setUp();
     Class_CosmoVar::newInstanceWithId('types_docs',
@@ -1755,7 +1796,8 @@ abstract class RechercheControllerSimpleActionListeFormatTestCase
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 1234,
-                    'libelle' => 'Chris Columbus']);
+                    'libelle' => 'Chris Columbus',
+                    'formes' => 'COLUMBUSxCHRIS']);
 
     $mock_sql = $this->mock()
                      ->whenCalled('fetchAll')
@@ -1768,7 +1810,9 @@ abstract class RechercheControllerSimpleActionListeFormatTestCase
 
 
 
-class RechercheControllerSimpleActionWithListeFormatMurTest extends RechercheControllerSimpleActionListeFormatTestCase {
+class RechercheControllerSimpleActionWithListeFormatMurTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
+
   protected
     $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR,
     $_nb_par_page = 5;
@@ -1776,14 +1820,14 @@ class RechercheControllerSimpleActionWithListeFormatMurTest extends RechercheCon
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('AUTHOR_PAGE', 0);
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2');
   }
 
 
   /** @test **/
   public function resumeNoticeLinkShouldBeReset() {
     $sql = Zend_Registry::get('sql');
-    $this->assertXPathContentContains('//head/script', "/noticeajax/resumenotice';", $this->_response->getBody());
+    $this->assertXPathContentContains('//head/script', "/noticeajax/resumenotice';");
   }
 
 
@@ -1831,8 +1875,7 @@ class RechercheControllerSimpleActionWithListeFormatMurTest extends RechercheCon
 
   /** @test */
   public function iconeSupportShouldHaveTitleDocTypeLivres() {
-    $this->assertXPath('//img[@class="icone_support"][@title="Type de document: Livres"]',
-                       $this->_response->getBody());
+    $this->assertXPath('//img[@class="icone_support"][@title="Type de document: Livres"]');
   }
 
 
@@ -1845,16 +1888,17 @@ class RechercheControllerSimpleActionWithListeFormatMurTest extends RechercheCon
 
 
 
-class RechercheControllerListeVignetteHTML5Test extends RechercheControllerSimpleActionListeFormatTestCase {
+class RechercheControllerListeVignetteHTML5Test
+  extends RechercheControllerSimpleActionListeFormatTestCase {
+
   protected
     $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES,
     $_nb_par_page = 5,
     $_search_term_editable = 1;
 
-
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2');
   }
 
 
@@ -1867,7 +1911,9 @@ class RechercheControllerListeVignetteHTML5Test extends RechercheControllerSimpl
 
 
 
-class RechercheControllerListeCodeWithNouveauteTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerListeCodeWithNouveauteTest
+  extends RechercheControllerNoticeTestCase {
+
   protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR;
 
   public function setUp() {
@@ -1897,9 +1943,10 @@ class RechercheControllerListeCodeWithNouveauteTest extends RechercheControllerN
                                                             'liste_codes' => "TAN9"]]]);
   }
 
+
   /** @test **/
   public function pageShouldContainsNoticeWithDivNouveauté() {
-    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/facette/T1/', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/facette/T1/');
 
     $this->assertXPathContentContains('//div[@class="liste_mur"]//div[@class="notice"]//span[@class="notice_nouveaute"]','Nouveauté');
   }
@@ -1907,7 +1954,7 @@ class RechercheControllerListeCodeWithNouveauteTest extends RechercheControllerN
 
   /** @test */
   public function withFacetsT1OrT4NoticeNouvelleAnneeShouldBeFind() {
-    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/multifacets/T1-T4/', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/multifacets/T1-T4/');
 
     $this->assertXPathContentContains('//div[@class="notice"]//span[@class="notice_titre"]/a', 'Nouvelle année');
   }
@@ -1915,9 +1962,10 @@ class RechercheControllerListeCodeWithNouveauteTest extends RechercheControllerN
 
 
 
+
 class RechercheControllerFacetteSelectedTest extends AbstractControllerTestCase {
+
   protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR;
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -1949,7 +1997,7 @@ class RechercheControllerFacetteSelectedTest extends AbstractControllerTestCase
       ->answers($records);
 
 
-    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/facette/T1', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/hello/tri/%2A/facette/T1');
   }
 
 
@@ -1979,7 +2027,10 @@ class RechercheControllerFacetteSelectedTest extends AbstractControllerTestCase
 
 
 
-class RechercheControllerSimpleActionLibelleFacetteTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControllerSimpleActionLibelleFacetteTest
+  extends RechercheControllerNoticeTestCase {
+
   protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR;
 
   public function setup() {
@@ -2073,15 +2124,15 @@ class RechercheControllerSimpleActionLibelleFacetteTest extends RechercheControl
 
 
 
-class RechercheControllerSimpleActionWithListeFormatVignettesTest extends RechercheControllerSimpleActionListeFormatTestCase {
-  protected
-    $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES;
+class RechercheControllerSimpleActionWithListeFormatVignettesTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
 
+  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES;
 
   public function setUp() {
     parent::setUp();
     Class_Notice::find(15)->set_subfield(225, 'a', 'Collection potter');
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facettes/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facettes/B1/page/2');
   }
 
 
@@ -2093,7 +2144,7 @@ class RechercheControllerSimpleActionWithListeFormatVignettesTest extends Recher
 
   /** @test */
   public function linkAddToCartShouldBePresent() {
-    $this->assertXPath('//div[@class="vignette_lien_panier"]//a[contains(@href, "/panier/add-record-ajax/id_notice/")][@data-popup="true"]',$this->_response->getBody());
+    $this->assertXPath('//div[@class="vignette_lien_panier"]//a[contains(@href, "/panier/add-record-ajax/id_notice/")][@data-popup="true"]');
   }
 
 
@@ -2102,11 +2153,13 @@ class RechercheControllerSimpleActionWithListeFormatVignettesTest extends Recher
     $this->assertXPath('//div[@class="liste_vignettes"]');
   }
 
+
   /** @test */
   public function pageShouldContainsTdAnnee() {
     $this->assertXPathContentContains('//div[@class="liste_vignettes"]//dt', 'Année');
   }
 
+
   /** @test */
   public function pageShouldContainsTdEditeur() {
     $this->assertXPathContentContains('//div[@class="liste_vignettes"]//dt', 'Editeur');
@@ -2140,10 +2193,10 @@ class RechercheControllerSimpleActionWithListeFormatVignettesTest extends Recher
 
 
 
-class RechercheControllerSimpleActionWithListeFormatVignettesHtml5ValidTest extends RechercheControllerSimpleActionListeFormatTestCase {
-  protected
-    $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES;
+class RechercheControllerSimpleActionWithListeFormatVignettesHtml5ValidTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
 
+  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES;
 
   public function setUp() {
     parent::setUp();
@@ -2153,7 +2206,7 @@ class RechercheControllerSimpleActionWithListeFormatVignettesHtml5ValidTest exte
                                                             'liste_nb_par_page' => 5,
                                                             'search_term_editable' => $this->_search_term_editable]]]);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facettes/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facettes/B1/page/2');
   }
 
 
@@ -2165,13 +2218,15 @@ class RechercheControllerSimpleActionWithListeFormatVignettesHtml5ValidTest exte
 
 
 
-class RechercheControllerSimpleActionWithListeFormatChronoTest extends RechercheControllerSimpleActionListeFormatTestCase {
+
+class RechercheControllerSimpleActionWithListeFormatChronoTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
 
   protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_CHRONO;
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2');
   }
 
 
@@ -2190,14 +2245,14 @@ class RechercheControllerSimpleActionWithListeFormatChronoTest extends Recherche
   /** @test */
   public function createStoryJSFunctionShouldBeIncluded() {
     $this->assertXPathContentContains('//script', 'createStoryJS');
-    $this->assertXPathContentContains('//script', '"embed_id":"liste_chrono_3"', $this->_response->getBody());
+    $this->assertXPathContentContains('//script', '"embed_id":"liste_chrono_3"');
   }
 
 
   /** @test */
   public function withListeFormat3InUrlShouldDisplayWithModeVignettes() {
     $this->bootstrap();
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2/liste_format/3', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2/liste_format/3');
     $this->assertXPath('//div[@class="liste_vignettes"]');
   }
 }
@@ -2205,13 +2260,14 @@ class RechercheControllerSimpleActionWithListeFormatChronoTest extends Recherche
 
 
 
-class RechercheControllerSimpleActionWithListeFormatTableauTest extends RechercheControllerSimpleActionListeFormatTestCase {
-  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU;
+class RechercheControllerSimpleActionWithListeFormatTableauTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
 
+  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_TABLEAU;
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/potter/facettes/T1/facette/B1/page/2');
   }
 
 
@@ -2224,10 +2280,12 @@ class RechercheControllerSimpleActionWithListeFormatTableauTest extends Recherch
 
 
 
-class RechercheControllerSimpleByISBNActionTest extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerSimpleByISBNActionTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/expressionRecherche/2-203-00119-4', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/2-203-00119-4');
   }
 
 
@@ -2241,13 +2299,10 @@ class RechercheControllerSimpleByISBNActionTest extends RechercheControllerSimpl
 
 
 class RechercheControllerRebondTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = false;
 
   public function setUp() {
     parent::setUp();
-    $facettes = Class_Notice::findFirstBy(['where' => 'facettes>""'])->getFacettes();
-    $code_rebond = explode(' ', trim($facettes))[0];
-    $this->dispatch('/recherche/simple/expressionRecherche/Potter/code_rebond/'.$code_rebond.'/tri/alpha_titre asc', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/Potter/code_rebond/T1/tri/alpha_titre asc');
   }
 
 
@@ -2261,16 +2316,14 @@ class RechercheControllerRebondTest extends AbstractControllerTestCase {
   /** @test */
   public function lienRetourRechercheInitialeShouldBeRechercheSimple() {
     $this->assertXPathContentContains('//a[@href="/recherche/saisie/expressionRecherche/Potter/tri/alpha_titre+asc"]',
-                                      'Retour',
-                                      $this->_response->getBody());
+                                      'Retour');
   }
 
 
   /** @test */
   public function lienNouvelleRechercheShouldBeRechercheSimple() {
     $this->assertXPathContentContains('//a[@href="/recherche/simple"]',
-                                      'Nouvelle recherche',
-                                      $this->_response->getBody());
+                                      'Nouvelle recherche');
   }
 }
 
@@ -2278,16 +2331,16 @@ class RechercheControllerRebondTest extends AbstractControllerTestCase {
 
 
 class RechercheControllerRebondWithFacettesTest extends AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/expressionRecherche/france/facette/T1/tri/alpha_titre/page/2', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/france/facette/T1/tri/alpha_titre/page/2');
   }
 
 
   /** @test */
   public function rebondUrlShouldNotContainsFacettesAndPage() {
-    $this->assertXPath("//div[@class=\"nuage\"]//a[contains(@href,'/recherche/simple/expressionRecherche/france/tri/alpha_titre/code_rebond/')]",
-                       $this->_response->getBody());
+    $this->assertXPath("//div[@class=\"nuage\"]//a[contains(@href,'/recherche/simple/expressionRecherche/france/tri/alpha_titre/code_rebond/')]");
   }
 }
 
@@ -2295,11 +2348,10 @@ class RechercheControllerRebondWithFacettesTest extends AbstractControllerTestCa
 
 
 class RechercheControllerGuideeTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
-
-
     $this->mock_sql = $this->mock();
 
     Zend_Registry::set('sql', $this->mock_sql);
@@ -2315,21 +2367,19 @@ class RechercheControllerGuideeTest extends RechercheControllerNoticeTestCase {
                   'nb_notices' => 0]]
       )->beStrict();
 
-
     Class_CodifDewey::newInstanceWithId(66, ['libelle' => 'Generalites']);
     Class_CodifDewey::newInstanceWithId(77, ['libelle' => 'Arts']);
 
     Class_AdminVar::newInstanceWithId('FACETTE_DEWEY_LIBELLE', ['valeur' => 'Bouquins']);
 
-    $this->dispatch('/recherche/simple/rubrique/X1/fil/;X1', true);
+    $this->dispatch('/recherche/simple/rubrique/X1/fil/;X1');
   }
 
 
   /** @test */
   public function indiceShouldBeDisplayed() {
     $this->assertXPathContentContains("//a[contains(@href,'recherche/simple/rubrique/X1')]",
-                                      'Bouquins',
-                                      $this->_response->getBody());
+                                      'Bouquins');
   }
 
 
@@ -2349,6 +2399,7 @@ class RechercheControllerGuideeTest extends RechercheControllerNoticeTestCase {
 
 
 class RechercheControllerGuideeHomePageTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2377,7 +2428,6 @@ class RechercheControllerGuideeHomePageTest extends RechercheControllerNoticeTes
       ->with('select libelle from codif_dewey where id_dewey=\'77\'')
       ->answers('Arts')->beStrict();
 
-
     Class_AdminVar::newInstanceWithId('FACETTE_DEWEY_LIBELLE', ['valeur' => 'Bouquins']);
     Class_AdminVar::newInstanceWithId('FACETTE_PCDM4_LIBELLE', ['valeur' => 'Zic']);
 
@@ -2402,7 +2452,9 @@ class RechercheControllerGuideeHomePageTest extends RechercheControllerNoticeTes
 
 
 
-abstract class RechercheControllerSearchResultGuideeFixtures extends RechercheControllerNoticeTestCase {
+abstract class RechercheControllerSearchResultGuideeFixtures
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2442,7 +2494,6 @@ abstract class RechercheControllerSearchResultGuideeFixtures extends RechercheCo
       ->whenCalled('getNomChamp')
       ->answers('champ');
 
-
     $this->mock_moteur_recherche
       ->whenCalled('lancerRecherche')
       ->willDo(
@@ -2472,18 +2523,19 @@ abstract class RechercheControllerSearchResultGuideeFixtures extends RechercheCo
       ->with('select libelle from codif_dewey where id_dewey=\'77\'')
       ->answers('Arts')->beStrict();
 
-
-
     Zend_Registry::set('sql', $this->mock_sql);
   }
 }
 
 
 
-class RechercheControllerGuideeWithFiltersSelectedTest extends RechercheControllerSearchResultGuideeFixtures {
+
+class RechercheControllerGuideeWithFiltersSelectedTest
+  extends RechercheControllerSearchResultGuideeFixtures {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/rubrique/D66/facette/A19684', true);
+    $this->dispatch('/recherche/simple/rubrique/D66/facette/A19684');
   }
 
 
@@ -2498,20 +2550,23 @@ class RechercheControllerGuideeWithFiltersSelectedTest extends RechercheControll
 
 
 class RechercheControllerWithPanierTest extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
-    $this->onLoaderOfModel('Class_Notice')
+    $this->onLoaderOfModel(Class_Notice::class)
       ->whenCalled('findAllByRequeteRecherche')
       ->answers([Class_Notice::newInstanceWithId(1,
                                                  ['clef_alpha'=>'COMBAT ORDINAIRE']),
                  Class_Notice::newInstanceWithId(12,
-                                                 ['clef_alpha'=>'tarzan'])]);
+                                                 ['clef_alpha'=>'tarzan'])])
+
+         ->whenCalled('findAllByClefAlphaStartingWith')
+         ->answers([]);
 
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' => ['resultatsimple' => ['liste_nb_par_page' => 1]]]);
 
-
     $this->mock_sql
       ->whenCalled('fetchAll')
       ->with("select id_notice, facettes from notices Where (notices.clef_alpha in('COMBAT ORDINAIRE', 'BLACKSAD')) and type=1 order by FIELD(notices.clef_alpha, 'COMBAT ORDINAIRE', 'BLACKSAD')", true, false)
@@ -2526,7 +2581,8 @@ class RechercheControllerWithPanierTest extends RechercheControllerNoticeTestCas
                                                               'libelle' => 'Mes BD',
                                                               'date_maj' => '10/02/2011',
                                                               'notices' => 'COMBAT ORDINAIRE;BLACKSAD']);
-    $this->dispatch('/recherche/simple/id_panier/2/retour_panier/2', true);
+
+    $this->dispatch('/recherche/simple/id_panier/2/retour_panier/2');
   }
 
 
@@ -2544,8 +2600,7 @@ class RechercheControllerWithPanierTest extends RechercheControllerNoticeTestCas
 
   /** @test */
   public function urlPage2ShouldBeRechercheSimpleWithIdPanerAndRetourAndPage2() {
-    $this->assertXPath('//a[contains(@href,"/recherche/simple/id_panier/2/retour_panier/2/page/2")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//a[contains(@href,"/recherche/simple/id_panier/2/retour_panier/2/page/2")]');
   }
 
 
@@ -2557,7 +2612,10 @@ class RechercheControllerWithPanierTest extends RechercheControllerNoticeTestCas
 
 
 
-class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest extends RechercheControllerSimpleActionTestCase {
+
+class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_CodifThesaurus::beVolatile();
@@ -2643,7 +2701,6 @@ class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest ext
                                    'id_module' => 10,
                                   ]);
 
-
     $this->fixture('Class_Catalogue',
                    ['id'=>4,
                     'libelle' => 'A',
@@ -2656,7 +2713,7 @@ class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest ext
 
   /** @test **/
   public function onRechercheSimpleCatalogue3IdModule9LibelleNouveautesShouldBeDisplay() {
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9');
     $this->assertXPathContentContains('//div[@class="expression-recherche"]',
                                       'Nouveautés');
   }
@@ -2664,29 +2721,28 @@ class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest ext
 
   /** @test **/
   public function onRechercheSimpleCatalogue3IdModule9OrderByTitreShouldBeOrderByTitle() {
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/tri/alpha_titre asc', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/tri/alpha_titre asc');
     $this->assertXPath('//select[@name="tri"]//option[@value="alpha_titre asc"][@selected="selected"]');
   }
 
 
   /** @test */
   public function onRechercheSimpleCatalogue3IdModule9BreadcrumbShouldBeDisplayed() {
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9', true);
-    $this->assertXPath('//div[@class="domains liste_mur"]//div[@class="breadcrumb"]//a[@href="/"]',
-                       $this->_response->getBody());
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9');
+    $this->assertXPath('//div[@class="domains liste_mur"]//div[@class="breadcrumb"]//a[@href="/"]');
   }
 
 
   /** @test */
   public function onRechercheSimpleCatalogue3IdModule9BreadcrumbPageShouldBeHtml5Valid() {
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/liste_format/4', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/liste_format/4');
     $this->assertHTML5();
   }
 
 
   /** @test */
   public function onRechercheSimpleCatalogue3IdModule10BreadcrumbShouldNotBeDisplayed() {
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/10', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/10');
     $this->assertNotXPath('//div[@class="domains liste_mur"]//div[@class="breadcrumb"]');
   }
 }
@@ -2694,7 +2750,9 @@ class RechercheControllerSimpleActionWithCatalogueAndDomainBrowserWidgetTest ext
 
 
 
-class RechercheControllerSimpleActionWithCatalogueAndNoParentsTest extends RechercheControllerSimpleActionTestCase {
+class RechercheControllerSimpleActionWithCatalogueAndNoParentsTest
+  extends RechercheControllerSimpleActionTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_CodifThesaurus::beVolatile();
@@ -2718,7 +2776,7 @@ class RechercheControllerSimpleActionWithCatalogueAndNoParentsTest extends Reche
 
     Class_Profil::getCurrentProfil()->setCfgModules(['recherche' => ['resultatsimple' => ['search_term_editable' => 0]]]);
 
-    $this->dispatch('/recherche/simple/id_catalogue/3', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3');
   }
 
 
@@ -2733,6 +2791,7 @@ class RechercheControllerSimpleActionWithCatalogueAndNoParentsTest extends Reche
     $this->assertXPathContentContains('//div[@class="criteres_recherche"]//a[@href="/recherche/simple"]', "Nouveautés");
   }
 
+
   /** @test */
   public function catalogueBreadcrumbShouldNotDisplay() {
     $this->assertNotXPath('//div[@class="liste_mur breadcrumb_domains"]');
@@ -2741,7 +2800,10 @@ class RechercheControllerSimpleActionWithCatalogueAndNoParentsTest extends Reche
 
 
 
-class RechercheControllerActionSimpleWithResetTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControllerActionSimpleWithResetTest
+  extends RechercheControllerNoticeTestCase {
+
   /** @test */
   public function responseShouldRedirectToActionSaisie() {
     $this->dispatch('/recherche/simple/statut/reset');
@@ -2752,9 +2814,9 @@ class RechercheControllerActionSimpleWithResetTest extends RechercheControllerNo
 
 
 
+class RechercheControllerGuideeThesaurusTest
+  extends RechercheControllerNoticeTestCase {
 
-
-class RechercheControllerGuideeThesaurusTest extends  RechercheControllerNoticeTestCase {
   public function setUp() {
     parent::setUp();
 
@@ -2810,9 +2872,10 @@ class RechercheControllerGuideeThesaurusTest extends  RechercheControllerNoticeT
 
 
 
-class RechercheControllerAjoutNoticePanierUrlMurTest extends RechercheControllerSimpleActionListeFormatTestCase {
-  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR;
+class RechercheControllerAjoutNoticePanierUrlMurTest
+  extends RechercheControllerSimpleActionListeFormatTestCase {
 
+  protected $_liste_format = Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR;
 
   public function setUp() {
     parent::setUp();
@@ -2824,7 +2887,7 @@ class RechercheControllerAjoutNoticePanierUrlMurTest extends RechercheController
                     'langue' => 'fr',
                     'indexer' => true]);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur asc', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur asc');
   }
 
 
@@ -3098,43 +3161,45 @@ class RechercheControllerNavigationTest extends RechercheControllerNoticeTestCas
       ->answers([28,12,345,1,99]);
   }
 
+
   /** @test */
   public function navigationSuivantShouldRedirectToBatmanViewnotice() {
-    $this->dispatch('/recherche/viewnotice/id/345/tri/alpha_titre/navigation/suivant',true);
+    $this->dispatch('/recherche/viewnotice/id/345/tri/alpha_titre/navigation/suivant');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/1/tri/alpha_titre|');
   }
 
 
   /** @test */
   public function navigationPrecedentShouldRedirectToTarzanViewnotice() {
-    $this->dispatch('/recherche/viewnotice/id/345/tri/alpha_titre/navigation/precedent',true);
+    $this->dispatch('/recherche/viewnotice/id/345/tri/alpha_titre/navigation/precedent');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/12/tri/alpha_titre|');
   }
 
+
   /** @test */
   public function navigationPrecedentOnTheFirstNoticeMussoOfResultatRechercheShouldRedirectToMusso() {
-    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/precedent',true);
+    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/precedent');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/28/tri/alpha_titre|');
   }
 
 
   /** @test */
   public function navigationSuivantOnTheLastNoticeLesArbresOfResultatRechercheShouldRedirectToLesarbres() {
-    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/suivant',true);
+    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/suivant');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/99/tri/alpha_titre|');
   }
 
 
   /** @test */
   public function navigationSuivantOnTheFirstNoticeMussoOfResultatRechercheShouldRedirectToTarzan() {
-    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/suivant',true);
+    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/suivant');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/12/tri/alpha_titre|');
   }
 
 
   /** @test */
   public function navigationPrecedentOnTheLastNoticeLesarbresOfResultatRechercheShouldRedirectToBatman() {
-    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/precedent',true);
+    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/precedent');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/1/tri/alpha_titre|');
   }
 
@@ -3147,7 +3212,7 @@ class RechercheControllerNavigationTest extends RechercheControllerNoticeTestCas
       ->answers([]);
 
 
-    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/suivant',true);
+    $this->dispatch('/recherche/viewnotice/id/99/tri/alpha_titre/navigation/suivant');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/99/tri/alpha_titre|');
   }
 
@@ -3159,7 +3224,7 @@ class RechercheControllerNavigationTest extends RechercheControllerNoticeTestCas
       ->with('select id_notice, facettes from notices Where type=1 order by alpha_titre', true, false)
       ->answers([ [28, '' ] ]);
 
-    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/suivant',true);
+    $this->dispatch('/recherche/viewnotice/id/28/tri/alpha_titre/navigation/suivant');
     $this->assertRedirectRegex('|/recherche/viewnotice/id/28/tri/alpha_titre|');
   }
 }
@@ -3167,8 +3232,8 @@ class RechercheControllerNavigationTest extends RechercheControllerNoticeTestCas
 
 
 
-
-class RechercheControllerViewNoticeWhichIsInMyPanier extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewNoticeWhichIsInMyPanier
+  extends RechercheControllerNoticeTestCase {
 
   public function setup() {
     parent::setup();
@@ -3252,14 +3317,16 @@ class RechercheControllerViewNoticeWhichIsInMyPanier extends RechercheController
 
 
 
-class RechercheControllerSuggestAjaxActionTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerSuggestAjaxActionTest
+  extends RechercheControllerNoticeTestCase {
+
   /** @test */
   public function suggestForHarryPotterShouldNotBeEmpty() {
     Class_Autocomplete_Index::setSearcher(
                                           $this->mock()
                                           ->whenCalled('search')->answers(['Harry à la plage']));
 
-    $this->dispatch('/opac/recherche/suggestajax/startsWith/harry+potter', true);
+    $this->dispatch('/opac/recherche/suggestajax/startsWith/harry+potter');
     $response = json_decode($this->_response->getBody());
     $this->assertFalse(empty($response));
   }
@@ -3268,7 +3335,9 @@ class RechercheControllerSuggestAjaxActionTest extends RechercheControllerNotice
 
 
 
-class RechercheControllerViewnoticeWithPreferencesFromOtheProfile extends RechercheControllerNoticeTestCase {
+class RechercheControllerViewnoticeWithPreferencesFromOtheProfile
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3282,14 +3351,13 @@ class RechercheControllerViewnoticeWithPreferencesFromOtheProfile extends Recher
                    ['id' => 15])
          ->setCfgModules(['recherche' => ['viewnotice1' => $locale_pref]]);
 
-    $this->dispatch('/opac/recherche/viewnotice/id_profil/15/id_module/2-4/id/345/id_catalogue/8', true);
+    $this->dispatch('/opac/recherche/viewnotice/id_profil/15/id_module/2-4/id/345/id_catalogue/8');
   }
 
 
   /** @test */
   public function docTypeShouldBePresent() {
-    $this->assertXPathContentContains('//div[@class="entete_notice"]//dd', '2002',
-                                      $this->_response->getBody());
+    $this->assertXPathContentContains('//div[@class="entete_notice"]//dd', '2002');
   }
 
 
@@ -3307,7 +3375,10 @@ class RechercheControllerViewnoticeWithPreferencesFromOtheProfile extends Recher
 
 
 
-abstract class RechercheControllerViewnoticeWithBreadcrumbTestCase extends RechercheControllerNoticeTestCase {
+
+abstract class RechercheControllerViewnoticeWithBreadcrumbTestCase
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3318,10 +3389,13 @@ abstract class RechercheControllerViewnoticeWithBreadcrumbTestCase extends Reche
 
 
 
-class RechercheControllerViewnoticeWithBreadcrumbAndParamsTest extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
+class RechercheControllerViewnoticeWithBreadcrumbAndParamsTest
+  extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
   /** @test */
   public function breadcrumbShouldContainsMyTitle() {
-    $this->dispatch('recherche/viewnotice/id/345/titre/my-title', true);
+    $this->dispatch('recherche/viewnotice/id/345/titre/my-title');
     $this->assertXPathContentContains('//div[@class="barre_nav"]//span', 'my-title');
   }
 
@@ -3333,7 +3407,7 @@ class RechercheControllerViewnoticeWithBreadcrumbAndParamsTest extends Recherche
       ->with("select * from codif_dewey where id_dewey like '2%' and LENGTH(id_dewey)=2 order by id_dewey")
       ->answers([]);
 
-    $this->dispatch('recherche/viewnotice/id/345/rubrique/D2', true);
+    $this->dispatch('recherche/viewnotice/id/345/rubrique/D2');
     $this->assertXPathContentContains('//div[@class="barre_nav"]//span', 'Recherche guidée');
   }
 }
@@ -3341,7 +3415,9 @@ class RechercheControllerViewnoticeWithBreadcrumbAndParamsTest extends Recherche
 
 
 
-class RechercheControllerViewnoticeWithBreadcrumbAndIdModuleParamTest extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+class RechercheControllerViewnoticeWithBreadcrumbAndIdModuleParamTest
+  extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3351,7 +3427,7 @@ class RechercheControllerViewnoticeWithBreadcrumbAndIdModuleParamTest extends Re
                                                   'preferences' => ['titre' => 'my kiosk']]]])
            ->save();
 
-    $this->dispatch('recherche/viewnotice/id/345/id_module/18-8', true);
+    $this->dispatch('recherche/viewnotice/id/345/id_module/18-8');
   }
 
 
@@ -3371,12 +3447,14 @@ class RechercheControllerViewnoticeWithBreadcrumbAndIdModuleParamTest extends Re
   public function titlePageShouldBeAsExpected() {
     $this->assertXPathContentContains('//title', '- my kiosk - Cinéma d\'animation');
   }
-
 }
 
 
 
-class RechercheControllerViewnoticeWithBreadcrumbAndIdCatalogueParamTest extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
+class RechercheControllerViewnoticeWithBreadcrumbAndIdCatalogueParamTest
+  extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3384,7 +3462,7 @@ class RechercheControllerViewnoticeWithBreadcrumbAndIdCatalogueParamTest extends
                    ['id'=> 2,
                     'libelle' => 'my catalogue']);
 
-    $this->dispatch('recherche/viewnotice/id/345/id_catalogue/2', true);
+    $this->dispatch('recherche/viewnotice/id/345/id_catalogue/2');
   }
 
 
@@ -3396,14 +3474,17 @@ class RechercheControllerViewnoticeWithBreadcrumbAndIdCatalogueParamTest extends
 
 
 
-class RechercheControllerViewnoticeWithBreadcrumbAndIdPanierParamTest extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
+class RechercheControllerViewnoticeWithBreadcrumbAndIdPanierParamTest
+  extends RechercheControllerViewnoticeWithBreadcrumbTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->fixture('Class_PanierNotice',
                    ['id'=> 2,
                     'libelle' => 'my panier']);
 
-    $this->dispatch('recherche/viewnotice/id/345/id_panier/2', true);
+    $this->dispatch('recherche/viewnotice/id/345/id_panier/2');
   }
 
 
@@ -3415,14 +3496,15 @@ class RechercheControllerViewnoticeWithBreadcrumbAndIdPanierParamTest extends Re
 
   /** @test */
   public function pageTitleShouldBeAsExpected() {
-    $this->assertXPathContentContains('//head', 'my panier - Cinéma d\'animation', $this->_response->getBody());
+    $this->assertXPathContentContains('//head', 'my panier - Cinéma d\'animation');
   }
 }
 
 
 
-class RechercheControllerSimpleActionWithEmptyDomainSettingsTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+
+class RechercheControllerSimpleActionWithEmptyDomainSettingsTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -3432,15 +3514,14 @@ class RechercheControllerSimpleActionWithEmptyDomainSettingsTest extends Abstrac
                     'libelle' => 'Nouveautés',
                     'auteur' => 'Paul']);
 
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1');
   }
 
 
   /** @test */
   public function onRechercheSimpleCatalogue3IdModule9ResultsShouldBeEmpty() {
     $this->assertXPathContentContains('//div[@class="info-recherche"]',
-                                      'Aucun résultat trouvé',
-                                      $this->_response->getBody());
+                                      'Aucun résultat trouvé');
   }
 
 
@@ -3453,20 +3534,19 @@ class RechercheControllerSimpleActionWithEmptyDomainSettingsTest extends Abstrac
 
 
 
-class RechercheControllerNoResultOnSubscriberLinkTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
+class RechercheControllerNoResultOnSubscriberLinkTest
+  extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/retour_abonne/viewavis/retour_avis/8/page/2/id_module/8/code_rebond/G1', true);
+    $this->dispatch('/recherche/simple/retour_abonne/viewavis/retour_avis/8/page/2/id_module/8/code_rebond/G1');
   }
 
 
   /** @test */
   public function noResultMesssageShouldBeDisplay() {
     $this->assertXPathContentContains('//div[@class="resultat_recherche"]',
-                                      'Aucun résultat trouvé',
-                                      $this->_response->getBody());
+                                      'Aucun résultat trouvé');
   }
 
 
@@ -3479,7 +3559,9 @@ class RechercheControllerNoResultOnSubscriberLinkTest extends AbstractController
 
 
 
-class RechercheControllerSimpleActionWithEmptyDomainSettingsAndSiteLinkedTest extends RechercheControllerNoticeTestCase {
+class RechercheControllerSimpleActionWithEmptyDomainSettingsAndSiteLinkedTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->fixture('Class_Catalogue',
@@ -3513,7 +3595,7 @@ class RechercheControllerSimpleActionWithEmptyDomainSettingsAndSiteLinkedTest ex
                        ['resultatsimple' =>
                         ['liste_format' =>  Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR]]]);
 
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1');
   }
 
 
@@ -3537,10 +3619,13 @@ class RechercheControllerSimpleActionWithEmptyDomainSettingsAndSiteLinkedTest ex
 
 
 
-class RechercheControlleSimpleActionWithMultifacetsThesauriTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControlleSimpleActionWithMultifacetsThesauriTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
-      $this->fixture('Class_CodifThesaurus',
+    $this->fixture('Class_CodifThesaurus',
                    ['id' => 3,
                     'libelle' => 'Document',
                     'libelle_facette' => 'Document',
@@ -3548,7 +3633,7 @@ class RechercheControlleSimpleActionWithMultifacetsThesauriTest extends Recherch
                     'id_origine' => null,
                     'code' => 'DOCU']);
 
-      $this->fixture('Class_CodifThesaurus',
+    $this->fixture('Class_CodifThesaurus',
                    ['id' => 30,
                     'libelle' => 'Musique',
                     'libelle_facette' => 'Musique',
@@ -3606,13 +3691,12 @@ class RechercheControlleSimpleActionWithMultifacetsThesauriTest extends Recherch
       ->answers([Class_Notice::find(1)->toArray()])
       ->beStrict();
 
-
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' =>
                        ['resultatsimple' =>
                         ['liste_format' =>  Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR]]]);
 
-    $this->dispatch('/recherche/simple/multifacets/HDOCU0001-HDOCU0002-HDOCU00020001-HMUSI0001', true);
+    $this->dispatch('/recherche/simple/multifacets/HDOCU0001-HDOCU0002-HDOCU00020001-HMUSI0001');
   }
 
 
@@ -3624,7 +3708,10 @@ class RechercheControlleSimpleActionWithMultifacetsThesauriTest extends Recherch
 
 
 
-class RechercheControlleSimpleActionWithEmptyDomainSettingsAndArticlesLinkedTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControlleSimpleActionWithEmptyDomainSettingsAndArticlesLinkedTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3652,13 +3739,12 @@ class RechercheControlleSimpleActionWithEmptyDomainSettingsAndArticlesLinkedTest
       ->answers([Class_Notice::find(1)->toArray()])
       ->beStrict();
 
-
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' =>
                        ['resultatsimple' =>
                         ['liste_format' =>  Class_Systeme_ModulesAppli::LISTE_FORMAT_MUR]]]);
 
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1');
   }
 
 
@@ -3688,6 +3774,7 @@ class RechercheControlleSimpleActionWithEmptyDomainSettingsAndArticlesLinkedTest
 
 
 
+
 class RechercheControllerSimpleActionDisableSuggestionTest
   extends RechercheControllerNoticeTestCase {
 
@@ -3695,7 +3782,7 @@ class RechercheControllerSimpleActionDisableSuggestionTest
     parent::setUp();
     $this->fixture('Class_AdminVar', ['id' => 'DISABLE_SUGGESTIONS',
                                       'valeur' => '1']);
-    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur',true);
+    $this->dispatch('/recherche/simple/expressionRecherche/pomme/tri/alpha_auteur');
   }
 
 
@@ -3708,7 +3795,10 @@ class RechercheControllerSimpleActionDisableSuggestionTest
 
 
 
-class RechercheControlleSiteInResultAndModeThumbnailTest extends RechercheControllerNoticeTestCase {
+
+class RechercheControlleSiteInResultAndModeThumbnailTest
+  extends RechercheControllerNoticeTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -3735,13 +3825,12 @@ class RechercheControlleSiteInResultAndModeThumbnailTest extends RechercheContro
       ->answers([Class_Notice::find(1)->toArray()])
       ->beStrict();
 
-
     Class_Profil::getCurrentProfil()
       ->setCfgModules(['recherche' =>
                        ['resultatsimple' =>
                         ['liste_format' =>  Class_Systeme_ModulesAppli::LISTE_FORMAT_VIGNETTES]]]);
 
-    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1', true);
+    $this->dispatch('/recherche/simple/id_catalogue/3/id_module/9/aleatoire/1');
   }
 
 
@@ -3755,8 +3844,6 @@ class RechercheControlleSiteInResultAndModeThumbnailTest extends RechercheContro
 
 
 class RechercheControllerMultiFacettesTest extends RechercheControllerNoticeTestCase {
-  protected $_default_storm_to_volatile = true;
-
 
   /** @test */
   public function postShouldRedirectToMultifacetsT1T4() {
@@ -3819,8 +3906,8 @@ class RechercheControllerMultiFacettesTest extends RechercheControllerNoticeTest
 
 
 
+
 class RechercheControllerSimpleSearchTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -3842,7 +3929,7 @@ class RechercheControllerSimpleSearchTest extends AbstractControllerTestCase {
 
     Zend_Registry::set('sql', $this->mock_sql);
 
-    $this->dispatch('/opac/recherche/simple/expressionRecherche/*', true);
+    $this->dispatch('/opac/recherche/simple/expressionRecherche/*');
   }
 
 
@@ -3862,7 +3949,6 @@ class RechercheControllerSimpleSearchTest extends AbstractControllerTestCase {
 
 
 class RechercheControllerNoExtensionTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -3879,7 +3965,7 @@ class RechercheControllerNoExtensionTest extends AbstractControllerTestCase {
 
     Zend_Registry::set('sql', $this->mock_sql);
 
-    $this->dispatch('/opac/recherche/simple/expressionRecherche/La+vie+des+geeks', true);
+    $this->dispatch('/opac/recherche/simple/expressionRecherche/La+vie+des+geeks');
   }
 
 
@@ -3894,7 +3980,6 @@ class RechercheControllerNoExtensionTest extends AbstractControllerTestCase {
 
 class RechercheControllerSimpleAccentsSpeciauxTest extends AbstractControllerTestCase {
   protected $_notice;
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -3935,7 +4020,7 @@ class RechercheControllerSimpleAccentsSpeciauxTest extends AbstractControllerTes
 
     Zend_Registry::set('sql', $this->mock_sql);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/Dvořák', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/Dvořák');
   }
 
 
@@ -3949,8 +4034,6 @@ class RechercheControllerSimpleAccentsSpeciauxTest extends AbstractControllerTes
 
 
 class RechercheControllerWithEmptyPanierTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
diff --git a/tests/application/modules/push/controllers/WebkioskControllerTest.php b/tests/application/modules/push/controllers/WebkioskControllerTest.php
index fab8b4dd2779b7ff843466b57532cfe0896e2b99..9bb178777edb72ba02f1e28934fb9a6761a3e6db 100644
--- a/tests/application/modules/push/controllers/WebkioskControllerTest.php
+++ b/tests/application/modules/push/controllers/WebkioskControllerTest.php
@@ -16,14 +16,14 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 require_once 'AbstractControllerTestCase.php';
 require_once 'application/modules/push/controllers/WebkioskController.php';
 
 
 abstract class WebkioskControllerTestCase extends AbstractControllerTestCase {
-  protected 
+  protected
     $_resp,
     $_private_key ="-----BEGIN RSA PRIVATE KEY-----
 MIICWwIBAAKBgQCm1hgee4LI7ji06BkuV8O4XpxHe59n80Gge/r3uROj+Tuxx2AO
@@ -68,11 +68,11 @@ yIuUs1qpg+Vx0R+3VwIDAQAB
   public function getPublicKey(){
     return $this->_public_key;
   }
-  
+
   public function signUrl($action){
     $connector = new Class_Multimedia_Connector_Webkiosk();
-    openssl_sign($connector->dataFor($action), 
-                 $sign, 
+    openssl_sign($connector->dataFor($action),
+                 $sign,
                  $this->_private_key);
     return  base64_encode($sign);
   }
@@ -98,7 +98,7 @@ class WebkioskControllerGetAllBorrowersValidationTest extends WebkioskController
 
 
   /** @test */
-  public function responseShouldNotBeARedirect() {    
+  public function responseShouldNotBeARedirect() {
     $this->assertNotRedirect();
   }
 
@@ -119,7 +119,7 @@ class WebkioskControllerNoParameterTest extends WebkioskControllerJsonEncodeOnly
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -130,7 +130,7 @@ class WebkioskControllerNoParameterTest extends WebkioskControllerJsonEncodeOnly
     $this->_resp = $this->getResponseJsonDecode('get-all-borrowers');
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -150,7 +150,7 @@ class WebkioskControllerWebkioskDisabledTest extends WebkioskControllerJsonEncod
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -161,7 +161,7 @@ class WebkioskControllerWebkioskDisabledTest extends WebkioskControllerJsonEncod
     $this->_resp = $this->getResponseJsonDecode('get-all-borrowers?sign=' . urlencode($sign));
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -182,7 +182,7 @@ class WebkioskControllerInvalidSignatureTest extends WebkioskControllerJsonEncod
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -193,7 +193,7 @@ class WebkioskControllerInvalidSignatureTest extends WebkioskControllerJsonEncod
     $this->_resp = $this->getResponseJsonDecode('get-all-borrowers?sign=' . urlencode($sign));
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -214,7 +214,7 @@ class WebkioskControllerErrorCheckingSignatureTest extends WebkioskControllerJso
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -227,7 +227,7 @@ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm1hgee4LI
     $this->_resp = $this->getResponseJsonDecode('get-all-borrowers?sign=' . urlencode($sign));
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -249,7 +249,7 @@ class WebkioskControllerGetAllBorrowersNumberOfOccurencesReturnedTest extends We
       ->whenCalled('countBorrowers')
       ->answers(2)
       ->whenCalled('getBorrowersByPage')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -267,14 +267,14 @@ class WebkioskControllerGetAllBorrowersNumberOfOccurencesReturnedTest extends We
 
   /** @test */
   public function shouldHaveDateExportEqual2013_01_13() {
-    $date = new DateTime('2013-10-15 16:26:23'); 
+    $date = new DateTime('2013-10-15 16:26:23');
     $this->assertEquals($date->format('c'),$this->_resp->date_export);
   }
 }
 
 
 class WebkioskControllerFirstBorrowerReturnedIsLoasTest extends WebkioskControllerJsonEncodeOnlyTestCase {
- 
+
 
   public function setUp() {
     parent::setUp();
@@ -282,7 +282,7 @@ class WebkioskControllerFirstBorrowerReturnedIsLoasTest extends WebkioskControll
       ->whenCalled('countBorrowers')
       ->answers(2)
       ->whenCalled('getBorrowersByPage')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -298,7 +298,7 @@ class WebkioskControllerFirstBorrowerReturnedIsLoasTest extends WebkioskControll
     $this->assertEquals('Loas', $this->_resp->data[0]->nom);
   }
 
-  
+
   /** @test */
   public function shouldReturnedPasswordFisrtBorrowerIsLoas42Pat() {
     $this->assertEquals('loas42Pat', $this->_resp->data[0]->password);
@@ -327,9 +327,9 @@ class WebkioskControllerEncryptedDataTest extends WebkioskControllerJsonEncrypte
     parent::setUp();
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
-    
+
     Class_Multimedia_Connector_Renderer_Encrypt::setOpenssl(new OpensslTesting());
     Class_AdminVar::getLoader()
       ->newInstanceWithId('WEBKIOSK_KEY')
@@ -343,7 +343,7 @@ class WebkioskControllerEncryptedDataTest extends WebkioskControllerJsonEncrypte
   public function shouldHaveDataCryptedEqualsToto() {
     $this->assertEquals('toto', base64_decode($this->_resp->data_encrypted));
   }
-  
+
   /** @test */
   public function shouldHaveSymetricKeyEqual123456789() {
     $this->assertEquals('123456789', base64_decode($this->_resp->symetric_key));
@@ -351,11 +351,11 @@ class WebkioskControllerEncryptedDataTest extends WebkioskControllerJsonEncrypte
 }
 
 class OpensslTesting extends Class_Multimedia_Utils_OpensslUtil{
-  public function opensslSeal($data, &$sealed_data, &$env_keys, 
+  public function opensslSeal($data, &$sealed_data, &$env_keys,
                    $pub_key_ids){
     $sealed_data = 'toto';
     $env_keys[]= '123456789';
-                 
+
     return true;
   }
 }
@@ -369,7 +369,7 @@ class WebkioskControllerGetIncrementialBorrowersValidationTest extends WebkioskC
 
 
   /** @test */
-  public function responseShouldNotBeARedirect() {    
+  public function responseShouldNotBeARedirect() {
     $this->assertNotRedirect();
   }
 
@@ -394,7 +394,7 @@ class WebkioskControllerNoParameterDateMajGetIncrementialTest extends WebkioskCo
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getBorrowersModifiedAfter')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -408,7 +408,7 @@ class WebkioskControllerNoParameterDateMajGetIncrementialTest extends WebkioskCo
     $this->_resp = $this->getResponseJsonDecode('get-incremential-borrowers');
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -433,7 +433,7 @@ class WebkioskControllerNoParameterGetIncrementialTest extends WebkioskControlle
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getBorrowersModifiedAfter')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -447,7 +447,7 @@ class WebkioskControllerNoParameterGetIncrementialTest extends WebkioskControlle
     $this->_resp = $this->getResponseJsonDecode('get-incremential-borrowers?dateMaj=2012-01-01');
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataZero() {
     $this->assertEquals(0, count($this->_resp->data));
@@ -467,15 +467,16 @@ class WebkioskControllerGetIncrementialLastDateFullIntegrationBeforeTest extends
   }
 
   public function setUp() {
-        parent::setUp();
-        Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
+    parent::setUp();
+
+    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getBorrowersModifiedAfter')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getAllBorrowers')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
 
@@ -490,7 +491,7 @@ class WebkioskControllerGetIncrementialLastDateFullIntegrationBeforeTest extends
     $this->_resp = $this->getResponseJsonDecode('get-incremential-borrowers?sign=' . urlencode($sign).'&dateMaj=2012-01-01');
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataEqual2() {
     $this->assertEquals(2, count($this->_resp->data));
@@ -510,10 +511,9 @@ class WebkioskControllerGetIncrementialLastDateFullIntegrationAfterTest extends
 
   public function setUp() {
     parent::setUp();
-        parent::setUp();
-        Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
+    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getBorrowersModifiedAfter')
-      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(), 
+      ->answers([AbonneControllerWebkioskUsersFixtures::getLoas(),
                  AbonneControllerWebkioskUsersFixtures::getAmadou()]);
 
     Class_AdminVar::getLoader()
@@ -527,7 +527,7 @@ class WebkioskControllerGetIncrementialLastDateFullIntegrationAfterTest extends
     $this->_resp = $this->getResponseJsonDecode('get-incremential-borrowers?sign=' . urlencode($sign).'&dateMaj=2013-01-01 02:00:30');
   }
 
-  
+
   /** @test */
   public function shouldHaveNumberDataEqual2() {
     $this->assertEquals(2, count($this->_resp->data));
@@ -558,7 +558,7 @@ class AbonneControllerWebkioskUsersFixtures {
       ->setEmail('loas@mail.fr');
   }
 
- 
+
   public static function getAmadou() {
     return Class_Users::getLoader()->newInstanceWithId(11)
       ->beAbonneSIGB()
@@ -573,4 +573,4 @@ class AbonneControllerWebkioskUsersFixtures {
       ->setDateDebut('2029-01-01')
       ->setEmail('loas@mail.fr');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/application/modules/telephone/controllers/RechercheControllerHarryPotterTest.php b/tests/application/modules/telephone/controllers/RechercheControllerHarryPotterTest.php
index af4043e1202a62184ff5917e5453222dc1290d31..ee7b41d9872511e39a4b8db0e1f29d3760136132 100644
--- a/tests/application/modules/telephone/controllers/RechercheControllerHarryPotterTest.php
+++ b/tests/application/modules/telephone/controllers/RechercheControllerHarryPotterTest.php
@@ -24,9 +24,7 @@ require_once 'TelephoneAbstractControllerTestCase.php';
 abstract class Telephone_RechercheControllerHarryPotterTestCase
   extends TelephoneAbstractControllerTestCase {
 
-  protected
-    $_storm_default_to_volatile = true,
-    $_summary;
+  protected $_summary;
 
   public function setUp() {
     parent::setUp();
@@ -43,14 +41,10 @@ abstract class Telephone_RechercheControllerHarryPotterTestCase
       ->zoneWithChildren('461', ['v' => '5'])
       ->zoneWithChildren('700', ['a' => 'Rowling', 'b' => 'J.K.']);
 
-    $this->fixture('Class_CodifAuteur',
+    $this->fixture(Class_CodifAuteur::class,
                    ['id' => 12,
-                    'libelle' => 'J.K Rowling']);
-
-    $this->onLoaderOfModel('Class_CodifAuteur')
-         ->whenCalled('findWithFullName')
-         ->with('J.K Rowling')
-         ->answers(Class_CodifAuteur::find(12));
+                    'libelle' => 'J.K. Rowling',
+                    'formes' => 'JxKxxROWLING']);
 
     $potter = Class_Notice::getLoader()
       ->newInstanceWithId(4)
@@ -79,10 +73,13 @@ abstract class Telephone_RechercheControllerHarryPotterTestCase
 
 
 
-class Telephone_RechercheControllerHarryPotterViewNoticeTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterViewNoticeTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/telephone/recherche/viewnotice/id/4', true);
+
+    $this->dispatch('/telephone/recherche/viewnotice/id/4');
   }
 
 
@@ -172,7 +169,7 @@ class Telephone_RechercheControllerHarryPotterViewNoticeTest extends Telephone_R
 
   /** @test */
   public function pageShouldContainsLinkToNoticesMemeSerie() {
-    $this->assertXPathContentContains('//a[contains(@href, "recherche/simple/serie/HARRY+POTTER")]', 'tomes d\'Harry Potter',$this->_response->getBody());
+    $this->assertXPathContentContains('//a[contains(@href, "recherche/simple/serie/HARRY+POTTER")]', 'tomes d\'Harry Potter');
   }
 
 
@@ -186,16 +183,18 @@ class Telephone_RechercheControllerHarryPotterViewNoticeTest extends Telephone_R
   public function pageShouldContainsLinkToFRBR() {
     $this->assertXPathContentContains('//a[contains(@href, "recherche/frbr/id/4")]', 'Notices liées');
   }
-
 }
 
 
 
 
-class Telephone_RechercheControllerHarryPotterViewResumeTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterViewResumeTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/telephone/recherche/resume/id/4', true);
+
+    $this->dispatch('/telephone/recherche/resume/id/4');
   }
 
 
@@ -220,25 +219,28 @@ class Telephone_RechercheControllerHarryPotterViewResumeTest extends Telephone_R
 
 
 
-class Telephone_RechercheControllerInexistingNoticeTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerInexistingNoticeTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function testedActions() {
     return [
-      ['resume'],
-      ['avis'],
-      ['viewnotice'],
-      ['grandeimage'],
-      ['exemplaires'],
-      ['detail'],
-      ['ressourcesnumeriques'],
-      ];
+            ['resume'],
+            ['avis'],
+            ['viewnotice'],
+            ['grandeimage'],
+            ['exemplaires'],
+            ['detail'],
+            ['ressourcesnumeriques'],
+    ];
   }
 
+
   /**
    * @dataProvider testedActions
    * @test
    */
   public function responseBeShouldRedirectToIndex($action) {
-    $this->dispatch('/telephone/recherche/'.$action, true);
+    $this->dispatch('/telephone/recherche/'.$action);
     $this->assertRedirectTo('/');
   }
 }
@@ -246,10 +248,13 @@ class Telephone_RechercheControllerInexistingNoticeTest extends Telephone_Recher
 
 
 
-class Telephone_RechercheControllerHarryPotterTagsTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterTagsTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/telephone/recherche/tags/id/4', true);
+
+    $this->dispatch('/telephone/recherche/tags/id/4');
   }
 
 
@@ -261,18 +266,19 @@ class Telephone_RechercheControllerHarryPotterTagsTest extends Telephone_Recherc
 
   /** @test */
   public function pageShouldContainsNuageTagsCss() {
-    $this->assertXPath('//link[contains(@href, "nuage_tags")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//link[contains(@href, "nuage_tags")]');
   }
 }
 
 
 
+
 class Telephone_RechercheControllerHarryPotterBiographieTest
   extends Telephone_RechercheControllerHarryPotterTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $httpClient = $this->mock()
                        ->whenCalled('open_url')
                        ->answers(json_encode(['biographie' => [['texte' => 'Inspiration et controverse']],
@@ -289,7 +295,7 @@ class Telephone_RechercheControllerHarryPotterBiographieTest
    * @test
    */
   public function dispatchBiographie() {
-    $this->dispatch('/telephone/recherche/biographie/id/4', true);
+    $this->dispatch('/telephone/recherche/biographie/id/4');
     return $this->_response->getBody();
   }
 
@@ -321,10 +327,13 @@ class Telephone_RechercheControllerHarryPotterBiographieTest
 
 
 
-class Telephone_RechercheControllerHarryPotterNoticeDetailleeTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterNoticeDetailleeTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/telephone/recherche/detail/id/4', true);
+
+    $this->dispatch('/telephone/recherche/detail/id/4');
   }
 
 
@@ -360,18 +369,20 @@ class Telephone_RechercheControllerHarryPotterNoticeDetailleeTest extends Teleph
                                       'français');
 
     $this->assertXPathContentContains('//td[preceding::td[contains(text(), "Langue(s)")]]//li',
-                                      'anglais',
-                                      $this->_response->getBody());
+                                      'anglais');
   }
 }
 
 
 
 
-class Telephone_RechercheControllerHarryPotterGrandeImageTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterGrandeImageTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/telephone/recherche/grandeimage/id/4', true);
+
+    $this->dispatch('/telephone/recherche/grandeimage/id/4');
   }
 
 
@@ -390,7 +401,9 @@ class Telephone_RechercheControllerHarryPotterGrandeImageTest extends Telephone_
 
 
 
-class Telephone_RechercheControllerHarryPotterExemplaireReservableTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterExemplaireReservableTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -404,15 +417,14 @@ class Telephone_RechercheControllerHarryPotterExemplaireReservableTest extends T
                                         'date_retour' => 1,
                                         'resa' => 1]]);
 
-
-    $this->fixture('Class_CodifAnnexe',
+    $this->fixture(Class_CodifAnnexe::class,
                    ['id' => 4,
                     'id_bib' => 2,
                     'id_origine' => 'MOUL',
                     'libelle' => 'Archives']);
 
     $florilege =
-      $this->fixture('Class_Bib',
+      $this->fixture(Class_Bib::class,
                      ['id' => 1,
                       'libelle' => 'Bibliotheque du florilege',
                       'interdire_resa' => 0]);
@@ -489,26 +501,28 @@ class Telephone_RechercheControllerHarryPotterExemplaireReservableTest extends T
 
 
 class Telephone_RechercheControllerHarryPotterExemplaireReservablePackMobileInactifTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_Notice::getLoader()->find(4)
-      ->setExemplaires(array(Class_Exemplaire::getLoader()
-                             ->newInstanceWithId(33)
-                             ->setCote('JRROW')
-                             ->setBib(Class_Bib::getLoader()
-                                      ->newInstanceWithId(1)
-                                      ->setLibelle('Bibliotheque du florilege')
-                                      ->setInterdireResa(0))
-                             ->setSigbExemplaire(Class_WebService_SIGB_Exemplaire::newInstance()
-                                                 ->setDisponibiliteIndisponible()
-                                                 ->setCodeAnnexe('MOUL')
-                                                 ->beReservable())));
+                             ->setExemplaires(array(Class_Exemplaire::getLoader()
+                                                    ->newInstanceWithId(33)
+                                                    ->setCote('JRROW')
+                                                    ->setBib(Class_Bib::getLoader()
+                                                             ->newInstanceWithId(1)
+                                                             ->setLibelle('Bibliotheque du florilege')
+                                                             ->setInterdireResa(0))
+                                                    ->setSigbExemplaire(Class_WebService_SIGB_Exemplaire::newInstance()
+                                                                        ->setDisponibiliteIndisponible()
+                                                                        ->setCodeAnnexe('MOUL')
+                                                                        ->beReservable())));
 
     Class_AdminVar::getLoader()
       ->newInstanceWithId('PACK_MOBILE')
       ->setValeur(0);
 
-    $this->dispatch('/telephone/recherche/exemplaires/id/4', true);
+    $this->dispatch('/telephone/recherche/exemplaires/id/4');
   }
 
 
@@ -519,14 +533,17 @@ class Telephone_RechercheControllerHarryPotterExemplaireReservablePackMobileInac
   public function pageShouldNotContainsHoldFunction() {
     $this->assertNotXPath('//div[@class="fonction"]//a[contains(@href, "/recherche/reservation")]');
   }
-
 }
 
 
 
-class Telephone_RechercheControllerHarryPotterReservationNotLogged extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterReservationNotLogged
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users')
       ->whenCalled('getIdentity')
       ->answers(false);
@@ -566,9 +583,13 @@ class Telephone_RechercheControllerHarryPotterReservationNotLogged extends Telep
 
 
 
-class Telephone_RechercheControllerHarryPotterReservationWithEnabledPickup extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterReservationWithEnabledPickup
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::getLoader()
       ->newInstanceWithId('site_retrait_resa')
       ->setValeur(1);
@@ -584,16 +605,18 @@ class Telephone_RechercheControllerHarryPotterReservationWithEnabledPickup exten
 
   /** @test */
   public function shouldRedirectToPickupChoice() {
-      $this->assertRedirectTo('/recherche/pickup-location/b/1/e/33/a/MOUL');
+    $this->assertRedirectTo('/recherche/pickup-location/b/1/e/33/a/MOUL');
   }
-
 }
 
 
 
+
 class Telephone_RechercheControllerHarryPotterReservationBackFromLoginWithEnabledPickup extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::getLoader()
       ->newInstanceWithId('site_retrait_resa')
       ->setValeur(1);
@@ -612,19 +635,22 @@ class Telephone_RechercheControllerHarryPotterReservationBackFromLoginWithEnable
 
   public function tearDown() {
     unset(Zend_Registry::get('session')->lastReservationParams);
+    parent::tearDown();
   }
 
 
   /** @test */
   public function shouldRedirectToPickupChoice() {
-      $this->assertRedirectTo('/recherche/pickup-location/b/1/e/33/a/MOUL');
+    $this->assertRedirectTo('/recherche/pickup-location/b/1/e/33/a/MOUL');
   }
 
 }
 
 
 
-class Telephone_RechercheControllerHarryPotterExemplairePickupChoiceTest extends Telephone_RechercheControllerHarryPotterTestCase {
+class Telephone_RechercheControllerHarryPotterExemplairePickupChoiceTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -638,7 +664,7 @@ class Telephone_RechercheControllerHarryPotterExemplairePickupChoiceTest extends
                     'id_origine' => 'ANN',
                     'libelle' => 'Annecy']);
 
-    $this->dispatch('/recherche/pickup-location/b/1/e/33/a/MOUL', true);
+    $this->dispatch('/recherche/pickup-location/b/1/e/33/a/MOUL');
   }
 
 
@@ -651,9 +677,13 @@ class Telephone_RechercheControllerHarryPotterExemplairePickupChoiceTest extends
 
 
 
-class Telephone_RechercheControllerHarryPotterReservationSuccessTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterReservationSuccessTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::getLoader()
       ->newInstanceWithId('site_retrait_resa')
       ->setValeur(0);
@@ -661,7 +691,7 @@ class Telephone_RechercheControllerHarryPotterReservationSuccessTest extends Tel
     Class_CommSigb::setInstance(Storm_Test_ObjectWrapper::mock()
                                 ->whenCalled('reserverExemplaire')
                                 ->answers(array()));
-    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL', true);
+    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL');
   }
 
 
@@ -673,9 +703,13 @@ class Telephone_RechercheControllerHarryPotterReservationSuccessTest extends Tel
 
 
 
-class Telephone_RechercheControllerHarryPotterReservationErrorTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterReservationErrorTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::getLoader()
       ->newInstanceWithId('site_retrait_resa')
       ->setValeur(0);
@@ -689,7 +723,7 @@ class Telephone_RechercheControllerHarryPotterReservationErrorTest extends Telep
       ->setCote('JRROW')
       ->setNotice(Class_Notice::getLoader()->find(4));
 
-    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL', true);
+    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL');
   }
 
 
@@ -701,9 +735,13 @@ class Telephone_RechercheControllerHarryPotterReservationErrorTest extends Telep
 
 
 
-class Telephone_RechercheControllerHarryPotterReservationWithPopupTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterReservationWithPopupTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::getLoader()
       ->newInstanceWithId('site_retrait_resa')
       ->setValeur(0);
@@ -717,7 +755,7 @@ class Telephone_RechercheControllerHarryPotterReservationWithPopupTest extends T
       ->setCote('JRROW')
       ->setNotice(Class_Notice::getLoader()->find(4));
 
-    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL', true);
+    $this->dispatch('/recherche/reservation/b/1/e/33/a/MOUL');
   }
 
 
@@ -735,7 +773,10 @@ class Telephone_RechercheControllerHarryPotterReservationWithPopupTest extends T
 
 
 
-class Telephone_RechercheControllerHarryPotterAvisTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterAvisTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -774,8 +815,7 @@ class Telephone_RechercheControllerHarryPotterAvisTest extends Telephone_Recherc
       ->whenCalled('findAllBy')
       ->answers($avis);
 
-
-    $this->dispatch('/telephone/recherche/avis/id/4', true);
+    $this->dispatch('/telephone/recherche/avis/id/4');
   }
 
 
@@ -785,6 +825,7 @@ class Telephone_RechercheControllerHarryPotterAvisTest extends Telephone_Recherc
   }
 
 
+  /** @test */
   public function pageShouldContainsBibliothecaire2Evaluation() {
     $this->assertXPathContentContains('//div', 'Bibliothécaires (2 évaluations)');
   }
@@ -792,8 +833,7 @@ class Telephone_RechercheControllerHarryPotterAvisTest extends Telephone_Recherc
 
   /** @test */
   public function pageShouldContainsBibliothecaireStars4ForBibliothecaire() {
-    $this->assertXPath('//div[contains(text(), "Bibliothécaires")]//img[contains(@src, "stars-4.gif")]',
-                       $this->_response->getBody());
+    $this->assertXPath('//div[contains(text(), "Bibliothécaires")]//img[contains(@src, "stars-4.gif")]');
   }
 
 
@@ -840,14 +880,14 @@ class Telephone_RechercheControllerHarryPotterVideosTest
 
   /** @test */
   public function titleShouldBeHarryPotter() {
-    $this->dispatch('/telephone/recherche/videos/id/4', true);
+    $this->dispatch('/telephone/recherche/videos/id/4');
     $this->assertXPathContentContains('//h1', 'Harry Potter à l\'ecole des sorciers');
   }
 
 
   /** @test */
   public function pageShouldContainsIFrameWithEmbedVideoUrl() {
-    $this->dispatch('/telephone/recherche/videos/id/4', true);
+    $this->dispatch('/telephone/recherche/videos/id/4');
     $this->assertXPath('//iframe[@src="https://www.youtube.com/v/np9U1pmRsGs"]');
   }
 
@@ -855,7 +895,7 @@ class Telephone_RechercheControllerHarryPotterVideosTest
   /** @test */
   public function withTarteaucitronShouldContainsDivWithEmbedVideoUrl() {
     Class_AdminVar_Cookies::setManager(new Class_Cookies_TarteAuCitron());
-    $this->dispatch('/telephone/recherche/videos/id/4', true);
+    $this->dispatch('/telephone/recherche/videos/id/4');
     $this->assertXPath('//div[@class="youtube_player"][@videoid="np9U1pmRsGs"]');
   }
 
@@ -863,14 +903,17 @@ class Telephone_RechercheControllerHarryPotterVideosTest
   /** @test */
   public function withTarteaucitronShouldContainsTarteaucitronJS() {
     Class_AdminVar_Cookies::setManager(new Class_Cookies_TarteAuCitron());
-    $this->dispatch('/telephone/recherche/videos/id/4', true);
+    $this->dispatch('/telephone/recherche/videos/id/4');
     $this->assertXPath('//script[contains(@src,"/public/tarteaucitron/tarteaucitron.js")]');
   }
 }
 
 
 
-class Telephone_RechercheControllerHarryPotterVideoNotFoundTest extends Telephone_RechercheControllerHarryPotterTestCase {
+
+class Telephone_RechercheControllerHarryPotterVideoNotFoundTest
+  extends Telephone_RechercheControllerHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -887,7 +930,7 @@ class Telephone_RechercheControllerHarryPotterVideoNotFoundTest extends Telephon
 
     Class_WebService_AllServices::setHttpClient($http_client);
 
-    $this->dispatch('/telephone/recherche/videos/id/4', true);
+    $this->dispatch('/telephone/recherche/videos/id/4');
   }
 
 
@@ -896,6 +939,3 @@ class Telephone_RechercheControllerHarryPotterVideoNotFoundTest extends Telephon
     $this->assertXPathContentContains('//li[@data-theme="c"]', 'Aucune vidéo');
   }
 }
-
-
-?>
\ No newline at end of file
diff --git a/tests/fixtures/agenda-sqy.xml b/tests/fixtures/agenda-sqy.xml
deleted file mode 100644
index 8ed49184ef68de9a8d3c750cd163a64d3cba105d..0000000000000000000000000000000000000000
--- a/tests/fixtures/agenda-sqy.xml
+++ /dev/null
@@ -1,2480 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<racine>
-	<event>
-		<item index="3421" location="" organizer="" category="" category2="22" category3="" city2="">	
-      <title><![CDATA["Rêvons la ville"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>« Rêvons la ville », la nouvelle exposition du Musée de la ville a ouvert ses portes le 16 mai. Visite en photos de cette exposition interactive, familiale et pleine d'humour !</p>]]></abstract>
-      <description><![CDATA[<p>Des acteurs de Saint-Quentin-en-Yvelines se sont interrogés sur leurs rêves de ville. Ils ont évoqué la ville dans sa dimension plastique et esthétique, la ville pratique mais également la ville créatrice de liens sociaux et de réseaux. Leurs interrogations nous renvoient tous à notre propre vision de la ville.
</p>
-			<p> Par leur travail ou leur action, des « rêveurs de ville » d’hier ou d’aujourd’hui avaient déjà répondu à ces différents questionnements. Ils viennent de Saint-Quentin-en-Yvelines, de France, d’Europe, d’Afrique ou d’Asie. Ils sont artistes, designers, urbanistes, acteurs associatifs, hommes et femmes politiques ou architectes. Ils ont imaginé des projets loufoques ou piloté des réalisations ambitieuses.
</p>
-			<p> Tous ont accepté de prêter une de leur création au Musée de la ville le temps de cette exposition. Venez découvrir cette exposition et rêvez la ville avec eux.
</p>
-			<p><a href="http://www.museedelaville.agglo-sqy.fr/expositions/expositions-actuelles/revons-la-ville/" target="_blank" >http://www.museedelaville.agglo-sqy.fr/expositions/expositions-actuelles/revons-la-ville/</a> 
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>16/05/2012</date_start>
-      <date_end>16/03/2013</date_end>
-			<date_wording><![CDATA[Du 16 mai 2012 au 16 mars 2013]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[5]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/revons-la-ville_vign.jpg</image>
-		</item>
-		<item index="3424" location="69" organizer="" category="31" category2="66" category3="" city2="5">	
-      <title><![CDATA[Atelier libre "Urban Dream" : A quoi ressemble la ville de vos rêves ?]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Le musée vous invite à devenir des « rêveurs de ville » en créant une ville à votre goût et toute en couleurs !</p>]]></abstract>
-      <description><![CDATA[<p>Après une visite contée dans l’exposition qui vous présentera des projets de villes imaginaires aussi farfelues que drôles, devenez à votre tour un artiste. 
</p>
-			<p>À la manière d’Agam et de sa fontaine à La Défense, d’Hundertwasser et de ses immeubles en Allemagne ou de Gaudi à Barcelone, vous créez sur papier votre propre représentation d’un paysage utopique sur Saint-Quentin et repartez avec votre projet coloré pour l'exposer chez vous !
</p>
-			<p>Tout public à partir de 5 ans</p>]]></description>
-      <tariffs><![CDATA[gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/09/2012</date_start>
-      <date_end>22/12/2012</date_end>
-			<date_wording><![CDATA[Tous les samedis et mercredis après-midi de 14h à 18h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[5]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/ville-de-vos-reves.jpg</image>
-		</item>
-		<item index="3992" location="62" organizer="" category="" category2="22" category3="" city2="4">	
-      <title><![CDATA[Béatrice Casadesus: Infinis...]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Artiste plasticienne et peintre, elle explore le thème de la matérialité de la peinture sur différents supports et joue ainsi avec les matières, l'espace et la lumière.</p>]]></abstract>
-      <description><![CDATA[<p>En quête de la lumière, Béatrice Casadesus construit un parcours plastique singulier, utilisant les techniques de la peinture sur des matériaux traditionnels ou plus inattendus. Dans les replis de ses Papiers voilés, la lumière joue avec la peinture et participe à la mise au jour de l’œuvre. <br />Les œuvres de Béatrice Casadesus prennent place dans plusieurs espaces du site de Port-Royal des Champs. Alors que peintures et papiers voilés se glissent entre les collections du musée, ses « mues », immenses bandes d'intissés colorés à la main, s'entremêlent au plafond de l'ancienne grange à blé. Présentation d'œuvres existantes et d'installations originales dans l'espace, c'est ainsi que Béatrice Casadesus s'approprie les lieux pendant la durée de l'exposition.<br />Une invitation à redécouvrir Port-Royal à travers ce regard, à la recherche des infinis...
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>21/09/2012</date_start>
-      <date_end>20/12/2012</date_end>
-			<date_wording><![CDATA[Du 21 septembre au 20 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/EXPOcasadesus03a.jpg</image>
-		</item>
-		<item index="4067" location="6" organizer="" category="32" category2="66" category3="" city2="4">	
-      <title><![CDATA[Coup de projecteur "Artisans du changement"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Projection en continu de reportages dur des entrepreneurs ingénieux et créatifs, qui incarnent les principes du développement durable par des actions simples mais empreintes de bon sens.</p>]]></abstract>
-      <description><![CDATA[<p>Ils sont artisans, médecins, agriculteurs ou banquiers... Leur point commun ?<br />Changer le monde. Cette série de films met l’accent sur des actions simples,<br />empreintes de bon sens mais qui font d’eux de véritables « Artisans du changement ».
</p>
-			<p>Projection en continu dans le hall de la Maison de l’environnement.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>02/11/2012</date_start>
-      <date_end>26/01/2013</date_end>
-			<date_wording><![CDATA[du vendredi 2 novembre au samedi 26 janvier]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/artisans_changement_vign.jpg</image>
-		</item>
-		<item index="4102" location="22" organizer="" category="14" category2="22,69" category3="" city2="6">	
-      <title><![CDATA[Les livres, c’est bon pour les bébés]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<div id="visuelD"><p>S'adresser aux tout-petits et à leur entourage, pour favoriser un développement harmonieux de la personnalité de l'enfant et une plus grande égalité des chances de réussite et d'insertion sociale.</p></div>]]></abstract>
-      <description><![CDATA[<p><img style="float: left;" src="fileadmin/mediatheque/MEDIA/Actualites/2012_11/ExpoACCESPhoto2_c__ACCES.jpg" height="231" width="173" alt="" />Conçue comme un ensemble d’espaces de jeu et de lecture que chacun pourra disposer à sa guise et selon l’architecture du lieu, l’exposition a pour objectif d’inviter enfants, professionnels du livre et de la petite enfance, parents et éducateurs à partager le plaisir des livres et de la lecture.
</p>
-			<p>&nbsp;</p>
-			<p>« Les livres, c’est bon pour les bébés » est une exposition réalisée par <a href="http://www.acces-lirabebe.fr/expo.php" target="_self" class="external-link-new-window" >l’association A.C.C.E.S.</a> <br />(Actions Culturelles Contre les Exclusions et les Ségrégations).
</p>
-			<p>&nbsp;</p>
-			<p>&nbsp;</p>
-			<p>&nbsp;</p>
-			<p class="encart align-center">&nbsp;Des ateliers vous sont également proposés<br />&lt;big&gt;<strong>Comptines en musique et jeux de doigts</strong><br />le samedi 17 novembre à 10h et 11h<br />&lt;/big&gt;à la médiathèque</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>13/11/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[du 13 novembre au 12 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/EXPOACCES-Photo1_c__ACCES.jpg</image>
-		</item>
-		<item index="3564" location="56" organizer="27" category="" category2="22" category3="" city2="2">	
-      <title><![CDATA[10 ans d’art]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Depuis son ouverture, la Maison de la Poésie associe et expose des artistes, peintres, dessinateurs, photographes, graveurs, etc.</p>]]></abstract>
-      <description><![CDATA[<p>Pour marquer nos 10 années d’activités, nous souhaitons montrer l’ensemble des œuvres acquises qui seront visibles dans le hall d’exposition et dans la salle de spectacle. Ainsi pourrez-vous voir ou revoir des œuvres de Ladislas Kijno, Lewigue, Ada, Sylvie Laroche, Glaziou, Vincent Rougier, Caroline Dahyot, Irène Clara, Brigitte Kernaleguen, Lou Dubois, Patrice Leterrier, Catherine Gillet,…
</p>
-			<p class="encart">Jeudi 22/11, 19h00 : vernissage ouvert à tous en présence d’artistes et de poètes.</p>]]></description>
-      <tariffs><![CDATA[Entrée libre aux heures d'ouverture]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/11/2012</date_start>
-      <date_end>21/12/2012</date_end>
-			<date_wording><![CDATA[Du 14 novembre au 21 décembre aux heures d'ouverture]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/agendasaison.jpg</image>
-		</item>
-		<item index="3998" location="44" organizer="" category="" category2="22" category3="" city2="2">	
-      <title><![CDATA[Screen/Play]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Artistes d’aujourd’hui qui utilisent, s’approprient ou détournent le langage, les codes, les représentations et les imageries du cinéma américain pour les traduire dans un vocabulaire esthétique contemporain.</p>]]></abstract>
-      <description><![CDATA[<p>Le cinéma américain, symbolisé par Hollywood, fait office de modèle de référence. Si l’un des apports majeurs du cinéma américain est la fabrication de codes esthétiques et narratifs aboutissant à la création de genres bien définis (thriller, western, comédie musicale, film d’horreur, de zombies, etc.), nombre d’artistes, présents dans cette exposition, jouent de ces codes et représentations. <br />L’exposition s’intéressera notamment aux artistes contemporains qui abordent la question de la narration dans le cinéma et utilisent le montage pour déconstruire le récit. Mais le cinéma hollywoodien n’est pas seulement à l’origine d’un système narratif classique et ultra-référencé, il est aussi un faiseur d’icônes et de célébrités, le générateur d’une société du spectacle, aujourd’hui emblématique. <br />L’imagerie populaire véhiculée par le cinéma hollywoodien sera aussi abordée dans l’exposition, au travers d’œuvres mettant en scène la figure de la star.<br /><br />VISITE GUIDÉE<br />Vendredi 14 décembre à 12h15<br />Gratuit sur réservation</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/11/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[Du 14 novembre au 19 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Expo-Screenplay---Mathieu-Dufois---Memento-Mori.jpg</image>
-		</item>
-		<item index="3741" location="50" organizer="" category="" category2="22" category3="" city2="1">	
-      <title><![CDATA[Regards croisés]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Artistes enseignants à l’École Municipale d’Arts plastiques d'Elancourt, ils présentent leurs oeuvres au public …</p>]]></abstract>
-      <description><![CDATA[<p>Vous découvrirez ainsi les oeuvres de Marie Taklanti, peintre, Muriel Chéné, artiste verrier, sculpteur, Inoué Yukichi, sculpteur. En écho à l’installation conçue par Inoue, photographe Robert Lebatteur sera invité pour l’exposition.<br />Hideko Miyata, sculpteur et Fabienne Leloup, plasticienne seront également présents lors de cette manifestation artistique.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>17/11/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[Du 17 novembre au 5 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/P9-exposition-des-professeurs---mention-obligatoire-photo-de-robert-lebatteur.jpg</image>
-		</item>
-		<item index="3999" location="43" organizer="" category="" category2="22" category3="" city2="2">	
-      <title><![CDATA[Salon des Automnales]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Une sélection exigeante et originale d’œuvres de toutes disciplines, choisies par un jury d’artistes professionnels.</p>]]></abstract>
-      <description><![CDATA[<p>Cette 23e édition est donc l’occasion de (re)découvrir les talents de nombreux artistes, venus du territoire et d’ailleurs.<br />Six prix sont décernés : prix Œuvre sur Papier, Peinture, Sculpture, prix du Public ainsi que le prix de la Ville et le prix Adag Pro-Art. Le public est invité à voter pour son œuvre<br />préférée du 20 au 28 novembre.<br />Les différents prix sont remis le jour du vernissage auquel tous les artistes sont invités<br />à participer.<br /><br />Vernissage le jeudi 29 novembre à 18h30.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>20/11/2012</date_start>
-      <date_end>13/12/2012</date_end>
-			<date_wording><![CDATA[Du 20 novembre au 13 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Salon-des-automnales.jpg</image>
-		</item>
-		<item index="4148" location="83" organizer="" category="" category2="22" category3="" city2="5">	
-      <title><![CDATA[Une autre idée de Noël]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Pour célébrer la fin de l’année, voici 3 bonnes raisons de venir flâner à l’Office de tourisme</p>]]></abstract>
-      <description><![CDATA[<p>La nouvelle exposition de Noël <em>Une autre idée de Noël</em> parée de mille et une lumières vous invite à la découverte ludique d’un univers scintillant et amusant. <br />Avec des ateliers créatifs pour les enfants, des jeux interactifs à partager pour une échappée insolite en famille.<br /><br />Si vous êtres à la recherche du cadeau original introuvable, vous y découvrirez l’agenda <em>Saint-Quentin-en-Yvelines en balade : </em>De la simple promenade en famille, en passant par l’activité sportive ou culturelle, il est le compagnon idéal pour découvrir le territoire autrement. Au fil des mois, vous parcourez le territoire à travers un très beau livre, à offrir et à s’offrir. <br /><br />Enfin, pour les gourmands, notez à partir du 20 novembre 2012, le tirage au sort chocolaté. Déposez votre bulletin de participation dans l’urne à l’Office et patientez jusqu’à la fin de l’exposition. <br />10 ballotins de 750 g de fins chocolats de maître chocolatier sont à gagner !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>20/11/2012</date_start>
-      <date_end>05/01/2013</date_end>
-			<date_wording><![CDATA[Du mardi 20 novembre au samedi 5 janvier]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-Affiche_expo_noel_pano.jpg</image>
-		</item>
-		<item index="3863" location="51" organizer="" category="" category2="22" category3="" city2="7">	
-      <title><![CDATA[Biennale des peintres vicinois]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Exposition d'oeuvres artistes amateurs et proefessionnels avec remise de prix.</p>]]></abstract>
-      <description><![CDATA[<p>Dès l'ouverture vous découvrez quels artistes se sont vus décerner par le jury le prix Eugène-Fleuré, dans les catégories &quot;Toile&quot; (huile, acrylique, technique mixte) et &quot;Sous-verre&quot; (oeuvres sur papier : aquarelle, pastel, dessin).<br />Durant toute la durée du Salon, le public pourra voter pour son coup de coeur, dont le prix sera remis à la clôture de l’exposition, le dimanche 9 décembre.</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>01/12/2012</date_start>
-      <date_end>09/12/2012</date_end>
-			<date_wording><![CDATA[Du samedi 1er au dimanche 9 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Biennale-des-peintres.jpg</image>
-		</item>
-		<item index="4075" location="6" organizer="" category="" category2="22" category3="" city2="4">	
-      <title><![CDATA[Exposition "Tous en coopératives !"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Découvrez comment au travers de l’histoire, de l’économie, des différentes<br />formes existantes, les coopératives sont fondées sur le principe de coopération où différents acteurs travaillent dans un esprit d’intérêt général pour tous.</p>]]></abstract>
-      <description><![CDATA[<p>Une exposition réalisée avec des enseignants chercheurs de cinq établissements universitaires et l’Institut National de Recherche en Sciences et Technologies pour l’Environnement et l’Agriculture (IRSTEA), conçue par la Casden.
</p>
-			<p>Découvrez comment au travers de l’histoire, de l’économie, des différentes<br />formes existantes, les coopératives sont fondées sur le principe de coopération<br />où différents acteurs travaillent dans un esprit d’intérêt général pour tous.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>04/12/2012</date_start>
-      <date_end>31/01/2013</date_end>
-			<date_wording><![CDATA[Du mardi 4 décembre au jeudi 31 janvier]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/tousencoop_vign.jpg</image>
-		</item>
-		<item index="4076" location="6" organizer="" category="" category2="22" category3="" city2="4">	
-      <title><![CDATA[Exposition "La démocratie nous réussit"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Cette exposition de portraits photographiques vous fait<br />découvrir différentes réalisations de coopératives en France.</p>]]></abstract>
-      <description><![CDATA[<p>Dans le cadre de l’Année internationale des coopératives proclamée en 2012 par les Nations-Unies, réalisée par la confédération générale des Sociétés Coopératives et Participatives (Scop).
</p>
-			<p>Aujourd’hui, plus d’un milliard de personnes sont membres de coopératives<br />à travers le monde. Cette exposition de portraits photographiques vous fait<br />découvrir différentes réalisations de coopératives en France.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>04/12/2012</date_start>
-      <date_end>31/01/2013</date_end>
-			<date_wording><![CDATA[Du mardi 4 décembre au jeudi 31 janvier]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/democratie_vign.jpg</image>
-		</item>
-		<item index="4002" location="67" organizer="" category="" category2="66" category3="" city2="2">	
-      <title><![CDATA[Les jeux du mercredi (Jean-Rousselot)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 16h.</p>]]></abstract>
-      <description><![CDATA[<p>Parce que jouer, ce n’est pas réservé qu’aux enfants<br />parce qu’une médiathèque, c’est aussi un lieu où l’on peut s’amuser<br />parce que vous avez quelques minutes devant vous…<br />Les médiathèques mettent à votre disposition, des espaces et des jeux.<br />Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_05.jpg</image>
-		</item>
-		<item index="4004" location="20" organizer="" category="" category2="66" category3="" city2="1">	
-      <title><![CDATA[Les jeux du mercredi (7-Mares)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 16h30 à 18h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_02.jpg</image>
-		</item>
-		<item index="4005" location="26" organizer="" category="" category2="66" category3="" city2="3">	
-      <title><![CDATA[Les jeux du mercredi (Aimé-Césaire)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 17h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_03.jpg</image>
-		</item>
-		<item index="4006" location="19" organizer="" category="" category2="66" category3="" city2="5">	
-      <title><![CDATA[Les jeux du mercredi (Canal)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi à 14h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_04.jpg</image>
-		</item>
-		<item index="4095" location="24" organizer="" category="58" category2="68" category3="" city2="7">	
-      <title><![CDATA[Autour du sapin... Conte de sorcières]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>En décembre, flocons, sorcières, père Noël à la retraite s’invitent autour du sapin… Des histoires pour réchauffe les petites et grandes oreilles.</p>]]></abstract>
-      <description><![CDATA[<p>&nbsp;</p>
-			<p>&lt;big&gt;<strong>Conte de sorcières</strong><br />&lt;/big&gt;par la Cie la Fleur qui rit, avec Anne-Sophie Péron, conteuse et Marcel l’accordéoniste. 
</p>
-			<p>Quel est donc le secret que les sorcières gardent mystérieusement le soir de Sabbat ? Une création en musique qui mêle frissons et jubilation.
</p>
-			<p>Dès 3 ans</p>]]></description>
-      <tariffs><![CDATA[Gratuit sur inscription]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[mercredi 5 décembre à 11h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Contes_sapin_vignette.jpg</image>
-		</item>
-		<item index="4096" location="22" organizer="" category="58" category2="68" category3="" city2="6">	
-      <title><![CDATA[Autour du sapin... Baba Yaga]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>En décembre, flocons, sorcières, père Noël à la retraite s’invitentautour du sapin… Des histoires pour réchauffe les petites et grandes oreilles.</p>]]></abstract>
-      <description><![CDATA[<p><br />&lt;big&gt;<strong>Baba Yaga</strong><br />&lt;/big&gt;par la Cie Scenanostra, spectacle de et par Julie Cordier <em>(inspiré d’un conte traditionnel russe «Vassilissa la très belle »)</em>
</p>
-			<p>Mais qu’est-ce qu’une Baba-Yaga ?<br />Une sorcière qui mange les enfants. Sauf, s’ils réussissent les épreuves et qu’ils ne posent pas trop de questions…
</p>
-			<p>Dès 5 ans</p>]]></description>
-      <tariffs><![CDATA[Gratuit sur inscription]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>05/12/2012</date_start>
-      <date_end>05/12/2012</date_end>
-			<date_wording><![CDATA[mercredi 5 décembre 15h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Contes_sapin_vignette_01.jpg</image>
-		</item>
-		<item index="4112" location="124" organizer="" category="" category2="22" category3="" city2="5">	
-      <title><![CDATA[La gravure en diptyque]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Trente artistes de l'Atelier d'Arts Graphiques de la Villedieu à Élancourt ont choisi de travailler l'estampe suivant une présentation particulière : le &quot;diptyque.&quot;</p>]]></abstract>
-      <description><![CDATA[<p>Le diptyque se compose de deux unités distinctes qui entretiennent entre elles une relation par la technique, la couleur, la thématique. Les techniques variées de l'estampe, pointe sèche, eau-forte... sur cuivre, xylographie, linogravure, collagraphie, se prêtent bien à ce mode opératoire.<br /><br />Du lundi au vendredi de 14h à 19h, le samedi de 14h à 18 h</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>06/12/2012</date_start>
-      <date_end>20/12/2012</date_end>
-			<date_wording><![CDATA[Du jeudi 6 au jeudi 20 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-expo-gravure-en-dyptique.jpg</image>
-		</item>
-		<item index="3457" location="15" organizer="" category="11" category2="68" category3="" city2="1">	
-      <title><![CDATA[La Chute De La Maison Usher]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Dans une vieille maison labyrinthique, un frère et sa sœur, Roderick et Madeline Usher, voient la maladie les envahir. </p>]]></abstract>
-      <description><![CDATA[<p>Leur réalité se transforme en cauchemar. Seul rempart contre la mélancolie : l’art. Les héros s’évadent en écrivant, en dessinant ou en chantant. Le metteur en scène Sylvain Maurice revisite la traduction baudelairienne de la nouvelle d’Edgar Allan Poe avec un spectacle total. Il ressuscite l’inquiétante étrangeté de ce conte noir en mariant plusieurs formes : orchestre de jazz sur le plateau, théâtre, arts plastiques. Quel délice de replonger, avec ces acteurs talentueux, dans nos terreurs d’enfances !
</p>
-			<p class="encart"><strong>+ ECOLE DU SPECTATEUR avec Michel Abécassis</strong></p><div class="indent"><p>&nbsp;</p>
-			<p><hr>Texte Edgar Allan Poe<br />adaptation Sylvain Maurice librement inspirée de la traduction de Charles Baudelaire<br />textes des chansons Laure Bonnet<br />mise en scène Sylvain Maurice<br />composition musicale originale Alban Darche<br />avec Jeanne Added (chant),<br />Jean-Baptiste Verquin (jeu),<br />Philippe Rodriguez-Jorda (jeu et animation d’objets),<br />Nathalie Darche (piano),<br />Alban Darche (saxophone),<br />Alexis Therain (guitare)<br />scénographie et lumières Eric Soyer<br />vidéo Renaud Rubiano, Candice Milon<br />son François Leymarie<br />costumes Marie La Rocca<br />assistanat à la mise en scène Aurélie Hubeau<br />peinture et conception marionnette Paulo Duarte<br />conception mannequin Bérangère Vantusso<br />assistant lumières Gwendal Malard<p></p></p></div><p><strong>Production<br /></strong>Compagnie [titre provisoire] en accord avec le nouveau Théâtre Cdn De Besançon et de Franche-Comté</p><div></div><div></div><div></div><p></div></p>]]></description>
-      <tariffs><![CDATA[Grande Salle - Tarif B]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 21h, durée 1h00 ]]></date_wording>
-      <url1><![CDATA[http://www.rodrigue.fr/transact/venteenligne.asp?WCI=PANIER_listeseances&IDStructure=360&IDManif=134]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[http://www.youtube.com/watch?v=4nScYZVBNvM]]></url_resa>
-      <age><![CDATA[13]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/La-Chute-De-La-Maison-Usher-_--Elisabeth-Carecchio.jpg</image>
-		</item>
-		<item index="3654" location="45" organizer="" category="10,11" category2="68" category3="" city2="5">	
-      <title><![CDATA[Histoire du soldat]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Théâtre musical né de la rencontre de Roland Auzet, musicien et metteur en scène et du chanteur Thomas Fersen.</p>]]></abstract>
-      <description><![CDATA[<p>Un jeune soldat revenant de la guerre, son violon sous le bras, croise sur son chemin le Diable. Naïf et vulnérable, le jeune homme échange son violon contre un livre magique devant prédire l’avenir. Mais il aura bien plus à perdre qu’il ne pensait… Empruntant le thème d’un conte populaire russe, le compositeur Igor Stravinsky et l’écrivain Ramuz inventent un genre nouveau, un mélange inédit de musique, de texte parlé et de mime. <br />Si de nombreuses versions orchestrales en ont été tirées, Roland, Auzet revient aux origines et met le poème au centre du spectacle. Pour faire entendre tout le lyrisme de la partition et interpréter l’ensemble des personnages, il choisit le chanteur poète Thomas Fersen. Sa voix singulière, mêlant onirisme et fantaisie, nous fait déguster la poésie là où on l’attend le moins et nous permet d’être au plus près de ce conte aux allures faustiennes.</p>]]></description>
-      <tariffs><![CDATA[21 € (16 € à 6 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[11]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Histoire-du-soldat.jpg</image>
-		</item>
-		<item index="3724" location="47" organizer="" category="11" category2="68" category3="" city2="2">	
-      <title><![CDATA[Quartett]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Poète des déchirures du siècle, Heiner Müller ne se saisit pas des textes du répertoire pour les adapter mais pour les faire exploser dans ce qu'il appelait son &quot;dialogue avec les morts&quot;.</p>]]></abstract>
-      <description><![CDATA[<p>Revisitant Les Liaisons dangereuses de Choderlos de Laclos dans une langue crue, vibrante et incandescente, le dramaturge allemand démonte la mécanique des rapports entre les sexes. Comme un enfant qui ouvre un jouet, il en fait jaillir les ressorts. Merteuil et Valmont deviennent ces héros noirs qui mènent une danse de mort. La mise en scène crée un écrin fétichiste où la ritualisation du désir qui les lie convoque le spectateur-voyeur à une réflexion sur la chair. </p>]]></description>
-      <tariffs><![CDATA[De 5 à 10€]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[16]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/quartett-theatre.jpg</image>
-		</item>
-		<item index="3782" location="54" organizer="" category="18" category2="68" category3="" city2="3">	
-      <title><![CDATA[Liz Cherhal + Agnès Bihl]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Soirée fille ce soir sur la scène du Scarabée !</p>]]></abstract>
-      <description><![CDATA[<p>Ses mélodies sont douces. Ses textes cruels, ironiques, cyniques, que dis-je cyniques... Abominables !... Bon, c’est vrai, pas tout le temps, mais quand même... Liz Cherhal cache bien son jeu. Son sourire enjôleur et sa voix cristalline nous bercent quand ses paroles azimutées nous font rire et nous glacent.
</p>
-			<p> Dans ce premier album qu’elle a entièrement écrit et composé, Liz Cherhal chante la vie... et surtout la mort, la folie, la cruauté. “Il est arrivé quelque chose”, titre éponyme, donne le ton. Un ton super réaliste qui offre au récit toute sa place. Ecoutez, fermez les yeux... et l’histoire se déroule.&nbsp; Entourée de deux musiciens, armée de son accordéon (ou pas), Liz Cherhal, déjà bien rodée à la scène, attaque donc fort. Son spectacle est grinçant, vous serez tous mordus !
</p>
-			<p><a href="http://www.lizcherhal.com/" target="_self" class="external-link-new-window" >www.lizcherhal.com</a>
</p>
-			<p>&nbsp;</p>
-			<h5>Résistance positive </h5>
-			<p>Venez sans banderole, Agnès Bihl sera votre porte voix. À son registre, des chansons qui font mouche. De l’humour, de l’amour, de l’engagement... Ses chansons sont tout cela à la fois. Elles dénoncent et enchantent. Elles dérangent et amusent. Il faut dire que le répertoire d’Agnès fourmille. Dans son dernier album, Rêve Général(e), elle tacle les idées reçues et chante sa colère avec humour. Elle dénonce les “Blablabla” politiques et le racisme ordinaire et vante les joies des amours quels qu’ils soient.
</p>
-			<p>Après de nombreuses premières parties plutôt flatteuses (Anne Sylvestre, Brigitte Fontaine, Thomas Fersen, Louis Chedid) et une invitation sur la tournée de Charles Aznavour (rien que ça !), Agnès Bihl revient sur scène plus motivée que jamais !
</p>
-			<p><a href="http://www.agnes-bihl.fr/" target="_self" class="external-link-new-window" >www.agnes-bihl.fr</a>
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[normal / 8 €, réduit : 6 €]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Liz-cheral.jpg</image>
-		</item>
-		<item index="3887" location="6" organizer="" category="11" category2="68" category3="" city2="4">	
-      <title><![CDATA[Place des mythos]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Pièce de théâtre écrite et interprétée par des jeunes de Ris Orangis sur la grande difficulté de vivre, de surmonter les différences et de garder l’espoir.</p>]]></abstract>
-      <description><![CDATA[<p>Les filles et les gars se frôlent Place des Mythos. C’est l’endroit dans le quartier où l’on taille les réputations. « Tu sais pas ? Kader s’est fait taper ? A ce qu’il paraît c’est une poucave, une balance qui travaille pour les keufs. Y a un dossier sur lui comme quoi il est pédé... »<br />Entre rumeurs, réputation et homophobie : le drame est sous-jacent et la tragédie imminente même si l’ensemble fait rire souvent. Le plateau nu se remplit de la vie des personnages, des jeunes cruels et drôles malgré eux, ni pires ni meilleurs que chacun d’entre nous.</p>]]></description>
-      <tariffs><![CDATA[8 € (6 €, 5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 14h30 et 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[12]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/p-17-Place-des-Mythos-3-_c_-Eric-Chalot-MJC-de-Ris-Orangis.jpg</image>
-		</item>
-		<item index="4142" location="48" organizer="" category="10" category2="68" category3="" city2="2">	
-      <title><![CDATA[Ben Mazué + Volo + Soma]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Cette soirée organisée dans le cadre du téléthon met à l’honneur la scène française.</p>]]></abstract>
-      <description><![CDATA[<p>Soma <br />Multi instrumentistes chevronnés, la Bande des Soma nous sert un condensé de pop rock ultra vitaminée ! Brillantes démonstrations rythmiques et mélodies entrainantes, Soma joue le rock avec ses tripes et la pop avec son cœur. Leur 2ème album, <em>Nobody’s Hotter than God</em> en témoigne. Résultat : la mélancolie n’a jamais été aussi enjouée...<br /><br />Volo<br />C'est l’histoire des frères Volovitch, Frédéric et Olivier : Origines ukrainiennes, parents profs, goûts des mots et conscience sociale. Issus des Wriggles, les frangins tracent tranquillement leur route dans le paysage musical de la chanson française, depuis 2005.<br />Au croisement de la folk et de la chanson, Volo alterne chansons intimistes, tissées de doutes et de finesse, et coups de gueules teintés de cynisme. Leurs textes nous sont servis simplement, à travers leurs fins entrelacs de voix et de guitares acoustiques . <br /><br />Ben Mazué <br />Révélation de la nouvelle scène française, Ben Mazué tente le pari du cross over genre musicaux: Voix chaude aux accents reggae, un phrasé ciselé inclassable qui évoque évidemment le hip hop, vers bruts et personnels et un soupçon de groove africain… Et le cocktail fonctionne !!! </p>]]></description>
-      <tariffs><![CDATA[6,5 € (5,5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>07/12/2012</date_start>
-      <date_end>07/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 7 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-Soma-Photo2.jpg</image>
-		</item>
-		<item index="3486" location="15" organizer="" category="16" category2="68,7" category3="" city2="1">	
-      <title><![CDATA[Jazz Club, Sax Révélation : Baptiste Herbin Trio]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Jazz club, Trombones & coquillages : Sébastien Llado New Quartet <br />Carte blanche à Jean-Michel Proust. Le directeur artistique - musicien - journaliste, amis du Prisme, nous fait partager son enthousiasme pour la nouvelle génération du jazz, entre lyrisme contemporain et modernité.</p>]]></abstract>
-      <description><![CDATA[<p>Développant une virtuosité sans étalage, il semble que pour cet autodidacte du saxophone (élève, un temps, de Julien Lourau), seule la beauté des traits, leur équilibre interne, leur pureté, comptent. Et s’il n’y a qu’une chose à retenir, avant toute autre chose, c’est sa sonorité ! Un timbre unique, large, généreux, précis, velouté, tendre et autoritaire à la fois. Baptiste Herbin est un des saxophonistes avec lesquels il va falloir désormais compter. Vous allez adorer ce musicien ancré dans une tradition assumée (Cannonball Adderley, Phil Woods, Charlie Parker, Maceo Parker, Michel Petrucciani), mais résolument tourné vers l’avenir. Baptiste Herbin est bien un saxophoniste de son temps, s’entourant des musiciens de son temps et quel musicien ! : Michel Bénita et Aldo Romano.� Énorme !
</p>
-			<p>&nbsp;</p>
-			<hr />
-			<p>&nbsp;</p>
-			<p>Baptiste Herbin (saxophone alto), Michel Bénita (contrebasse) et Aldo Romano (batterie)</p>]]></description>
-      <tariffs><![CDATA[Tarif B]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 20h]]></date_wording>
-      <url1><![CDATA[http://www.rodrigue.fr/transact/venteenligne.asp?WCI=PANIER_listeseances&IDStructure=360&IDManif=127]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Jazz-Club-_-Patrice-Letterrier-_01.jpg</image>
-		</item>
-		<item index="3654" location="45" organizer="" category="10,11" category2="68" category3="" city2="5">	
-      <title><![CDATA[Histoire du soldat]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Théâtre musical né de la rencontre de Roland Auzet, musicien et metteur en scène et du chanteur Thomas Fersen.</p>]]></abstract>
-      <description><![CDATA[<p>Un jeune soldat revenant de la guerre, son violon sous le bras, croise sur son chemin le Diable. Naïf et vulnérable, le jeune homme échange son violon contre un livre magique devant prédire l’avenir. Mais il aura bien plus à perdre qu’il ne pensait… Empruntant le thème d’un conte populaire russe, le compositeur Igor Stravinsky et l’écrivain Ramuz inventent un genre nouveau, un mélange inédit de musique, de texte parlé et de mime. <br />Si de nombreuses versions orchestrales en ont été tirées, Roland, Auzet revient aux origines et met le poème au centre du spectacle. Pour faire entendre tout le lyrisme de la partition et interpréter l’ensemble des personnages, il choisit le chanteur poète Thomas Fersen. Sa voix singulière, mêlant onirisme et fantaisie, nous fait déguster la poésie là où on l’attend le moins et nous permet d’être au plus près de ce conte aux allures faustiennes.</p>]]></description>
-      <tariffs><![CDATA[21 € (16 € à 6 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[11]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Histoire-du-soldat.jpg</image>
-		</item>
-		<item index="3726" location="47" organizer="" category="58,10" category2="68" category3="" city2="2">	
-      <title><![CDATA[Noëls noirs par tous les temps]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Trois contes urbains à l'écriture débridée, souvent cruelle et caustique mais toujours d’une magie bouleversante, qui ramènent à la condition de l’homme, à sa misère, à son besoin de consolation, son besoin de croire, de rencontrer des fées…</p>]]></abstract>
-      <description><![CDATA[<p>Accompagnés d’une musique déconcertante, ces contes québécois donnent à  entendre des paroles inoubliables, d’une beauté troublante et tragique,  des histoires d’êtres blessés au corps et au cœur, secouant le pouvoir  de compassion à l’extrême. </p>]]></description>
-      <tariffs><![CDATA[De 5 à 10€]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[16]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/noels-noirs-conte-musique.jpg</image>
-		</item>
-		<item index="3747" location="50" organizer="" category="58" category2="68" category3="" city2="1">	
-      <title><![CDATA[L'Ogrelet]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>C'est un joli conte initiatique de Suzanne Lebeau, auteure québecoise, et joué par la compagnie en résidence Ici Londres.</p>]]></abstract>
-      <description><![CDATA[<p>Le petit « ogrelet » comme l’appelle si gentiment sa mère alors qu’il se rend pour la première fois à l’école, ce géant parmi les petits enfants de sa classe, petit d’ogre qui n’a connu ni son père ni la couleur du sang, va en quelques semaines découvrir les affres de sa condition inhumaine.<br />Saura-t-il déjouer les épreuves qui lui permettront de conquérir une identité nouvelle ?<br />Suzanne Lebeau, auteur québécoise, nous livre ici un joli conte initiatique, l’histoire d’un enfant au physique hors norme, qui doit un jour sortir des bois et aller à la rencontre du monde.
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[7 € (5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 18h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[7]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/ogrelet.jpg</image>
-		</item>
-		<item index="3748" location="50" organizer="" category="58,11" category2="68" category3="" city2="1">	
-      <title><![CDATA[Noëls noirs par tous les temps]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Dans le cadre d'un week-end consacré à la culture québécoise, la compagnie Ici Londres propose une veillée conte un peu particilière...</p>]]></abstract>
-      <description><![CDATA[<p>Trois contes urbains à l’écriture débridée, souvent cruelle et caustique mais toujours d’une magie bouleversante, qui ramènent à la condition de l’homme, à son besoin de consolation, son besoin de croire, de rencontrer des fées… <br />Accompagnés d’une musique déconcertante, ces contes québécois donnent à entendre des paroles inoubliables, d’une beauté troublante et tragique, des histoires d’êtres blessés au corps et au coeur, secouant le pouvoir de compassion à l’extrême.</p>]]></description>
-      <tariffs><![CDATA[7 € (5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 21h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[14]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/.Noel-noirs.jpg</image>
-		</item>
-		<item index="3866" location="51" organizer="" category="10" category2="68" category3="" city2="7">	
-      <title><![CDATA[10e Rencontres musicales]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p><br />Duo Volubilis et Harmonie de Saint-Quentin-en-Yvelines pour une rencontre à apprécier en famille.</p>]]></abstract>
-      <description><![CDATA[<p>Né d’une rencontre au sein de l’Orchestre Philarmonique du Maroc, le Duo Volubilis réunit deux instruments rarement entendus ensemble. Marta Power Luce à la harpe et Stéphane Édouard à la clarinette interpréteront, entre autres, les Danses roumaines de Bela Bartok et Jazzy Celtic Suite d’Armando Ghidoni. <br />Puis ils se joindront à l’orchestre à vents, composé d’une quarantaine de musiciens et dirigé par Francis Palamarczuk, pour jouer des extraits de l’Arlésienne de Bizet, Strauss, mais également des airs plus modernes comme ceux de James Horner (Musique du film Avatar).</p>]]></description>
-      <tariffs><![CDATA[Participation au chapeau]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Rencontres-musicales.jpg</image>
-		</item>
-		<item index="3989" location="272" organizer="" category="36" category2="66" category3="" city2="5">	
-      <title><![CDATA[Rencontre dédicace avec Bertrand Puard]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>L'auteur des aventures des E<em>ffacés</em><em></em>, nouvelle série ado d'espionnage et de suspense, vient à la rencontre de ses lecteurs
</p>
-			<p>&nbsp;</p>
-			<p>&nbsp;</p>]]></abstract>
-      <description><![CDATA[<p>Déjà 3 livres pour cette nouvelle série d'action. Ils sont 4 adolescents: Ilsa, Mathilde, Émile et Zacharie. Leurs parents ont été assassinés parce qu’ils en savaient trop. Ils sont <em>Les Effacés</em>.<br />Ils chercheront à rétablir la vérité sur des affaires classées par les autorités. Pour qu’il n’y ait plus jamais d’autres personnes supprimées au nom d’intérêts plus que controversés. <br />Une série labellisée &quot;coup de cœur&quot; par les libraires du Pavé, dans la lignée des Cherubs. </p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre de 14h30 à 18h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/ok--les-effaces.jpg</image>
-		</item>
-		<item index="4026" location="55" organizer="" category="10" category2="68" category3="" city2="6">	
-      <title><![CDATA[Fatoumata Diawara]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Difficile de résister au charme, au tempérament pétillant et au talent de cette nouvelle étoile du Mali !</p>]]></abstract>
-      <description><![CDATA[<p>Après avoir été choriste de Dee Dee Bridgewater et d’Oumou Sangare son mentor, Fatoumata Diawara est aussi une danseuse ensorcelante, comédienne accomplie mue en musicienne. Elle trace sa route, sa guitare en bandoulière, en porte-parole à la douceur persuasive d’une femme africaine moderne et engagée.<br />Son folk wassalou aux effluves jazz et funk, épuré et minimaliste, inspiré d’instruments traditionnels mandingues, est baigné de guitares au picking hypnotique. Sa voix douce et touchante, sa grâce et son sourire radieux en ont séduit plus d’un, de Damon Alban à Herbie Hancock..<br /><a href="http://www.myspace.com/fatoumatadiawara" target="_blank" >www.myspace.com/fatoumatadiawara</a></p>]]></description>
-      <tariffs><![CDATA[15 € (11 €, 8 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-Fatoumata-8dec.jpg</image>
-		</item>
-		<item index="4089" location="" organizer="" category="10" category2="66" category3="" city2="">	
-      <title><![CDATA[Classique et jazz]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p><strong><br /></strong></p>]]></abstract>
-      <description><![CDATA[<p><strong>ACTUALITE</strong><br />&lt;small&gt;LOCALE&lt;/small&gt;
</p>
-			<p class="important">RENCONTRE MUSICALE</p>
-			<p>Classique et jazz<br /><em>avec l’école « Pôle Musiques – La Batterie » de Guyancourt<br /></em><br />Élèves et professeurs vous proposent au programme, un répertoire classique et jazz, quelques digressions en variétés et bandes originales de films ou séries.
</p>
-			<p>Tout public
</p>
-			<p><strong>Auditorium</strong></p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 15H30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Visuel_Les_samedis_de_l_actu_vignette_04.jpg</image>
-		</item>
-		<item index="4109" location="60" organizer="" category="4" category2="69" category3="" city2="5">	
-      <title><![CDATA[Café-débat : " Quelle école pour quelle société ?"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Ce débat autour de la question de l'école sera introduit par Elisabeth Touzot.</p>]]></abstract>
-      <description><![CDATA[<p>Le Café-Débat de Saint Quentin en Yvelines se déroule de 16h30 à 19h00 environ les premier et troisième samedis de chaque mois au &quot;Marina&quot; à Montigny le Bretonneux près du centre commercial. <br />Les sujets (philosophiques, d'actualité ou de société) sont proposés par les participants et programmés pour la ou les réunions suivantes. Certains débats peuvent être introduits par un invité spécialement sollicité. La personne qui a proposé le sujet, ou son invité, rédige un bref texte qui est distribué aux participants, et qui est présenté par son auteur.<br />La prise de parole des participants se fait ensuite dans l'ordre des demandes.</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 16h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/cafedebat_18.jpg</image>
-		</item>
-		<item index="4144" location="149" organizer="" category="11" category2="68" category3="" city2="6">	
-      <title><![CDATA[3 matchs d'impro]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Retrouvez les équipes d'impro de Déclic Théâtre à l'occasion de leurs premiers matchs de la saison.</p>]]></abstract>
-      <description><![CDATA[<p>3 matchs d'impro à noter : <br />&gt; 14H30, le match des Benjamins de Trappes (8/12 ans)<br />&gt; 16H00, le match des Cadets de Trappes (12/15 ans)<br />&gt; 20H00, le match des Juniors : Trappes / LIDY (Ligue d'Improvisation Départementale des Yvelines) (15/19 ans).
</p>
-			<p>Renseignements : 01 30 51 08 21<br /><a href="http://www.declictheatre.net/" target="_blank" class="external-link-new-window" >www.declictheatre.net</a></p>]]></description>
-      <tariffs><![CDATA[Tarif unique : 3 € (ticket d'entrée valable pour les 3 matchs).]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>08/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 décembre à 14h30, 16h et 20h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/match-dimpro_vign.jpg</image>
-		</item>
-		<item index="3603" location="56" organizer="" category="31" category2="66" category3="" city2="2">	
-      <title><![CDATA[S’approcher de la Petite Marchande d’allumettes]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>un week-end d’écriture animé par Marie-Florence Ehret</p>]]></abstract>
-      <description><![CDATA[<p>Du 18 au 22 décembre, <a href="http://www.lafermedebelebat.fr/" target="_self" class="external-link-new-window" >la Ferme de Bel Ébat</a> et la Maison de la Poésie coaccueillent <a href="http://www.maisondelapoesie.agglo-sqy.fr/agenda/date/2012/12/" target="_self" class="external-link-new-window" >Littlematchseller / Le petite marchande d’allumettes</a>. Cet atelier vous propose une approche des thèmes du conte d’Andersen sous l’angle de l’écriture. <a href="http://www.maisondelapoesie.agglo-sqy.fr/saison-2012-2013/les-poetes-et-artistes-de-la-saison/" target="_self" class="internal-link" >Marie-Florence Ehret</a> a publié des romans et de la poésie destinés aux adultes, à la jeunesse, notamment aux éditions Bayard, Thierry Magnier, Albin Michel, Syros, Rageot…
</p>
-			<p>Les textes de l’atelier seront exposés à la Ferme de Bel Ébat du 18 au 22 décembre.</p>]]></description>
-      <tariffs><![CDATA[accès libre à partir de 12 ans sur inscription obligatoire (nombre de places limité à 12) au 01 39 30 08 90 ou sur maison.poesie@agglo-sqy.fr

-			Apportez à manger, nous vous offrons la boisson et le café.]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>08/12/2012</date_start>
-      <date_end>09/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 8 et dimanche 9 décembre de 10h à 17h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[12]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/agentaatelierecriture_09.jpg</image>
-		</item>
-		<item index="3749" location="50" organizer="" category="11" category2="68" category3="" city2="1">	
-      <title><![CDATA[Stabat Mater]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Création de Normand Chaurette, à voir dans le cadre du week-end consacré à la culture québécoise.</p>]]></abstract>
-      <description><![CDATA[<p>Normand Chaurette est l’un des chefs de file de la nouvelle écriture québécoise. Il nous entraîne dans une ville imaginaire à la rencontre de femmes, de mères, toutes debout faces aux différentes épreuves qui se succèdent, et n’aspirent au bout du compte qu’à la paix et la sérénité.</p>]]></description>
-      <tariffs><![CDATA[7 € (5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>09/12/2012</date_start>
-      <date_end>09/12/2012</date_end>
-			<date_wording><![CDATA[Dimanche 9 décembre à 16h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/materdolorosa.jpg</image>
-		</item>
-		<item index="3867" location="51" organizer="" category="11" category2="68" category3="" city2="7">	
-      <title><![CDATA[Match d’improvisation]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Un spectacle familial rondement mené par la troupe des Vicignols</p>]]></abstract>
-      <description><![CDATA[<p><br />Des comédiens de tous horizons se retrouvent pour improviser sur des thèmes toujours plus exigeants, sous l’oeil acéré de l’arbitre…et du public ! Rires et émotions, voyages dans des lieux et avec des personnages plus extravagants les uns que les autres, les, comédiens vous transportent à chaque improvisation dans une histoire différente, mais toujours avec bonne humeur !<br />Venez prendre part à ce spectacle et, à chaque improvisation, désignez les comédiens que vous préférez sur scène</p>]]></description>
-      <tariffs><![CDATA[5 € (3,5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>09/12/2012</date_start>
-      <date_end>09/12/2012</date_end>
-			<date_wording><![CDATA[Dimanche 9 décembre à 17h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/les-vicignols-6.jpg</image>
-		</item>
-		<item index="4021" location="275" organizer="" category="10" category2="68" category3="" city2="4">	
-      <title><![CDATA[Bach, 200 ans de motets]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Une plongée dans l'univers musical des XVII<sup>e</sup> et XVIII<sup>e</sup> siècle avec l'Ensemble vocal de Saint-Quentin-en-Yvelines </p>]]></abstract>
-      <description><![CDATA[<p>L’Ensemble vocal explore 200 ans de motets écrits sous la plume d’une grande dynastie de musiciens allemands, celle de la famille de Bach qui a donné toutes les lettres de noblesse à ce genre musical. Ce programme aux couleurs des fêtes de Noël, sera émaillé d’explications et commenté au public afin de chercher des correspondances dans la propre famille du musicien.<br />Une soirée qui permettra de découvrir l’accomplissement du style de l’Allemagne musicienne des XVII<sup>e</sup> et XVIII<sup>e</sup> siècle et son incidence jusqu’à nos jours…
</p>
-			<p>En savoir plus : <a href="http://www.evsqy.com" target="_blank" >www.evsqy.com</a></p>]]></description>
-      <tariffs><![CDATA[10 € en prévente ( 01 30 43 71 16) , 12 € sur place (gratuit -12 ans)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>09/12/2012</date_start>
-      <date_end>09/12/2012</date_end>
-			<date_wording><![CDATA[Dimanche 9 décembre à 16h ]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-affiche_concert_motets_bach_2012_v4-_1_.jpg</image>
-		</item>
-		<item index="4149" location="138" organizer="" category="4" category2="69" category3="" city2="7">	
-      <title><![CDATA[Conférence]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>&quot;Pourquoi nous sentons-nous parfois victime, sauveur ou bourreau ?&quot;</p>]]></abstract>
-      <description><![CDATA[<p>Michelle Dussou propose de comprendre &quot;les jeux inconscients&quot; de ce triangle relationnel, de voir comment ils se manifestent dans nos relations personnelles, amoureuses, professionnelles ou sociales. <br />Un temps de réflexion qui, à terme, nous amène à changer notre relation à soi et aux autres.<br /><br />Voisins Adultes Relais: 06 77 35 46 96</p>]]></description>
-      <tariffs><![CDATA[2 € (adhérents du VAR), 5 €

-			(non-adhérents), gratuit (étudiants et demandeurs

-			d’emploi).]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>10/12/2012</date_start>
-      <date_end>10/12/2012</date_end>
-			<date_wording><![CDATA[Lundi 10 décembre à 20h30 ]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK--Conference.jpg</image>
-		</item>
-		<item index="3784" location="54" organizer="" category="18,14" category2="68" category3="" city2="3">	
-      <title><![CDATA[Pascal Péroteau]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Voici un spectacle plein d’énergie et de provocation ! Car Pascal Peroteau sait parler aux enfants ! Et même leur donner des conseils pour réclamer un hamster ou pour se bagarrer !</p>]]></abstract>
-      <description><![CDATA[<p>Conseils que les parents devront de toute évidence prendre avec dérision ! Les chansons nous emmènent dans la cour de récré, mais parlent aussi des copains ou des loups qui font peur...
</p>
-			<p> Plus qu’un spectacle : un véritable concert agrémenté d’images projetées tel un dessin animé. “Ça m’énerve”: un univers fantastique sans mièvrerie où l’on plonge tête la première, petits et grands !
</p>
-			<p>À noter : les élèves de la classe à Projet Artistique et Culturel de CP de l’école du Bois de l’Etang monteront sur scène à l’occasion de ce spectacle.</p>]]></description>
-      <tariffs><![CDATA[8 € / 6 € / 5 €]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>11/12/2012</date_start>
-      <date_end>11/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 11 décembre à 19h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[4]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/pascal-peroteau.jpg</image>
-		</item>
-		<item index="3786" location="54" organizer="" category="18,14" category2="68" category3="59" city2="3">	
-      <title><![CDATA[Pascal Péroteau]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Voici un spectacle plein d’énergie et de provocation ! Car Pascal Peroteau sait parler aux enfants ! Et même leur donner des conseils pour réclamer un un hamster ou pour se bagarrer !</p>]]></abstract>
-      <description><![CDATA[<p><strong>Représentation scolaire</strong>
</p>
-			<p>Conseils que les parents devront de toute évidence prendre avec dérision ! Les chansons nous emmènent dans la cour de récré, mais parlent aussi des copains ou des loups qui font peur...
</p>
-			<p> Plus qu’un spectacle : un véritable concert agrémenté d’images projetées tel un dessin animé. “Ça m’énerve”: un univers fantastique sans mièvrerie où l’on plonge tête la première, petits et grands !
</p>
-			<p><em>À noter : les élèves de la classe à Projet Artistique et Culturel de CP de l’école du Bois de l’Etang monteront sur scène à l’occasion de ce spectacle.</em></p>]]></description>
-      <tariffs><![CDATA[3 € (casqy), 4 € (hors casqy)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>11/12/2012</date_start>
-      <date_end>11/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 11 décembre à 14h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[4]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/pascal-peroteau_01.jpg</image>
-		</item>
-		<item index="3892" location="273" organizer="" category="" category2="22" category3="" city2="4">	
-      <title><![CDATA[Bonhommes d'hiver et divers]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Exposition des marionnettes de la Compagnie Objet Direct. Marionnettes réalisées à l’aide de matériaux de récupération, par Jeanne Sandjian.</p>]]></abstract>
-      <description><![CDATA[<p>Jeanne Sandjian met en scène pour notre plaisir d’enfant, cette exposition interactive de la nouvelle marionnette. Guidés par Jeanne, les enfants (les vrais!) pourront manipuler certains de ces objets magiques, leur donner vie et se raconter des histoires à rêver debout.<br /><a href="http://www.cie-objet-direct.com" target="_blank" >http://www.cie-objet-direct.com</a></p>]]></description>
-      <tariffs><![CDATA[gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>11/12/2012</date_start>
-      <date_end>20/12/2012</date_end>
-			<date_wording><![CDATA[Du mardi 11 au jeudi  20 décembre ]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/p-18-CIE-DES-QUIDAMS-2.jpg</image>
-		</item>
-		<item index="3979" location="53" organizer="" category="14,10,11" category2="68" category3="" city2="5">	
-      <title><![CDATA[Peau d'âne]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Offrez à vos enfants ou petits-enfants un spectacle flamboyant avec des chorégraphies délicates sur des musiques envoûtantes, des costumes chatoyants, le tout dans un décor féérique digne d’un opéra.</p>]]></abstract>
-      <description><![CDATA[<p>Sur la lignée des « Misérables », « Peau d’âne, la comédie musicale » vous offre 1h30 de rêves, de plaisirs et d’émotions, alliant performances vocales et suspens à couper le souffle dans une version épique et merveilleuse du célèbre conte pour enfants.
</p>
-			<p>Servi par des comédiens-chanteurs ayant participé aux plus grands spectacles de ces dix dernières années : « Mozart, l’Opéra Rock », « Le Roi Soleil », « Les dix commandements »…</p>]]></description>
-      <tariffs><![CDATA[De 2€70 à 11€50]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>11/12/2012</date_start>
-      <date_end>11/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 11 décembre à 20h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[7]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/peau-d-ane.jpg</image>
-		</item>
-		<item index="4027" location="55" organizer="" category="11" category2="68" category3="" city2="6">	
-      <title><![CDATA[Une Belle et une Bête]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Florence Lavaud (le Chantier Théâtre) revisite le conte classique de Madame Leprince de Beaumont, <em>La Belle et la Bête</em>.</p>]]></abstract>
-      <description><![CDATA[<p>Plutôt qu’une dualité simpliste, le beau et le laid, le bien et le mal, Florence Lavaud propose ici une écoute sensible du monde, au-delà des apparences et du paraître. La metteure en scène puise à nouveau dans le vivier des contes dits pour enfants et agite sa palette de prédilection : différence, monstruosité, solitude, légende, apparente naïveté, ombres et lumières. Dans cette <em>Belle et une Bête </em>revisitée, l’image raconte une partie de l’histoire, le son guide le spectateur vers ce qu’il ne voit pas. Un bruit de pas, des sons qui se rapprochent... Un murmure, une respiration.<br />Quelque chose est là, une bête tapie depuis longtemps. Derrière les apparences et les différences, il est d’abord question de voir au-delà et de trouver l’humain. Un voyage merveilleux pour enfin entendre l’invisible.<br /><a href="http://www.chantier-theatre.com" target="_blank" >www.chantier-theatre.com</a></p>]]></description>
-      <tariffs><![CDATA[7 € (5 €)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>11/12/2012</date_start>
-      <date_end>11/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 11 décembre à 19h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[9]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-une-belle-une-bete11-dec.jpg</image>
-		</item>
-		<item index="4001" location="22" organizer="" category="" category2="66" category3="" city2="6">	
-      <title><![CDATA[Les jeux du mercredi (Anatole-France)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p class="MsoNormal" style="MARGIN-TOP: 6pt"><span style="mso-bidi-font-family: Arial; mso-bidi-font-style: italic">Nouveau ! Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi à partir de 15h30.</span></p>]]></abstract>
-      <description><![CDATA[<p>Parce que jouer, ce n’est pas réservé qu’aux enfants<br />parce qu’une médiathèque, c’est aussi un lieu où l’on peut s’amuser<br />parce que vous avez quelques minutes devant vous… <br />Les médiathèques mettent à votre disposition, des espaces et des jeux. <br /><span style="mso-bidi-font-family: Arial; mso-bidi-font-style: italic">Jeux de cartes ou jeux de plateau, </span><span style="mso-bidi-font-family: Arial; mso-bidi-font-style: italic">de stratégie, de réflexion ou d’humour, à chacun son style, à chacun ses envies</span>, le tout dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003.jpg</image>
-		</item>
-		<item index="4002" location="67" organizer="" category="" category2="66" category3="" city2="2">	
-      <title><![CDATA[Les jeux du mercredi (Jean-Rousselot)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 16h.</p>]]></abstract>
-      <description><![CDATA[<p>Parce que jouer, ce n’est pas réservé qu’aux enfants<br />parce qu’une médiathèque, c’est aussi un lieu où l’on peut s’amuser<br />parce que vous avez quelques minutes devant vous…<br />Les médiathèques mettent à votre disposition, des espaces et des jeux.<br />Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_05.jpg</image>
-		</item>
-		<item index="4003" location="24" organizer="" category="" category2="66" category3="" city2="7">	
-      <title><![CDATA[Les jeux du mercredi (Saint-Exupéry)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h30 à 17h</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_01.jpg</image>
-		</item>
-		<item index="4005" location="26" organizer="" category="" category2="66" category3="" city2="3">	
-      <title><![CDATA[Les jeux du mercredi (Aimé-Césaire)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 17h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_03.jpg</image>
-		</item>
-		<item index="4097" location="25" organizer="" category="58" category2="68" category3="" city2="4">	
-      <title><![CDATA[Autour du sapin... Flocons de mots]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>En décembre, flocons, sorcières, père Noël à la retraite s’invitent autour du sapin… Des histoires pour réchauffe les petites et grandes oreilles.</p>]]></abstract>
-      <description><![CDATA[<p>&lt;big&gt;<strong>Flocons de mots</strong><br />&lt;/big&gt;par le conteur Ralph Nataf, Cie Les Mots Tissés
</p>
-			<p>Histoires de Noël, d’hiver, de neige, de sapins...<br />Un père Noël à la retraite m’a raconté tout ce qu’il a vécu, vu et entendu quand il portait les cadeaux aux quatre coins du monde…
</p>
-			<p>De 18 mois à 3 ans</p>]]></description>
-      <tariffs><![CDATA[]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[mercredi 12 décembre à 10h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Contes_sapin_vignette_02.jpg</image>
-		</item>
-		<item index="4098" location="26" organizer="" category="58" category2="68" category3="" city2="3">	
-      <title><![CDATA[Autour du sapin...  Contes gourmands]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>En décembre, flocons, sorcières, père Noël à la retraite s’invitent autour du sapin… Des histoires pour réchauffe les petites et grandes oreilles.<br /><br /></p>]]></abstract>
-      <description><![CDATA[<p>&lt;big&gt;<strong>Contes gourmands</strong><br />&lt;/big&gt;avec les bibliothécaires.
</p>
-			<p>La conteuse Naziha préparera de belles histoires gourmandes, à déguster, tant pour les mots, que pour les gâteaux qu’elle vous offrira avec plaisir.
</p>
-			<p>Dès 3 ans</p>]]></description>
-      <tariffs><![CDATA[Gratuit sur inscription]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[mercredi 12 décembre à 11h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Contes_sapin_vignette_03.jpg</image>
-		</item>
-		<item index="4105" location="19" organizer="" category="36" category2="22" category3="" city2="5">	
-      <title><![CDATA[Exposition Chemins nocturnes]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Zoom sur la collection Chemins nocturnes des éditions Viviane Hamy.</p>]]></abstract>
-      <description><![CDATA[<p>Exposition sur trois auteurs phares de la célèbre collection<br />de romans policiers français des éditions Viviane Hamy.
</p>
-			<p>Venez découvrir &lt;big&gt;<br />Fred Vargas, Dominique Sylvain et Antonin Varenne&lt;/big&gt;.</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>22/12/2012</date_end>
-			<date_wording><![CDATA[Du 12 au 22 décembre 2012]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/exposition_Viviane_Hamy_vignette.jpg</image>
-		</item>
-		<item index="4115" location="125" organizer="" category="" category2="22" category3="" city2="1">	
-      <title><![CDATA[Dessin(s)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>C'est une carte blanche proposée à deux collectionneurs, Annick et Louis Doucet, leur regard sur la pratique contemporaine du dessin dans son immense variété de sujets, de techniques et de modalités d’expression. </p>]]></abstract>
-      <description><![CDATA[<p>L’exposition présente un peu plus de 250 dessins – choisis parmi plus de 4 000 – de 93 artistes vivants, souvent jeunes, appartenant à la collection Cynorrhodon - FALDAC. Les artistes sont pour la plupart français ou travaillant en France, mais, au total, une douzaine de nationalités sont représentées, avec de forts contingents allemands et étasuniens.<br />Pour tenter d’appréhender la diversité, la richesse et la complexité de ce champ, un parcours en trois sections, indépendantes, mais complémentaires, est proposé : &quot;Sujets&quot;, &quot;Techniques&quot;, &quot;Géographies&quot;.
</p>
-			<p>Du mercredi au dimanche de 14h à 18h</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>17/03/2013</date_end>
-			<date_wording><![CDATA[Du mercredi 12 décembre 2012 au dimanche 17 mars 2013]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-EXPOS-DESSIN-S-.jpg</image>
-		</item>
-		<item index="4121" location="146" organizer="" category="31" category2="66" category3="" city2="8">	
-      <title><![CDATA[Couronnes de l’Avent]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Branches de sapins, laine, épis de blé, fagots de brindilles, plumes : les animateurs de la Ferme de Gally apprendront aux enfants à fabriquer une couronne de l’Avent à l’aide de matériaux naturels.</p>]]></abstract>
-      <description><![CDATA[<p>Les enfants repartiront avec leur « oeuvre » qu’ils pourront fixer sur la porte d’entrée. 
</p>
-			<p>D’autres idées d’ateliers pendant les vacances (sur les traces des animaux, pâte à pain, confection d’un cadre de laine) sur <a href="http://www.ferme.gally.com/" target="_blank" class="external-link-new-window" >www.ferme.gally.com</a>.</p>]]></description>
-      <tariffs><![CDATA[6€20]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>12/12/2012</date_start>
-      <date_end>12/12/2012</date_end>
-			<date_wording><![CDATA[Mercredi 12 décembre de 14h30 à 16h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-		</item>
-		<item index="3655" location="45" organizer="" category="13" category2="68" category3="" city2="5">	
-      <title><![CDATA[Cendrillon]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Le Ballet de l’Opéra de Lyon reprend Cendrillon, ballet contemporain de Maguy Marin créé en 1985, et devenu un classique.</p>]]></abstract>
-      <description><![CDATA[<p>Dans une maison de carton-pâte, la poupée Cendrillon va vivre des aventures hors du commun teintées de joies, de souffrances et de méchancetés très humaines. <br />En faisant revêtir costumes rembourrés et masques aux danseurs, la chorégraphe fait ressortir toute l’humanité de ces poupées sur lesquelles, adultes et enfants, peuvent projeter leurs émotions. Tout en rendant très contemporain le célèbre ballet classique, Maguy Marin n’en retranche en rien le merveilleux de l’histoire. <br />Il y a toujours une belle-mère forcément méchante et un prince évidemment charmant. Toute la mélancolie des rêves perdus refait surface soutenue par la virtuosité de la partition de Serge Prokofiev. <br />Ce ballet est une des plus belles réussites de la chorégraphe et tourne dans le monde entier depuis plus de vingt-cinq ans !</p>]]></description>
-      <tariffs><![CDATA[28 € (21 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>13/12/2012</date_start>
-      <date_end>13/12/2012</date_end>
-			<date_wording><![CDATA[Jeudi 13 décembre à 19h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[<iframe frameborder="0" width="320" height="240" src="http://www.dailymotion.com/embed/video/x5nbon"></iframe><br /><a href="http://www.dailymotion.com/video/x5nbon_56-cendrillon_creation" target="_blank">56_Cendrillon</a> <i>par <a href="http://www.dailymotion.com/carrascosaf" target="_blank">carrascosaf</a></i>]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Cendrillon.jpg</image>
-		</item>
-		<item index="3727" location="56" organizer="" category="11" category2="68" category3="" city2="2">	
-      <title><![CDATA[Quelqu'un dehors moi nulle part]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Emma erre dans une zone incertaine, fantasmagorique, parfois loufoque, faite de porosité et de glissements entre son monde intérieur et le monde réel. </p>]]></abstract>
-      <description><![CDATA[<p>Des figures issues de son cerveau s’invitent dans son quotidien. Emma est schizophrène. Le public est invité à partager sa perception. L’écriture joue sur le seuil, la limite entre situations réelles et fictives pour évoquer un état de perte de repères, d’identité, de définition de soi en fonction de l’autre. Cette maladie clinique devient métaphorique des lignes incertaines qui jalonnent la société et les situations politiques actuelles.</p>]]></description>
-      <tariffs><![CDATA[De 5 à 10€]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>13/12/2012</date_start>
-      <date_end>13/12/2012</date_end>
-			<date_wording><![CDATA[Jeudi 13 décembre à 19h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[16]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/quelqu-un-dehors-theatre.jpg</image>
-		</item>
-		<item index="4037" location="15" organizer="" category="11" category2="70,68" category3="" city2="1">	
-      <title><![CDATA[D'un retournement l'autre]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Comédie sérieuse sur la crise financière en quatre actes et en alexandrins. Une pièce de Frédéric Lordon. Mise en espace de Luc Clémentin. Par la compagnie Ultima chamada.</p>]]></abstract>
-      <description><![CDATA[<p>Les Universités Populaires des Yvelines sont des cours gratuits organisés par ATTAC78 pour dispenser et partager un savoir accessible à tous. Le but est d'offrir un espace d'éducation populaire c'est-à-dire un lieu pour diffuser des connaissances politiques, économiques et sociales afin de comprendre le fonctionnement de la société et du monde et d'échanger, de confronter ses opinions et d'élaborer ensemble des éléments de réponses aux questions actuelles.
</p>
-			<p>Renseignements : 01 30 43 67 78<br /><a href="javascript:linkTo_UnCryptMailto('ocknvq,wr9:Bncrquvg0pgv');" class="mail" >up78(at)laposte.net</a><br /><a href="typo3conf/ext/artifica_agenda/mod1/www.up78.org" target="_blank" >www.up78.org</a></p>]]></description>
-      <tariffs><![CDATA[8 euros]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>13/12/2012</date_start>
-      <date_end>13/12/2012</date_end>
-			<date_wording><![CDATA[Jeudi 13 décembre 2012 à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[5]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/up78-vign_02.jpg</image>
-		</item>
-		<item index="3458" location="15" organizer="" category="13" category2="68" category3="" city2="1">	
-      <title><![CDATA[L’Ogresse Des Archives Et Son Chien]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Surréalisme et transgression, poésie et sens du burlesque se mêlent dans l’univers des frères Ben Aïm, Christian et François.</p>]]></abstract>
-      <description><![CDATA[<p>Neuf interprètes marient la danse et les arts du cirque sur les notes d’une partition originale, interprétée en live. Un chaperon kamikaze, une princesse SDF, une belle au bois dormant internée : les héros, héroïnes et l’univers tout entier des contes de fée sont ici dynamités pour une fable contemporaine aux allures de réjouissant détournement. Un labyrinthe fantastique et ludique où l’on se perd avec plaisir.
</p>
-			<p><em>Avec l'aide à la diffusion d'ARCADI, Conseil Régional d'Île-de-France.</em>
</p>
-			<p class="encart"><strong>+ ECOLE DU SPECTATEUR avec Sonia Schoonejans</strong></p>
-			<p>Chorégraphie et scénographie : Christian et François ben Aïm<br />Interprètes : Johan Bichot, Peggy Grelat-Dupont, Waldemar Kretchkowsky, Paolo Locci, Pierre-Emmanuel Sorignet, Gill Viandier, François Ben Aïm<br />Musiciens : Bruno Ferrier, Mathilde Sternat<br />Composition musicale : Jean-Baptiste Sabiani<br />vidéaste : Mélusine Thiry<br />Création costumes : Dulcie Best<br />Création lumières : Laurent Patissier<br />Interprètes film : Eva Defouloy-Mosoni, Jean Ben Aïm, Christian Ben Aïm<br />Régisseur général : Luc Béril<br />Régisseur son : Sébastien Teulié ou Wladimir Skonieczny
</p>
-			<p><strong>Production</strong> : cfb 451
</p>
-			<p><strong>Coproductions :<br /></strong>Théâtre De La Madeleine, Scène Conventionnée De Troyes // Espace Gérard Philipe, Saint-André-Les-Vergers // Théâtre Paul Eluard, Scène Conventionnée Bezons // Espace 1789, Saint-Ouen // Théâtre Paul Eluard, Choisy-Le-Roi // Le Théâtre – Scène Nationale De Mâcon // Accueil Studio : Red Brick Project Ccn Roubaix Nord-Pas De Calais - Carolyn Carlson, Ccn De Biarritz - Thierry Malandain, Ccn De Créteil Et Du Val-De-Marne - Cie Kafig // Atelier De Paris - Carolyn Carlson Et Cdc Paris Réseau Centre De Développement Chorégraphique (Atelier De Paris-Carolyn Carlson, L¹Etoile Du Nord, Micadanses-Addp, Studio Le Regard Du Cygne-Amd Xxe) // Arcadi – Aide A La Production Et A La Diffusion En Ile-De-France (2011-2012 Et 2012-2013) // Soutiens A La Création : Adami // Conseil Général Du Val-De-Marne // Cdc Du Val-De-Marne Pour La Diffusion Dans Le 94 // Avec Le Soutien A La Diffusion De La Spedidam En 2012 // Conseil Régional De Champagne-Ardenne - Orcca // Ville De Palaiseau // Résidence De Création : Hostellerie De Pontempeyrat – Association Regards Et Mouvement // Cfb451 Est Soutenue Parla Dracd’ile-De-France– Ministèrede La Cultureet De Lacommunication, Par Le Conseilgénéralduval-De-Marne Au Titre De L’aide Au Fonctionnement Et Parla Région Ile-De-Franceau Titre De L’emploi-Tremplin // Christian Et François Ben Aïm Sont Artiste En Résidence Depuis 2006 Et Artistes Associés Depuis 2009 Au Théâtre De La Madeleine - Scène Conventionnée De Troyes, Avec Le Soutien De La Région Champagne-Ardenne (Orcca). // La Compagnie Est En Résidence A L'espace 1789 A Saint-Ouen En 2011 Et 2012 Avec Le Soutien Du Conseil Général De La Seine-St-Denis (93).</p>]]></description>
-      <tariffs><![CDATA[Grande Salle - Tarif B]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre 2012 à 21h, durée 1h15 ]]></date_wording>
-      <url1><![CDATA[http://www.rodrigue.fr/transact/venteenligne.asp?WCI=PANIER_listeseances&IDStructure=360&IDManif=141]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[http://www.youtube.com/watch?v=qYO_-JRoaZ0]]></url_resa>
-      <age><![CDATA[11]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/L_ogresse-des-archives-et-son-chien-_--Estelle-Brugerolles-.jpg</image>
-		</item>
-		<item index="3655" location="45" organizer="" category="13" category2="68" category3="" city2="5">	
-      <title><![CDATA[Cendrillon]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Le Ballet de l’Opéra de Lyon reprend Cendrillon, ballet contemporain de Maguy Marin créé en 1985, et devenu un classique.</p>]]></abstract>
-      <description><![CDATA[<p>Dans une maison de carton-pâte, la poupée Cendrillon va vivre des aventures hors du commun teintées de joies, de souffrances et de méchancetés très humaines. <br />En faisant revêtir costumes rembourrés et masques aux danseurs, la chorégraphe fait ressortir toute l’humanité de ces poupées sur lesquelles, adultes et enfants, peuvent projeter leurs émotions. Tout en rendant très contemporain le célèbre ballet classique, Maguy Marin n’en retranche en rien le merveilleux de l’histoire. <br />Il y a toujours une belle-mère forcément méchante et un prince évidemment charmant. Toute la mélancolie des rêves perdus refait surface soutenue par la virtuosité de la partition de Serge Prokofiev. <br />Ce ballet est une des plus belles réussites de la chorégraphe et tourne dans le monde entier depuis plus de vingt-cinq ans !</p>]]></description>
-      <tariffs><![CDATA[28 € (21 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[<iframe frameborder="0" width="320" height="240" src="http://www.dailymotion.com/embed/video/x5nbon"></iframe><br /><a href="http://www.dailymotion.com/video/x5nbon_56-cendrillon_creation" target="_blank">56_Cendrillon</a> <i>par <a href="http://www.dailymotion.com/carrascosaf" target="_blank">carrascosaf</a></i>]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Cendrillon.jpg</image>
-		</item>
-		<item index="3656" location="45" organizer="" category="58,10" category2="" category3="" city2="5">	
-      <title><![CDATA[Antti Puuhaara]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Opéra-marionnettes qui dévoile les trésors et les mystères de la forêt finlandaise, interprété par l’Ensemble Musicatreize.<br />�</p>]]></abstract>
-      <description><![CDATA[<p>Tout droit sorti d'une légende finlandaise, un jeune homme va réaliser un voyage initiatique. La forêt qu’il doit traverser, est un lieu propice aux contes. Et surtout aux êtres de mystère qui l’habitent ou la hantent : géants, devins, fille-oiseau ou encore sorcières.<br />Mélange de cycle choral et de mélodrame, <em>Antti Puuhaara </em><em></em>associe dialogues parlés en français et choeurs en finnois. Le compositeur Tapio Tuomela crée une musique fascinante qui fait chanter toute la forêt. <br />Pour faire entendre toute la force de ces mystères, la metteure en scène Aurélie Hubeau a choisi les ombres et les marionnettes, et c’est le public lui-même qui se retrouve comme pris dans le labyrinthe de la forêt.</p>]]></description>
-      <tariffs><![CDATA[16 € (13 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[7]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/antti-puuhaara.jpg</image>
-		</item>
-		<item index="3727" location="56" organizer="" category="11" category2="68" category3="" city2="2">	
-      <title><![CDATA[Quelqu'un dehors moi nulle part]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Emma erre dans une zone incertaine, fantasmagorique, parfois loufoque, faite de porosité et de glissements entre son monde intérieur et le monde réel. </p>]]></abstract>
-      <description><![CDATA[<p>Des figures issues de son cerveau s’invitent dans son quotidien. Emma est schizophrène. Le public est invité à partager sa perception. L’écriture joue sur le seuil, la limite entre situations réelles et fictives pour évoquer un état de perte de repères, d’identité, de définition de soi en fonction de l’autre. Cette maladie clinique devient métaphorique des lignes incertaines qui jalonnent la société et les situations politiques actuelles.</p>]]></description>
-      <tariffs><![CDATA[De 5 à 10€]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[16]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/quelqu-un-dehors-theatre.jpg</image>
-		</item>
-		<item index="3868" location="51" organizer="" category="11" category2="68" category3="" city2="7">	
-      <title><![CDATA[La valse du hasard]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Pièce de Victor Haïm interprétée par la compagnie Passage à l’ACT</p>]]></abstract>
-      <description><![CDATA[<p>Mourant dans un accident de voiture, une femme arrive dans un endroit mystérieux où un ange lui propose un drôle de jeu. Elle va devoir raconter sa vie le plus sincèrement possible, une dernière confession, sans tricherie, sans mauvaise foi. L'ange va lui accorder des points ou lui en enlever selon une règle impossible à comprendre… Si elle parvient jusqu'à cent points, les portes du paradis s'ouvriront, sinon…</p>]]></description>
-      <tariffs><![CDATA[]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre à 21h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[12]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/valse.jpg</image>
-		</item>
-		<item index="4119" location="48" organizer="" category="16,10" category2="68" category3="" city2="2">	
-      <title><![CDATA[Jazz : Trio Éric Plandé]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Le saxophoniste virtuose présente son nouveau trio : Touching.</p>]]></abstract>
-      <description><![CDATA[<p>Avec ce concert, Eric Plandé va nous présenter son nouveau trio d’influence post J. Coltrane/C. Taylor, formé avec le pianiste allemand Üwe Oberg (E.Parker, Paul lowan) et le batteur américain Peter Perfido(Gary Peacock).<br />Artistes confirmés d’une riche diversité musicale, les trois musiciens font preuve d’une “triple entente” et d’une grande fluidité, chacun s’évertuant à mettre l’autre en valeur.<br />L’improvisation occupe une place majeure au sein du groupe, et la sensation de liberté qu’elle dégage suscite une grande intensité émotionnelle sur scène.
</p>
-			<p><br /><a href="http://www.myspace.com/eplande" target="_blank" >www.myspace.com/eplande</a> 
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[6.50 € / 5.50 €]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>14/12/2012</date_start>
-      <date_end>14/12/2012</date_end>
-			<date_wording><![CDATA[Vendredi 14 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[http://3emeacte.com/labatteriedeguyancourt/Places.aspx?seance=00000000-0000-0000-0226-000000000166]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-Trio-eric_plande.jpg</image>
-		</item>
-		<item index="3459" location="15" organizer="" category="16" category2="68" category3="" city2="1">	
-      <title><![CDATA[ONJ - Piazzola]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Viva Piazzolla !</p>]]></abstract>
-      <description><![CDATA[<p>Cet éblouissant hommage de l’Orchestre National de Jazz au bandonéoniste argentin a été co-imaginé par l’arrangeur Gil Goldstein, qui fut notamment le compagnon de route de Miles Davis, Bill Evans ou Paul Simon, Daniel Yvinec. Au menu notamment, les pièces culte de Piazzolla, Libertango, Vuelvo al sur ou Balada para un loco. Le bandonéon du maître est réparti, virtuellement, entre les membres de l’orchestre. Un portrait libre, vif et chatoyant, tout autant qu’une invitation au voyage.
</p>
-			<p class="encart"><strong>+ RENCONTRE avec Daniel Yvinec et Jean-Michel Proust à 19h</strong></p>
-			<p>Direction artistique Daniel Yvinec<br />arrangements Gil Goldstein<br />Eve Risser Piano, piano préparé, flûte <br />Vincent Lafont, claviers, électronique<br />Antonin-Tri Hoang, saxophone alto, clarinettes<br />Matthieu Metzger, saxophones, électronique<br />Joce Mienniel, flûtes, électronique<br />Rémi Dumoulin, saxophone ténor, clarinettes<br />Sylvain Bardiau, trompette, bugle, trombone<br />Pierre Perchaud, guitare<br />Sylvain Daniel, basse électrique<br />Yoann Serra, batterie
</p>
-			<p><strong>Production<br /></strong>Programme créé en janvier 2012 au Pannonica à l’issue d’une résidence de création.<br /><strong>Co-production <br /></strong>Pannonica et le lieu unique<br />L’orchestre national de jazz est porté par l'association pour le jazz en orchestre national (ajon).<br />Subventionnée par le ministère de la culture et de la communication (dmdts), elle bénéficie également sur certains projets du soutien de culturesfrance, de la spedidam et de mfa. </p>]]></description>
-      <tariffs><![CDATA[Grande Salle - Tarif A]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre 2012 à 21h, durée : 1h30]]></date_wording>
-      <url1><![CDATA[http://www.rodrigue.fr/transact/venteenligne.asp?WCI=PANIER_listeseances&IDStructure=360&IDManif=143]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[<iframe src="http://player.vimeo.com/video/39762610" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> <p><a href="http://vimeo.com/39762610">PIAZZOLLA!</a> from <a href="http://vimeo.com/user9331407">Juan Sebastian Torales</a> on <a href="http://vimeo.com">Vimeo</a>.</p>]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/ONJ-Piazzola-_--Annabelle-Tiaffay-.jpg</image>
-		</item>
-		<item index="3655" location="45" organizer="" category="13" category2="68" category3="" city2="5">	
-      <title><![CDATA[Cendrillon]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Le Ballet de l’Opéra de Lyon reprend Cendrillon, ballet contemporain de Maguy Marin créé en 1985, et devenu un classique.</p>]]></abstract>
-      <description><![CDATA[<p>Dans une maison de carton-pâte, la poupée Cendrillon va vivre des aventures hors du commun teintées de joies, de souffrances et de méchancetés très humaines. <br />En faisant revêtir costumes rembourrés et masques aux danseurs, la chorégraphe fait ressortir toute l’humanité de ces poupées sur lesquelles, adultes et enfants, peuvent projeter leurs émotions. Tout en rendant très contemporain le célèbre ballet classique, Maguy Marin n’en retranche en rien le merveilleux de l’histoire. <br />Il y a toujours une belle-mère forcément méchante et un prince évidemment charmant. Toute la mélancolie des rêves perdus refait surface soutenue par la virtuosité de la partition de Serge Prokofiev. <br />Ce ballet est une des plus belles réussites de la chorégraphe et tourne dans le monde entier depuis plus de vingt-cinq ans !</p>]]></description>
-      <tariffs><![CDATA[28 € (21 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[<iframe frameborder="0" width="320" height="240" src="http://www.dailymotion.com/embed/video/x5nbon"></iframe><br /><a href="http://www.dailymotion.com/video/x5nbon_56-cendrillon_creation" target="_blank">56_Cendrillon</a> <i>par <a href="http://www.dailymotion.com/carrascosaf" target="_blank">carrascosaf</a></i>]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Cendrillon.jpg</image>
-		</item>
-		<item index="3656" location="45" organizer="" category="58,10" category2="" category3="" city2="5">	
-      <title><![CDATA[Antti Puuhaara]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Opéra-marionnettes qui dévoile les trésors et les mystères de la forêt finlandaise, interprété par l’Ensemble Musicatreize.<br />�</p>]]></abstract>
-      <description><![CDATA[<p>Tout droit sorti d'une légende finlandaise, un jeune homme va réaliser un voyage initiatique. La forêt qu’il doit traverser, est un lieu propice aux contes. Et surtout aux êtres de mystère qui l’habitent ou la hantent : géants, devins, fille-oiseau ou encore sorcières.<br />Mélange de cycle choral et de mélodrame, <em>Antti Puuhaara </em><em></em>associe dialogues parlés en français et choeurs en finnois. Le compositeur Tapio Tuomela crée une musique fascinante qui fait chanter toute la forêt. <br />Pour faire entendre toute la force de ces mystères, la metteure en scène Aurélie Hubeau a choisi les ombres et les marionnettes, et c’est le public lui-même qui se retrouve comme pris dans le labyrinthe de la forêt.</p>]]></description>
-      <tariffs><![CDATA[16 € (13 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 15h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[7]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/antti-puuhaara.jpg</image>
-		</item>
-		<item index="4055" location="286" organizer="" category="18" category2="68" category3="" city2="2">	
-      <title><![CDATA[Concert de Noël par Croque Notes]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Traditionnel concert de Noël sous la direction de la nouvelle chef de chœur, Catherine Lautier.</p>]]></abstract>
-      <description><![CDATA[<p>Choriste et soliste de longue date au sein de Croque Notes, Catherine Lautier a pris ses fonctions de chef de chœur en septembre.<br />Les choristes retrouveront leur public à l’Eglise St Victor, totalement rénovée, pour de superbes chants de Noël à quatre voix, accompagnés au piano. 
</p>
-			<p>Renseignements : <a href="javascript:linkTo_UnCryptMailto('ocknvq,Ejqtcng0etqswgpqvguBhtgg0ht');" >Chorale.croquenotes(at)free.fr</a> ou&nbsp; 01 30 44 15 47<br />&nbsp;<br /> <a href="http://chorale.croquenotes.free.fr" target="_blank" >http://chorale.croquenotes.free.fr</a><br /><br /><br /></p>]]></description>
-      <tariffs><![CDATA[10 € (gratuit - 12 ans)]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 20H30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/OK-Croque-Notes_01.jpg</image>
-		</item>
-		<item index="4077" location="6" organizer="" category="31" category2="66" category3="" city2="4">	
-      <title><![CDATA[Atelier "Drôles d'anges !"]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Venez créer vos propres anges avec des matériaux de récupération pour les fêtes de fin d'année !</p>]]></abstract>
-      <description><![CDATA[<p>Animé par Armelle Barraud, artiste designer dentellière. Dans le cadre de l’opération Parvis en fête.
</p>
-			<p>Faîtes appel à votre créativité pour vous éloigner des traditionnelles<br />décorations de Noël ! À vous de créer vos propres anges avec des<br />matériaux de récupération pour impressionner votre entourage. Armelle<br />Barraud, l’un des artistes de l’exposition « Drôles d’Anges » présentée au<br />Musée de la ville en 2011, sera là pour vous guider…</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 15h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/anges_vign.jpg</image>
-		</item>
-		<item index="4086" location="" organizer="" category="4" category2="69" category3="" city2="">	
-      <title><![CDATA[Je consomme, nous consumons… nos ressources et nos vies]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>C’est nouveau ! Désormais tous les samedis après-midi, rendez-vous avec l’actualité pour mieux comprendre le monde qui nous entoure. 3 approches pour découvrir, échanger, partager ...</p>]]></abstract>
-      <description><![CDATA[<p><strong>ACTUALITÉ<br /></strong>&lt;small&gt;POLITIQUE, ÉCONOMIQUE, SOCIALE&lt;/small&gt;
</p>
-			<h3>Je consomme, nous consumons… nos ressources et nos vies</h3>
-			<p>Consommer est un geste personnel, quotidien mais aussi un enjeu économique mondial dont les règles perturbent les équilibres, les cultures, induisent des effets qui dépassent les motivations et consciences de chacun. Quand nous consommons, jusqu’où porte notre action et jusqu’à quand ?</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[samedi 15 décembre 15h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Visuel_Les_samedis_de_l_actu_vignette_01.jpg</image>
-		</item>
-		<item index="4099" location="67" organizer="" category="58" category2="68" category3="" city2="2">	
-      <title><![CDATA[Autour du sapin... Le Grand voyage de Madame Lune]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>En décembre, flocons, sorcières, père Noël à la retraite s’invitent autour du sapin… Des histoires pour réchauffe les petites et grandes oreilles.</p>]]></abstract>
-      <description><![CDATA[<p>&lt;big&gt;<strong>Le Grand voyage de Madame Lune</strong><br />&lt;/big&gt;par la Cie Touk Touk, conte, mime, marionnettes et comptines.
</p>
-			<p>Une grosse boule jaune dans la panière de la lavandière. C’est le début du beau voyage de Madame Lune, en comptines et en musique.
</p>
-			<p>De 1 à 6 ans</p>]]></description>
-      <tariffs><![CDATA[Gratuit sur inscription]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[samedi 15 décembre à 11h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Contes_sapin_vignette_04.jpg</image>
-		</item>
-		<item index="4107" location="19" organizer="" category="36" category2="69" category3="" city2="5">	
-      <title><![CDATA[Rencontre François Vallejo]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Proposée dans le cadre des samedis de l'actu des médiathèques, cette rencontre permettra de débattre de faits d'actualité.</p>]]></abstract>
-      <description><![CDATA[<p class="MsoNormal"> Rencontre avec <strong>François Vallejo</strong> autour du sujet de son dernier roman<em> <strong>Métamorphoses</strong> </em>qui<em> </em>coupe le souffle par sa description et son analyse féroce des méfaits de notre époque : la consommation à outrance de l’information, l’obligation de la vitesse dans tous les domaines, la montée en puissance du communautaire au détriment du collectif.</p>
-			<p><a href="http://www.viviane-hamy.fr/les-auteurs/article/francois-vallejo" target="_self" class="external-link-new-window" >Roman paru aux éditions Viviane Hamy.</a>
</p>
-			<p>&nbsp;</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 16h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/01_Francois_Vallejo_VIGNETTE_c__Antoine_Rozes.jpg</image>
-		</item>
-		<item index="4120" location="149" organizer="" category="10" category2="66" category3="" city2="6">	
-      <title><![CDATA[How Sweet The Sound !]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>La Chorale St Quentin Gospel, créée à Guyancourt en 1994, vous propose de vivre son répertoire musical depuis les chants d'esclaves jusqu'au Gospel vibrant.</p>]]></abstract>
-      <description><![CDATA[<p>Chaque manifestation est un moment unique de partage et d'émotions entre le public et les artistes.<br /> <br /> Du Rythm and Blues aux Negro Spiritual, la chorale s'est taillée une solide réputation qui l'a amenée à participer à des festivals internationaux comme ceux de Paris, Chartres ou encore Stockholm.
</p>
-			<p>Renseignements : 01 30 43 65 25<br /><a href="http://www.stquentingospel.fr/" target="_blank" class="external-link-new-window" >http://www.stquentingospel.fr</a></p>]]></description>
-      <tariffs><![CDATA[Tarif unique 10 Euros réservation (frais de réservation inclus) Fnac, Carrefour, France billet.]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/gospel-sqy_vign.jpg</image>
-		</item>
-		<item index="4122" location="71" organizer="" category="10" category2="68" category3="" city2="7">	
-      <title><![CDATA[Concert pas si classique]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Musique classique, humour, sketches sont les ingrédients de ce concert classique, pas vraiment classique, que donneront « Les Pétillantes ».<br /><br /></p>]]></abstract>
-      <description><![CDATA[<p>Un groupe de musiciennes qui veulent donner quelques bulles de légèreté à Dvorak, Rachmaninov ou Gershwin.</p>]]></description>
-      <tariffs><![CDATA[Sur inscription, participation au chapeau]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-		</item>
-		<item index="4123" location="273" organizer="" category="" category2="66" category3="" city2="4">	
-      <title><![CDATA[Magny fête Noël]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Ateliers artistiques, maquillage, dégustation, spectacle de rue et feu d’artifice : un après-midi festif pour fêter Noël avant l’heure. </p>]]></abstract>
-      <description><![CDATA[]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre de 15h à 18h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-		</item>
-		<item index="4124" location="272" organizer="" category="36" category2="66" category3="" city2="5">	
-      <title><![CDATA[Dédicaces au Pavé]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Amateurs de bandes dessinées, sachez que trois auteurs seront en dédicace, ce jour-là.</p>]]></abstract>
-      <description><![CDATA[<p>Claire Bigard pour ses albums Méprise et Le Casque d’Agris et Frédéric Mannicot et Victor Mendes pour le tome I de Synchronicity.</p>]]></description>
-      <tariffs><![CDATA[Entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-		</item>
-		<item index="3538" location="186" organizer="27" category="36,10" category2="66" category3="" city2="8">	
-      <title><![CDATA[La Maison de la Poésie Rhône-Alpes accueille la Maison de la Poésie de Saint-Quentin-en-Yvelines.]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Dans le cadre du festival organisé par la Maison de la Poésie Rhône-Alpes, nous présentons 2 artistes de la région Rhône-Alpes qui sont aussi associés à notre programmation</p>]]></abstract>
-      <description><![CDATA[<p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21.3pt; LINE-HEIGHT: normal"> <strong>André Stoketti</strong>, compositeur, chanteur et flûtiste, qui sera en concert chez nous le <a href="http://www.maisondelapoesie.agglo-sqy.fr/agenda/detail/evenement/fluturiste/" target="_self" class="external-link-new-window" >28 février 2013.</a><strong></strong></p>
-			<p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21.3pt; LINE-HEIGHT: normal"><strong>Isabelle Damotte</strong>, poète, auteure de <em>Frère</em>, éditions Cheyne, Prix PoésYvelines des Collégiens 2012, invitée de la Nuit blanche de la Poésie.</p>
-			<p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21.3pt; LINE-HEIGHT: normal"><br />Consommation possible sur place&lt;small&gt;&lt;/small&gt;</p>
-			<p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21.3pt; LINE-HEIGHT: normal">Le Baz'Art des mots Librairie, espace art et bar à thé, 19 grande rue, 26390 Hauterives<br />Réservations : 04 75 68 95 40<br />lebazartdesmots.over-blog.com</p>]]></description>
-      <tariffs><![CDATA[entrée libre]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>15/12/2012</date_start>
-      <date_end>15/12/2012</date_end>
-			<date_wording><![CDATA[Samedi 15 décembre à 20h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/agendafestivalmaipo.jpg</image>
-		</item>
-		<item index="3525" location="47" organizer="34" category="14,11" category2="68" category3="59" city2="2">	
-      <title><![CDATA[Littlematchseller / Petite marchande d'allumettes]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Petite marchande d’aujourd’hui. Son commerce est illégal. À la sauvette… Les allées froides d’un grand centre commercial, où tout s'achète et tout se vend – où l'on achète même le vent. </p>]]></abstract>
-      <description><![CDATA[<p>Elle se fond dans l'univers glacial du marbre et des vitrines, invisible aux yeux des chalands affairés en cette veille du Nouvel An. Recroquevillée dans un coin minuscule d’elle-même, elle craque les allumettes qu'elle ne parvient pas à vendre. À chaque flamme son rêve. Animaux légendaires, esprits musiciens, supernovae, galaxies en expansion… À défaut de chaleur, elle aura de la lumière.
</p>
-			<p><em>Conception et scénographie Nicolas Liautard (d’après The Little Match Seller, film muet de James Williamson (1902) et La petite marchande d’allumettes d’Hans Christian Andersen). Avec Norma Conrath en alternance avec Mélanie Liautard, Jürg Häring, Marion Suzanne, distribution en cours. Collaboration à la scénographie Pascal Doudement. Construction des décors Les Ateliers de l’Opéra de Rouen. Lumières Antoine Fouqueau. Créations sonores François Leymarie. Réalisation des images Michaël Dusautoy. Costumes Marion Lachaud. Sculptures, marionnettes Anne Leray.</em>
</p>
-			<p>&lt;small&gt;Production La Nouvelle Compagnie. Coproduction La Ferme de Bel Ébat – théâtre de Guyancourt, Théâtre André Malraux à Chevilly-Larue, La Scène Watteau Théâtre de Nogent sur Marne. Avec le soutien du Ministère de la Culture – DRAC Ile-de-France, du Conseil général du Val de Marne, de la Région Ile-de-France.&lt;/small&gt;
</p>
-			<p>En partenariat avec <a href="http://www.lafermedebelebat.fr/" target="_self" class="external-link-new-window" >La Ferme de Bel Ébat</a> et le <a href="http://www.voisins78.fr/index.php/fr/culture-a-sport/culture" target="_self" class="external-link-new-window" >Service culturel de Voisins-le-Bretonneux.</a></p>]]></description>
-      <tariffs><![CDATA[De 3 à 4€]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>18/12/2012</date_start>
-      <date_end>21/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 18, jeudi 20 et vendredi 21 décembre à 9h45 et 14h]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[6]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/agendapetitemarchandeallumette.jpg</image>
-		</item>
-		<item index="3657" location="45" organizer="" category="33" category2="68" category3="" city2="5">	
-      <title><![CDATA[Wear it like a crown (Porter ses peurs et ses échecs avec fierté)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p><br />L'univers étrange, drôle et envoûtant de la compagnie suédoise de référence dans les arts du cirque, Cirkus Cirkör, d’une virtuosité et d’une beauté stupéfiantes !</p>]]></abstract>
-      <description><![CDATA[<p>La Cie explore les tensions entre l’hémisphère gauche de notre cerveau, celui de la raison froide, de l’ordre et de la logique, et l’hémisphère droit, celui de l’imagination, des désirs et des émotions. <br />Sur la musique de Rebekka Karijord qui a donné au titre son spectacle, ce sont l’ordre et le chaos de nos existences qui sont évoqués.<br />Dans un univers inspiré de l’univers fantastique de Tim Burton, fait d’ombres et de lumières, à la fois tragi-comique et absurde, six personnages tentent de se rencontrer et de se comprendre. Chacun tente d’atteindre l’autre au moyen de ressources inventives, oniriques et décalées. <br />Acrobates, jongleurs, trapézistes, équilibristes, ces artistes complets sont aussi chanteurs, danseurs, acteurs et musiciens ! Conjuguant théâtralité, inventivité, poésie et prouesses physiques, Cirkus Cirkör nous entraîne, le souffle coupé, dans le monde rock et fantasque du cirque scandinave contemporain.</p>]]></description>
-      <tariffs><![CDATA[21 € (16 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>18/12/2012</date_start>
-      <date_end>18/12/2012</date_end>
-			<date_wording><![CDATA[Mardi 18 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[10]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/wear-it-like.jpg</image>
-		</item>
-		<item index="3657" location="45" organizer="" category="33" category2="68" category3="" city2="5">	
-      <title><![CDATA[Wear it like a crown (Porter ses peurs et ses échecs avec fierté)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p><br />L'univers étrange, drôle et envoûtant de la compagnie suédoise de référence dans les arts du cirque, Cirkus Cirkör, d’une virtuosité et d’une beauté stupéfiantes !</p>]]></abstract>
-      <description><![CDATA[<p>La Cie explore les tensions entre l’hémisphère gauche de notre cerveau, celui de la raison froide, de l’ordre et de la logique, et l’hémisphère droit, celui de l’imagination, des désirs et des émotions. <br />Sur la musique de Rebekka Karijord qui a donné au titre son spectacle, ce sont l’ordre et le chaos de nos existences qui sont évoqués.<br />Dans un univers inspiré de l’univers fantastique de Tim Burton, fait d’ombres et de lumières, à la fois tragi-comique et absurde, six personnages tentent de se rencontrer et de se comprendre. Chacun tente d’atteindre l’autre au moyen de ressources inventives, oniriques et décalées. <br />Acrobates, jongleurs, trapézistes, équilibristes, ces artistes complets sont aussi chanteurs, danseurs, acteurs et musiciens ! Conjuguant théâtralité, inventivité, poésie et prouesses physiques, Cirkus Cirkör nous entraîne, le souffle coupé, dans le monde rock et fantasque du cirque scandinave contemporain.</p>]]></description>
-      <tariffs><![CDATA[21 € (16 € à 6 € )]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/12/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[Mercredi 19 décembre à 20h30]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[10]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/wear-it-like.jpg</image>
-		</item>
-		<item index="4002" location="67" organizer="" category="" category2="66" category3="" city2="2">	
-      <title><![CDATA[Les jeux du mercredi (Jean-Rousselot)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 16h.</p>]]></abstract>
-      <description><![CDATA[<p>Parce que jouer, ce n’est pas réservé qu’aux enfants<br />parce qu’une médiathèque, c’est aussi un lieu où l’on peut s’amuser<br />parce que vous avez quelques minutes devant vous…<br />Les médiathèques mettent à votre disposition, des espaces et des jeux.<br />Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/12/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_05.jpg</image>
-		</item>
-		<item index="4004" location="20" organizer="" category="" category2="66" category3="" city2="1">	
-      <title><![CDATA[Les jeux du mercredi (7-Mares)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 16h30 à 18h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/12/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_02.jpg</image>
-		</item>
-		<item index="4005" location="26" organizer="" category="" category2="66" category3="" city2="3">	
-      <title><![CDATA[Les jeux du mercredi (Aimé-Césaire)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi de 15h à 17h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/12/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_03.jpg</image>
-		</item>
-		<item index="4006" location="19" organizer="" category="" category2="66" category3="" city2="5">	
-      <title><![CDATA[Les jeux du mercredi (Canal)]]></title>
-      <subtitle><![CDATA[]]></subtitle>
-      <abstract><![CDATA[<p>Enfants, adolescents, adultes, à vous de jouer et de participer aux ateliers jeux, proposés les mercredis après-midi à 14h.</p>]]></abstract>
-      <description><![CDATA[<p>Les médiathèques mettent à votre disposition, des espaces et des jeux. Venez découvrir des jeux de cartes, de plateaux, de stratégie, de réflexion ou d’humour, dans une ambiance conviviale et décontractée !</p>]]></description>
-      <tariffs><![CDATA[Gratuit]]></tariffs>
-      <free_entry>0</free_entry>
-      <date_start>19/12/2012</date_start>
-      <date_end>19/12/2012</date_end>
-			<date_wording><![CDATA[]]></date_wording>
-      <url1><![CDATA[]]></url1>
-      <url2><![CDATA[]]></url2>
-      <url3><![CDATA[]]></url3>
-      <html><![CDATA[]]></html>
-      <url_resa><![CDATA[]]></url_resa>
-      <age><![CDATA[0]]></age>
-      <image>http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/Les_jeux_du_mercredi003_04.jpg</image>
-		</item>
-		
-
-</event>
-<category>
-  <item index="46">
-    <title>Animation / loisirs</title>
-    <tags></tags>
-  </item>
-  <item index="31">
-    <title>Atelier / Stage</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="18">
-    <title>Chanson</title>
-    <tags>portail,leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="32">
-    <title>Cinéma</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="33">
-    <title>Cirque</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="37">
-    <title>Concert</title>
-    <tags>portail</tags>
-  </item>
-  <item index="4">
-    <title>Conférence / Débat</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="58">
-    <title>Conte</title>
-    <tags>tx_patchsqy_category2</tags>
-  </item>
-  <item index="78">
-    <title>Cultures urbaines</title>
-    <tags>tx_patchsqy_category3</tags>
-  </item>
-  <item index="13">
-    <title>Danse</title>
-    <tags>leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="73">
-    <title>Divers</title>
-    <tags></tags>
-  </item>
-  <item index="70">
-    <title>Eco - emploi</title>
-    <tags>category</tags>
-  </item>
-  <item index="22">
-    <title>Expositions</title>
-    <tags>category</tags>
-  </item>
-  <item index="24">
-    <title>Famille / Jeune public</title>
-    <tags>portail</tags>
-  </item>
-  <item index="34">
-    <title>Festival</title>
-    <tags>portail</tags>
-  </item>
-  <item index="35">
-    <title>Forum / Salon</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="12">
-    <title>Humour</title>
-    <tags>portail,leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="16">
-    <title>Jazz</title>
-    <tags>portail,leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="14">
-    <title>Jeune public</title>
-    <tags>leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="80">
-    <title>Jeune public</title>
-    <tags></tags>
-  </item>
-  <item index="42">
-    <title>Le prisme</title>
-    <tags></tags>
-  </item>
-  <item index="36">
-    <title>Lecture</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="66">
-    <title>Loisirs</title>
-    <tags>category</tags>
-  </item>
-  <item index="76">
-    <title>Marionnettes</title>
-    <tags>tx_patchsqy_category2</tags>
-  </item>
-  <item index="10">
-    <title>Musique</title>
-    <tags>portail,leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="38">
-    <title>Plein air</title>
-    <tags>portail</tags>
-  </item>
-  <item index="56">
-    <title>Poésie</title>
-    <tags></tags>
-  </item>
-  <item index="39">
-    <title>Portes ouvertes</title>
-    <tags>portail</tags>
-  </item>
-  <item index="59">
-    <title>Représentation scolaire</title>
-    <tags>tx_patchsqy_category3</tags>
-  </item>
-  <item index="40">
-    <title>Réunion publique</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-  <item index="63">
-    <title>Saison 2009 - 2010</title>
-    <tags>season</tags>
-  </item>
-  <item index="61">
-    <title>Saison 2010 - 2011</title>
-    <tags>season</tags>
-  </item>
-  <item index="62">
-    <title>Saison 2011 - 2012</title>
-    <tags>season</tags>
-  </item>
-  <item index="79">
-    <title>Saison 2012 - 2013</title>
-    <tags>season</tags>
-  </item>
-  <item index="64">
-    <title>Saisons</title>
-    <tags>saison</tags>
-  </item>
-  <item index="26">
-    <title>Sites</title>
-    <tags></tags>
-  </item>
-  <item index="69">
-    <title>Société</title>
-    <tags>category</tags>
-  </item>
-  <item index="72">
-    <title>Sous-thèmes</title>
-    <tags></tags>
-  </item>
-  <item index="68">
-    <title>Spectacles</title>
-    <tags>category</tags>
-  </item>
-  <item index="1">
-    <title>Sport</title>
-    <tags>category</tags>
-  </item>
-  <item index="75">
-    <title>test création catégorie</title>
-    <tags></tags>
-  </item>
-  <item index="11">
-    <title>Théâtre</title>
-    <tags>leprisme,tx_patchsqy_category2</tags>
-  </item>
-  <item index="27">
-    <title>Thèmes</title>
-    <tags></tags>
-  </item>
-  <item index="71">
-    <title>Thèmes</title>
-    <tags></tags>
-  </item>
-  <item index="41">
-    <title>Visite / Balade</title>
-    <tags>portail,tx_patchsqy_category2</tags>
-  </item>
-</category>
-<location>
-  <item index="69">	
-    <title>Musée de la ville</title>
-    <address>Quai François Truffaut

-		Quartier Saint Quentin</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 34 52 28 80</phone>
-    <fax>01 34 52 27 41</fax>            
-    <email>museedelaville@agglo-sqy.fr</email>
-    <url>http://www.museedelaville.agglo-sqy.fr/</url>            
-    <schedules>Le Musée est ouvert du mercredi au samedi et le premier dimanche de chaque mois de 14 h à 18 h.</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?hl=fr&ie=UTF8&msa=0&msid=114071201271802374621.00000112e6853786f7037&ll=48.783202,2.042414&spn=0.000614,0.001202&t=h&z=20]]></geo_map>
-  </item>
-  <item index="62">	
-    <title>Musée national des Granges de Port-Royal-des-Champs</title>
-    <address>Route de Dampierre - CD 91</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>Tél : 01 39 30 72 72</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.port-royal-des-champs.eu/</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps?f=q&source=s_q&hl=fr&geocode=&q=Mus%C3%A9e+des+granges+de+port+royal&sll=48.781179,2.041676&sspn=0.009827,0.019226&gl=fr&ie=UTF8&ll=48.765694,2.030754&spn=0.07581,0.153809&t=h&z=13&iwloc=A]]></geo_map>
-  </item>
-  <item index="6">	
-    <title>Maison de l'environnement, des sciences et du développement durable</title>
-    <address>6 rue Haroun Tazieff</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>01 30 07 34 34</phone>
-    <fax></fax>            
-    <email>maison.environnement@agglo-sqy.fr</email>
-    <url>http://www.maisondelenvironnement.sqy.fr</url>            
-    <schedules>Du mardi au samedi

-		De 14h à 18h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.725125,2.082006&spn=0.003263,0.005236]]></geo_map>
-  </item>
-  <item index="22">	
-    <title>Médiathèque Anatole-France</title>
-    <address>Plaine de Neauphle

-		1, place de la Médiathèque</address>
-    <zip>78190</zip>
-    <city></city>
-    <country></country>
-    <phone>01 30 50 97 21</phone>
-    <fax>01 30 50 02 66</fax>            
-    <email>mediatheque-anatole.france@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/anatole-france/</url>            
-    <schedules>mardi et vendredi : 13h30-18h

-		mercredi et samedi : 9h30-12h30, 13h30-18h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?ie=UTF8&hl=fr&source=embed&msa=0&msid=114071201271802374621.00043961df3ca154ed860&ll=48.781547,1.982099&spn=0.004977,0.013733&z=17]]></geo_map>
-  </item>
-  <item index="56">	
-    <title>Maison de la Poésie</title>
-    <address>10 place Pierre Bérégovoy</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 39 30 08 90</phone>
-    <fax></fax>            
-    <email>maison.poesie@agglo-sqy.fr</email>
-    <url>http://www.maisondelapoesie.sqy.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?ie=UTF8&hl=fr&msa=0&msid=114071201271802374621.00046af8f5604d9aa0594&ll=48.7]]></geo_map>
-  </item>
-  <item index="44">	
-    <title>Salle d'exposition de Guyancourt</title>
-    <address>11, place Bérégovoy (quartier Villaroy)</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 30 44 50 80</phone>
-    <fax></fax>            
-    <email></email>
-    <url>www.ville-guyancourt.fr</url>            
-    <schedules>Mercredi et samedi: 10h-12h / 14h-18h.

-		Jeudi et Vendredi: 15h-18h.

-		Dimanche: 10h-13h.

-		!!!: Entrée par la Médiathèque les samedis et dimanches.

-		Entrée par la Médiathèque les samedis et dimanches.</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.com/geo_maps?q=11,+place+Pierre+B%C3%A9r%C3%A9govoy,+Guyancourt&hl=fr&ie=UTF8&sll=48.754452,2.090698&sspn=0.025351,0.042057&vpsrc=0&hnear=11+Place+Pierre+B%C3%A9r%C3%A9govoy,+78280+Guyancourt,+Yvelines,+%C3%8Ele-de-France,+France&t=m&z=17]]></geo_map>
-  </item>
-  <item index="50">	
-    <title>Ferme du Mousseau</title>
-    <address>23 rte du Mesnil</address>
-    <zip>78990</zip>
-    <city>Elancourt</city>
-    <country></country>
-    <phone>01 30 66 50 26</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.ville-elancourt.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.781236,1.958377&spn=0.010477,0.01929]]></geo_map>
-  </item>
-  <item index="43">	
-    <title>Mezzanine de l'Hôtel de Ville de Guyancourt</title>
-    <address>14, rue Ambroise Croizat</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 30 44 50 80</phone>
-    <fax></fax>            
-    <email></email>
-    <url>www.ville-guyancourt.fr</url>            
-    <schedules>Lundi, mardi, mercredi, vendredi : 8h30-12h / 13h30-17h

-		Jeudi : 13h-20h.

-		Samedi : 9h-12h.</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps?q=14,+rue+Ambroise+Croizat,+Guyancourt&hl=fr&ie=UTF8&sll=48.767444,2.07799&sspn=0.001584,0.002629&vpsrc=0&hnear=14+Rue+Ambroise+Croizat,+78280+Guyancourt,+Yvelines,+%C3%8Ele-de-France&t=m&z=17]]></geo_map>
-  </item>
-  <item index="83">	
-    <title>Office de tourisme de Saint-Quentin-en-Yvelines.</title>
-    <address>3, place Robert Schuman

-		Centre commercial Espace Saint-Quentin</address>
-    <zip>78185</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>0 820 078 078 (0,15 cts/mn)</phone>
-    <fax></fax>            
-    <email>officedetourisme@agglo-sqy.fr</email>
-    <url>http://www.officedetourisme.agglo-sqy.fr/</url>            
-    <schedules>du mardi au samedi de 10 h 30 à 18 h 00.</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msid=213330494777194645953.000464fc7a1e08f3cdaf5&msa=0&ll=48.782904,2.043934&spn=0.003167,0.005257]]></geo_map>
-  </item>
-  <item index="51">	
-    <title>Espace culturel Decauville</title>
-    <address>5 place de la Division Leclerc</address>
-    <zip>78960</zip>
-    <city>Voisins-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 44 29 28</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.voisins78.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.757038,2.048607&spn=0.025321,0.035191]]></geo_map>
-  </item>
-  <item index="67">	
-    <title>Médiathèque Jean Rousselot</title>
-    <address>12 Place Bérégovoy</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 39 30 08 50</phone>
-    <fax></fax>            
-    <email>mediatheque-jean.rousselot@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/jean-rousselot</url>            
-    <schedules>* mardi et vendredi : 16h-19h

-    * mercredi et samedi : 10h-13h, 14h-19h

-    * dimanche : 10h-13h.</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?ie=UTF8&hl=fr&source=embed&msa=0&msid=114071201271802374621.00043961df3ca154ed860&ll=48.768141,2.08266&spn=0.011965,0.033045&z=16]]></geo_map>
-  </item>
-  <item index="20">	
-    <title>Médiathèque des 7 Mares</title>
-    <address>Centre des 7 Mares</address>
-    <zip>78990</zip>
-    <city>Elancourt</city>
-    <country></country>
-    <phone>01 30 62 89 39</phone>
-    <fax>01 30 69 06 84</fax>            
-    <email>mediatheque-7mares@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/7-mares/</url>            
-    <schedules>mardi, jeudi et vendredi : 13h-18h30,

-		mercredi et samedi : 10h-12h, 13h-18h30</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msid=213330494777194645953.00043961df3ca154ed860&msa=0&ll=48.766861,1.948485&spn=0.003048,0.004367]]></geo_map>
-  </item>
-  <item index="26">	
-    <title>Médiathèque Aimé-Cesaire</title>
-    <address>Espace culturel Aimé-Césaire

-		19 avenue du Général Leclerc</address>
-    <zip>78320</zip>
-    <city>La Verrière</city>
-    <country></country>
-    <phone>01 30 16 11 60</phone>
-    <fax></fax>            
-    <email>mediatheque-cesaire@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/aime-cesaire/</url>            
-    <schedules>mardi et vendredi : 16h-19h

-		mercredi et samedi : 10h-12h30, 13h30-18h.</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?ie=UTF8&hl=fr&source=embed&msa=0&msid=114071201271802374621.00043961df3ca154ed860&ll=48.754527,1.954998&spn=0.00498,0.013733&z=17]]></geo_map>
-  </item>
-  <item index="19">	
-    <title>Médiathèque du Canal</title>
-    <address>Quai François Truffaut</address>
-    <zip>78056</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 96 96 00</phone>
-    <fax>01 30 96 96 30</fax>            
-    <email>mediatheque-canal@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/canal/</url>            
-    <schedules>Mercredi et samedi : 10h-19h

-		Jeudi et vendredi : 12h-19h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?ie=UTF8&hl=fr&source=embed&msa=0&msid=114071201271802374621.00043961df3ca154ed860&ll=48.783201,2.043157&spn=0.009954,0.027466&z=16]]></geo_map>
-  </item>
-  <item index="24">	
-    <title>Médiathèque Antoine-de-Saint-Exupéry</title>
-    <address>Espace Decauville, 5, place de la Division Leclerc</address>
-    <zip>78960</zip>
-    <city>Voisins-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 60 91 04</phone>
-    <fax>01 30 60 18 84</fax>            
-    <email>mediatheque-saint.exupery@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/antoine-de-saint-exupery/</url>            
-    <schedules>mardi et vendredi : 14h-18h

-		mercredi et samedi : 10h-12h30, 14h-18h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?ie=UTF8&hl=fr&source=embed&msa=0&msid=114071201271802374621.00043961df3ca154ed860&ll=48.759265,2.048725&spn=0.004979,0.013733&z=17]]></geo_map>
-  </item>
-  <item index="124">	
-    <title>Conservatoire des Arts</title>
-    <address>1 Parvis des sources</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 34 52 07 41</phone>
-    <fax>03 39 30 31 70</fax>            
-    <email>conservatoire.arts@montigny78.fr</email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?hl=fr&ie=UTF8&msa=0&msid=114071201271802374621.00046af8f5604d9aa0594&ll=48.782268,2.045345&spn=0.005012,0.009645&z=17]]></geo_map>
-  </item>
-  <item index="15">	
-    <title>Le Prisme</title>
-    <address>Quartier des 7 Mares</address>
-    <zip>78990</zip>
-    <city>Elancourt</city>
-    <country></country>
-    <phone>01 30 51 46 06</phone>
-    <fax></fax>            
-    <email>prisme@agglo-sqy.fr</email>
-    <url>http://www.leprisme.agglo-sqy.fr/</url>            
-    <schedules>Par téléphone et sur place,  du mardi au samedi de 13h à 18 h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.770899,1.947756&spn=0.050346,0.09304]]></geo_map>
-  </item>
-  <item index="45">	
-    <title>Théâtre de Saint-Quentin-en-Yvelines</title>
-    <address>Place Georges Pompidou</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 96 99 00</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.theatresqy.org</url>            
-    <schedules></schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?ie=UTF8&hl=fr&msa=0&msid=114071201271802374621.00046af8f5604d9aa0594&ll=48.7]]></geo_map>
-  </item>
-  <item index="47">	
-    <title>La Ferme de Bel-Ebat</title>
-    <address>1, place de Bel-Ebat</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 30 48 33 44</phone>
-    <fax></fax>            
-    <email>laferme.debelebat@ville-guyancourt.fr</email>
-    <url>http://www.lafermedebelebat.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.770757,2.069614&spn=0.012318,0.017595]]></geo_map>
-		<geo_latitude>48.770757</geo_latitude>
-		<geo_longitude>2.069614</geo_longitude>
-  </item>
-  <item index="54">	
-    <title>Le Scarabée</title>
-    <address>7 bis avenue du Général Leclerc</address>
-    <zip>78320</zip>
-    <city>La Verrière</city>
-    <country></country>
-    <phone>01 30 13 87 40</phone>
-    <fax></fax>            
-    <email>scarabeelv@yahoo.fr</email>
-    <url>http://www.le-scarabee.com</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.757448,1.957519&spn=0.010482,0.01929]]></geo_map>
-  </item>
-  <item index="48">	
-    <title>La Batterie</title>
-    <address>1 rue de la Redoute</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 39 30 45 90</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.labatteriedeguyancourt.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.783045,2.058756&spn=0.006327,0.008798]]></geo_map>
-  </item>
-  <item index="272">	
-    <title>Librairie Pavé du Canal</title>
-    <address>3 bis, quai Fernand Pouillon

-		Halle Sud Canal</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 44 39 39</phone>
-    <fax></fax>            
-    <email></email>
-    <url>www.pave.fr</url>            
-    <schedules>Ouvert du mardi au samedi de 9h30 à 19h30</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps?q=Librairie+Pav%C3%A9+du+Canal,+3+bis,+quai+Fernand+Pouillon,+78180+Montigny-le-Bretonneux&hl=fr&ie=UTF8&sll=46.75984,1.738281&sspn=13.461938,14.128418&vpsrc=0&hq=Librairie+Pav%C3%A9+du+Canal,+3+bis,+quai+Fernand+Pouillon,+78180]]></geo_map>
-  </item>
-  <item index="55">	
-    <title>La Merise</title>
-    <address>Place des Merisiers</address>
-    <zip>78190</zip>
-    <city>Trappes</city>
-    <country></country>
-    <phone>01 30 13 98 51</phone>
-    <fax></fax>            
-    <email>lamerise.legrenierasel@orange.fr</email>
-    <url>http://www.lamerise.com</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.777573,1.985393&spn=0.010478,0.01929]]></geo_map>
-  </item>
-  <item index="60">	
-    <title>Brasserie Le Marina</title>
-    <address>26, Place Etienne Marcel</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 57 54 97‎</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://quentin-philo.eklablog.com</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps?sourceid=navclient&hl=fr&ie=UTF8&q=le+marina+montigny&fb=1&split=1&gl=fr&cid=12059377422073734622&li=lmd&t=h&z=16]]></geo_map>
-  </item>
-  <item index="149">	
-    <title>Ecole de musique et de danse</title>
-    <address>4 rue des fermes</address>
-    <zip>78190</zip>
-    <city>Trappes</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="275">	
-    <title>Eglise Saint Germain</title>
-    <address>rue Ernest-Chausson-Le Village</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="138">	
-    <title>Maison des associations de Voisins</title>
-    <address>Avenue du Plan-de-l’Eglise</address>
-    <zip>78960</zip>
-    <city>Voisins-le-Bretonneux</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="273">	
-    <title>Parvis de l'Hôtel de Ville de Magny</title>
-    <address>Place Pierre Bérégovoy</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email>reservation@magny-les-hameaux.fr</email>
-    <url>www.magny-les-hameaux.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.com/geo_maps?q=Place+Pierre+B%C3%A9r%C3%A9govoy,+Magny-les-Hameaux,+France&hl=fr&ie=UTF8&sll=37.0625,-95.677068&sspn=59.076726,82.353516&vpsrc=0&hnear=Place+Pierre+B%C3%A9r%C3%A9govoy,+78114+Magny-les-Hameaux,+Yvelines,+%C3%8Ele-de-France,+]]></geo_map>
-  </item>
-  <item index="53">	
-    <title>Salle Jacques-Brel</title>
-    <address>4 rue de la Mare aux Carats</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 39 30 31 70</phone>
-    <fax></fax>            
-    <email></email>
-    <url>http://www.montigny78.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?ie=UTF8&hl=fr&msa=0&msid=114071201271802374621.00046af8f5604d9aa0594&ll=48.7]]></geo_map>
-  </item>
-  <item index="25">	
-    <title>Médiathèque Jacques-Brel</title>
-    <address>25 rue Joseph Le Marchand</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>01 30 52 92 02</phone>
-    <fax>01 30 47 93 61</fax>            
-    <email>mediatheque-jacques.brel@agglo-sqy.fr</email>
-    <url>http://www.mediatheques.agglo-sqy.fr/les-mediatheques/les-mediatheques/jacques-brel/</url>            
-    <schedules>mercredi et samedi : 9h30-12h30, 14h-18h

-		jeudi : 14h-18h</schedules>
-    <handicapped_access>1</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msid=213330494777194645953.00043961df3ca154ed860&msa=0&ll=48.722991,2.094086&spn=0.006101,0.008733]]></geo_map>
-  </item>
-  <item index="125">	
-    <title>Commanderie des Templiers de la Villedieu</title>
-    <address>Route de Dampierre

-		Rond point du templier</address>
-    <zip>78990</zip>
-    <city>Elancourt</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email>commanderie.des.templiers@agglo-sqy.fr</email>
-    <url>http://www.commanderiedelavilledieu.sqy.fr</url>            
-    <schedules>Du mercredi au dimanche : 14h à 18h.</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msid=213330494777194645953.000484aca5b24661d80c3&msa=0&ll=48.76539,1.96592&spn=0.00628,0.009989]]></geo_map>
-  </item>
-  <item index="146">	
-    <title>Ferme de Gally</title>
-    <address>Route de Bailly (D7)</address>
-    <zip>78210</zip>
-    <city>Saint-Cyr-L'Ecole</city>
-    <country></country>
-    <phone>01 30 14 60 60</phone>
-    <fax></fax>            
-    <email></email>
-    <url>www.ferme.gally.com</url>            
-    <schedules>Ouvert 7/7 jours de 9 h 30 à 19h.</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps?q=Ferme+de+Gally&oe=utf-8&client=firefox-a&ie=UTF8&hl=fr&hq=Ferme+de+Gally&hnear=Guyancourt&ll=48.840995,2.082424&spn=0.080102,0.154324&z=13&iwloc=A]]></geo_map>
-  </item>
-  <item index="286">	
-    <title>Eglise Saint Victor</title>
-    <address>3, place de l'Eglise</address>
-    <zip>78280</zip>
-    <city></city>
-    <country></country>
-    <phone>0130437505</phone>
-    <fax></fax>            
-    <email></email>
-    <url>saintvictor-guyancourt.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="71">	
-    <title>Centre Alfred de Vigny</title>
-    <address>7, rue Hélène Boucher</address>
-    <zip>78960</zip>
-    <city>Voisins-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 43 65 85</phone>
-    <fax></fax>            
-    <email>alfreddevigny@chezalfred.info</email>
-    <url>http://www.chezalfred.info</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="186">	
-    <title>Hors agglomération</title>
-    <address></address>
-    <zip></zip>
-    <city></city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="52">	
-    <title>Ferme du Manet</title>
-    <address>61 avenue du Manet</address>
-    <zip>78180</zip>
-    <city>Montigny-le-Bretonneux</city>
-    <country></country>
-    <phone>01 30 12 30 30</phone>
-    <fax></fax>            
-    <email>culture@montigny78.fr</email>
-    <url>http://www.ferme-du-manet.com</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.764393,2.018523&spn=0.00524,0.013733]]></geo_map>
-  </item>
-  <item index="49">	
-    <title>L'Estaminet - Café culture</title>
-    <address>Esplanade Gérard Philipe</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>01 30 23 44 28</phone>
-    <fax></fax>            
-    <email>estaminet@magny-les-hameaux.fr</email>
-    <url>http://www.magny-les-hameaux.fr</url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://www.google.com/geo_maps/ms?msid=213330494777194645953.00046af8f5604d9aa0594&msa=0&ll=48.718305,2.103024&spn=0.005245,0.009645]]></geo_map>
-  </item>
-  <item index="82">	
-    <title>Auditorium de l'école de musique de Trappes</title>
-    <address>Place de l’Horloge</address>
-    <zip>78990</zip>
-    <city>Trappes</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.com/geo_maps?q=4+rue+des+Fermes,+Trappes,+France&hl=fr&ie=UTF8&ll=48.777785,1.996207&spn=0.006363,0.010514&sll=48.775331,1.99205&sspn=0.024662,0.042057&vpsrc=6&hnear=4+Rue+des+Ferm%C3%A9s,+78190+Trappes,+Yvelines,+%C3%8Ele-de-France,+France]]></geo_map>
-  </item>
-  <item index="249">	
-    <title>Pôle musical et associatif Blaise Pascal</title>
-    <address>Centre bourg - 23 rue des Écoles Jean Baudin</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>01 30 23 44 28</phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?msa=0&msid=213330494777194645953.0004752c6c394ca5ff714&hl=fr&ie=UTF8&ll=48.724916,2.086287&spn=0.023497,0.031457&z=15&iwloc=0004752c6fd2404c5eeac]]></geo_map>
-  </item>
-  <item index="90">	
-    <title>Maison des Bonheur</title>
-    <address>2, rue Ernest Chausson, Le Village</address>
-    <zip>78114</zip>
-    <city>Magny-les-Hameaux</city>
-    <country></country>
-    <phone>01 61 37 09 33</phone>
-    <fax></fax>            
-    <email>service.culturel@magny-les-hameaux.fr</email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="185">	
-    <title>Maison de quartier Théodore Monod</title>
-    <address>11, place Pierre Bérégovoy</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 30 44 50 80 - 01 30 44 38 54</phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="284">	
-    <title>Maison de quartier Auguste Renoir</title>
-    <address>Les Saules

-		Place Vincent Van Gogh</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01 30 43 45 44</phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="155">	
-    <title>Maison de Quartier Joseph Kosma</title>
-    <address>Place Jacques Brel</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[http://geo_maps.google.fr/geo_maps/ms?oe=utf-8&client=firefox-a&ie=UTF8&hl=fr&msa=0&ll=48.775196,2.050664&spn=0.001556,0.001719&z=19&msid=109671851605984286749.00047aee166991529cb8d]]></geo_map>
-  </item>
-  <item index="152">	
-    <title>Bibliothèque universitaire de St Quentin en Yvelines</title>
-    <address>45 boulevard Vauban</address>
-    <zip>78280</zip>
-    <city>Guyancourt</city>
-    <country></country>
-    <phone>01.39.25.54.50</phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules>du lundi au vendredi : 9h - 20h

-		samedi : 10h -18h</schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-  <item index="121">	
-    <title>Guyancourt</title>
-    <address></address>
-    <zip>78280</zip>
-    <city></city>
-    <country></country>
-    <phone></phone>
-    <fax></fax>            
-    <email></email>
-    <url></url>            
-    <schedules></schedules>
-    <handicapped_access>0</handicapped_access>
-    <geo_map><![CDATA[]]></geo_map>
-  </item>
-</location>
-<organizer>
-  <item index="27">
-    <title>Maison de la Poésie</title>
-    <description></description>          
-    <email></email>
-  </item>
-  <item index="34">
-    <title>Maison de la Poésie et la Ferme de Bel Ebat</title>
-    <description></description>          
-    <email></email>
-  </item>
-</organizer>
-</racine>
-
-
-<!--
-    Local Variables:
-    nxml-section-element-name-regexp:"event\\|organizer\\|category\\|location\\|item"
-    nxml-heading-element-name-regexp:"title"
-    End:
--->
diff --git a/tests/library/Class/ActivityTest.php b/tests/library/Class/ActivityTest.php
index de06b0370264bf905ddbbc5b44029756764cb843..ce7b1c9e90d813902f0c5cc91b8bd4a620bd156b 100644
--- a/tests/library/Class/ActivityTest.php
+++ b/tests/library/Class/ActivityTest.php
@@ -20,122 +20,98 @@
  */
 
 class ActivityJavaWithNoSessionTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
+    parent::setUp();
+
     Class_Activity::setTimeSource(new TimeSourceForTest('2014-05-01 14:00:00'));
 
-    $this->_learning_java = $this->fixture('Class_Activity',
+    $this->_learning_java = $this->fixture(Class_Activity::class,
                                            ['id' => 999,
                                             'libelle' => 'Learning Java']);
   }
 
   /** @test */
-  function libelleShouldAnswerLearningJava() {
+  public function libelleShouldAnswerLearningJava() {
     $this->assertEquals('Learning Java', $this->_learning_java->getLibelle());
   }
 
 
   /** @test */
-  function getSessionsShouldReturnEmptyArray() {
+  public function getSessionsShouldReturnEmptyArray() {
     $this->assertSame(array(), $this->_learning_java->getSessions());
   }
 
+
   /** @test */
-  function getAnneeShouldReturnCurrentYear() {
+  public function getAnneeShouldReturnCurrentYear() {
     $this->assertEquals('2014', $this->_learning_java->getAnnee());
   }
 }
 
 
+
+
 class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
   protected $_patrick_inscription;
   protected $_patrick;
   protected $_laurent;
   protected $_laurent_intervention;
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
-    Class_Lieu::getLoader()
-      ->newInstanceWithId(74)
-      ->setLibelle('Bonlieu');
-
-    $this->_learn_st = Class_Activity::getLoader()
-                                          ->newInstanceWithId(3)
-                                          ->setLibelle('Learning Smalltalk')
-                                          ->setSessions(array(
-                                                              $this->_session_janvier = Class_SessionActivity::getLoader()
-                                                              ->newInstanceWithId(1)
-                                                              ->setActivityId(3)
-                                                              ->setDateDebut('2009-01-05')
-                                                              ->setDateFin('2009-01-07')
-                                                              ->setDateLimiteFin('0000-00-00')
-                                                              ->setEffectifMin(1)
-                                                              ->setEffectifMax(3)
-                                                              ->setLieuId(74),
-
-                                                              $this->_session_fevrier = Class_SessionActivity::getLoader()
-                                                              ->newInstanceWithId(2)
-                                                              ->setActivityId(3)
-                                                              ->setDateDebut('2009-02-05')));
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_SessionActivityInscription')
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'session_activity',
-                   'model' => $this->_session_janvier))
-      ->answers(array(
-                      $this->_patrick_inscription = Class_SessionActivityInscription::getLoader()
-                                                           ->newInstanceWithId(1)
-                                                           ->setSessionActivityId(1)
-                                                           ->setStagiaireId(5)))
-
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'session_activity',
-                   'model' => $this->_session_fevrier))
-      ->answers(array())
-
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'stagiaire',
-                   'model' => $this->_patrick = Class_Users::getLoader()
-                                       ->newInstanceWithId(5)
-                                       ->setPrenom('Patrick')
-                                       ->setLogin('pat')
-                                       ->setUserGroups(array(Class_UserGroup::getLoader()
-                                                             ->newInstanceWithId(76)
-                                                             ->addRightSuivreActivity()))))
-      ->answers(array($this->_patrick_inscription));
-
-
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_SessionActivityIntervention')
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'session_intervention',
-                   'model' => $this->_session_janvier))
-      ->answers(array(
-                      $this->_laurent_intervention = Class_SessionActivityIntervention::getLoader()
-                                                           ->newInstanceWithId(1)
-                                                           ->setSessionInterventionId(1)
-                                                           ->setIntervenantId(6)))
-
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'session_intervention',
-                   'model' => $this->_session_fevrier))
-      ->answers(array())
-
-      ->whenCalled('findAllBy')
-      ->with(array('role' => 'intervenant',
-                   'model' => $this->_laurent = Class_Users::getLoader()
-                                       ->newInstanceWithId(6)
-                                       ->setPrenom('Laurent')))
-      ->answers(array($this->_laurent_intervention));
+
+    $stagiaires_group = $this->fixture(Class_UserGroup::class,
+                                       ['id' => 76])
+                             ->addRightSuivreActivity();
+    $stagiaires_group->assertSave();
+
+    $this->_patrick = $this->fixture(Class_Users::class,
+                                     ['id' => 5,
+                                      'login' => 'pat',
+                                      'password' => 'pass',
+                                      'prenom' => 'Patrick',
+                                      'user_groups' => [$stagiaires_group]]);
+
+    $this->_laurent = $this->fixture(Class_Users::class,
+                                     ['id' => 6,
+                                      'login' => 'lolo',
+                                      'password' => 'passpass',
+                                      'prenom' => 'Laurent']);
+
+    $bonlieu = $this->fixture(Class_Lieu::class,
+                              ['id' => 74,
+                               'libelle' => 'Bonlieu']);
+
+    $this->_learn_st = $this
+      ->fixture(Class_Activity::class,
+                ['id' => 3,
+                 'libelle' => 'Learning Smalltalk']);
+
+    $this->_session_janvier = $this
+      ->fixture(Class_SessionActivity::class,
+                ['id' => 1,
+                 'date_debut' => '2009-01-05',
+                 'date_fin' => '2009-01-07',
+                 'date_limite_fin' => '0000-00-00',
+                 'effectif_min' => 1,
+                 'effectif_max' => 3,
+                 'lieu' => $bonlieu,
+                 'activity' => $this->_learn_st,
+                 'stagiaires' => [$this->_patrick],
+                 'intervenants' => [$this->_laurent]]);
+
+    $this->_session_fevrier = $this
+      ->fixture(Class_SessionActivity::class,
+                ['id' => 2,
+                 'date_debut' => '2009-02-05',
+                 'activity' => $this->_learn_st]);
   }
 
 
   /** @test */
-  function getSessionsShouldReturnSessionJanvierAndFevrier() {
-    $this->assertEquals(array($this->_session_janvier, $this->_session_fevrier),
+  public function getSessionsShouldReturnSessionJanvierAndFevrier() {
+    $this->assertEquals([$this->_session_janvier, $this->_session_fevrier],
                         $this->_learn_st->getSessions());
   }
 
@@ -148,7 +124,8 @@ class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
 
   /** @test */
   public function lieuSessionJanvierShouldBeBonlieu() {
-    $this->assertEquals('Bonlieu', $this->_session_janvier->getLieu()->getLibelle());
+    $this->assertEquals('Bonlieu',
+                        $this->_session_janvier->getLibelleLieu());
   }
 
 
@@ -159,47 +136,38 @@ class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
 
 
   /** @test */
-  function getAnneeShouldReturn2009() {
+  public function learnStAnneeShouldBe2009() {
     $this->assertEquals('2009', $this->_learn_st->getAnnee());
   }
 
 
-  /** @test */
-  function patrickInscriptionActivityShouldBeSessionJanvier() {
-    $this->assertSame($this->_session_janvier, $this->_patrick_inscription->getSessionActivity());
-  }
-
-
   /** @test */
   public function sessionJanvierDateFinTexteShouldBeSevenJanuary2009() {
-    $this->assertEquals('07 janvier 2009', $this->_session_janvier->getDateFinTexte());
-  }
-
-
-  /** @test */
-  function patrickInscriptionStagiaireShouldBePatrick() {
-    $this->assertSame($this->_patrick, $this->_patrick_inscription->getStagiaire());
+    $this->assertEquals('07 janvier 2009',
+                        $this->_session_janvier->getDateFinTexte());
   }
 
 
   /** @test */
-  function patrickSessionActivitysShouldReturnArrayWithSessionJanvier() {
-    $this->assertEquals(array($this->_session_janvier), $this->_patrick->getSessionActivities());
+  public function patrickSessionActivitysShouldReturnArrayWithSessionJanvier() {
+    $this->assertEquals([$this->_session_janvier],
+                        $this->_patrick->getSessionActivities());
   }
 
 
   /** @test */
   public function laurentSessionInterventionsShouldReturnArrayWithSessionJanvier() {
-    $this->assertEquals(array($this->_session_janvier), $this->_laurent->getSessionInterventions());
+    $this->assertEquals([$this->_session_janvier],
+                        $this->_laurent->getSessionInterventions());
   }
 
 
   /** @test */
   public function patrickAddSessionFevrierShouldUpdateSessionActivityList() {
     $this->_patrick->addSessionActivity($this->_session_fevrier);
-    $this->assertEquals(array($this->_session_janvier, $this->_session_fevrier),
+
+    $this->assertEquals([$this->_session_janvier, $this->_session_fevrier],
                         $this->_patrick->getSessionActivities());
-    return $this->_patrick;
   }
 
 
@@ -208,6 +176,7 @@ class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
     $this->_session_janvier
       ->setDateLimiteFin('2009-01-04')
       ->assertSave();
+
     $this->assertTrue($this->_session_janvier->isValid(),
                       implode(',', $this->_session_janvier->getErrors()));
   }
@@ -224,38 +193,36 @@ class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
       ->addStagiaire(Class_Users::getLoader()
                      ->newInstanceWithId(95)
                      ->setLogin('fifi'));
+
     $this->assertFalse($this->_session_janvier->isValid());
   }
 
 
-  /**
-   * @test
-   * @depends patrickAddSessionFevrierShouldUpdateSessionActivityList
-   */
-  public function patrickRemoveSessionFevrireShouldUpdateSessionActivityListe($patrick) {
-    $patrick->removeSessionActivity($this->_session_fevrier);
-    $this->assertEquals(array($this->_session_janvier), $patrick->getSessionActivities());
+  /** @test */
+  public function patrickRemoveSessionJanvierShouldUpdateSessionActivityListe() {
+    $this->_patrick->removeSessionActivity($this->_session_janvier);
+    $this->assertEquals([], $this->_patrick->getSessionActivities());
   }
 
 
   /** @test */
-  function sessionJanvierStagiairesShouldReturnAnArrayWithPatrick() {
-    $this->assertEquals(array($this->_patrick), $this->_session_janvier->getStagiaires());
+  public function sessionJanvierStagiairesShouldReturnAnArrayWithPatrick() {
+    $this->assertEquals([$this->_patrick],
+                        $this->_session_janvier->getStagiaires());
   }
 
 
   /** @test */
-  function sessionJanvierIntervenantsShouldReturnAnArrayWithLaurent() {
-    $this->assertEquals(array($this->_laurent), $this->_session_janvier->getIntervenants());
+  public function sessionJanvierIntervenantsShouldReturnAnArrayWithLaurent() {
+    $this->assertEquals([$this->_laurent],
+                        $this->_session_janvier->getIntervenants());
   }
 
 
   /** @test */
-  function activityLearnSmalltalkStagiairesShouldReturnAnArrayWithPatrick() {
-    $stagiaires = $this->_learn_st->getStagiaires();
-
-    $this->assertEquals(array($this->_patrick),
-                        $stagiaires);
+  public function activityLearnSmalltalkStagiairesShouldReturnAnArrayWithPatrick() {
+    $this->assertEquals([$this->_patrick],
+                        $this->_learn_st->getStagiaires());
   }
 
 
@@ -270,26 +237,24 @@ class ActivitySmalltalkWithTwoSessionsTest extends ModelTestCase {
 
 class ActivityHaskellWithTwoSessionsAccrossYearTest extends ModelTestCase {
   public function setUp() {
-    $this->_learn_haskell = Class_Activity::getLoader()
-      ->newInstanceWithId(5)
-      ->setLibelle('Learning Haskell')
-      ->setSessions(array(
-                          $this->_session_decembre = Class_SessionActivity::getLoader()
-                          ->newInstanceWithId(51)
-                          ->setDateDebut('2025-12-23'),
-
-                          $this->_session_janvier = Class_SessionActivity::getLoader()
-                          ->newInstanceWithId(52)
-                          ->setDateDebut('2026-01-05')
-                           )
-                    );
+    parent::setUp();
+
+    $this->_learn_haskell = $this
+      ->fixture(Class_Activity::class,
+                ['id' => '5',
+                 'libelle' => 'Learning Haskell'])
+      ->setSessions([$this->fixture(Class_SessionActivity::class,
+                                    ['id' => 51,
+                                     'date_debut' => '2025-12-23']),
+                     $this->fixture(Class_SessionActivity::class,
+                                    ['id' => 52,
+                                     'date_debut' => '2026-01-05'])
+                     ]);
   }
 
 
   /** @test */
-  function getAnneeShouldReturn2025() {
+  public function getAnneeShouldReturn2025() {
     $this->assertEquals('2025', $this->_learn_haskell->getAnnee());
   }
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/AgendaSQYImportTest.php b/tests/library/Class/AgendaSQYImportTest.php
deleted file mode 100644
index 01afd22bf7492e12fd3c05be227b408a9532bcb5..0000000000000000000000000000000000000000
--- a/tests/library/Class/AgendaSQYImportTest.php
+++ /dev/null
@@ -1,538 +0,0 @@
-<?php
-/**
- * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
-
-
-class AgendaSQYImportTest extends ModelTestCase {
-  protected static
-    $_agenda,
-    $_article_loader,
-    $_article_categorie_loader,
-    $_lieu_loader,
-    $_event_screen_play,
-    $_article_categorie_spectacles;
-
-  protected $_categories;
-  protected $_events;
-  protected $_locations;
-
-  public static  function setUpBeforeClass() {
-
-    Class_AdminVar::newInstanceWithId('URL_TYPO3', ['valeur'=>'http://sqy.fr/events.xml']);
-
-    static::$_article_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
-                              ->whenCalled('save')->answers(true)
-                              ->whenCalled('delete')->answers(true);
-
-    static::$_article_categorie_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie')
-                                         ->whenCalled('save')->answers(true)
-                                         ->whenCalled('delete')->answers(true)
-
-                                         ->whenCalled('findFirstBy')
-                                         ->with(['libelle' => Class_Agenda_SQY::IMPORT_CATEGORIE_LIBELLE])
-                                         ->answers(Class_ArticleCategorie::newInstanceWithId(4, ['libelle' => Class_Agenda_SQY::IMPORT_CATEGORIE_LIBELLE])
-                                                   ->setArticles([])
-                                                   ->setSousCategories([]));
-
-    static::$_lieu_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Lieu')
-                            ->whenCalled('save')->answers(true)
-
-                            ->whenCalled('findFirstBy')->answers(null)
-
-                            ->whenCalled('findFirstBy')
-                            ->with(['libelle' => 'Médiathèque Anatole-France'])
-                            ->answers(Class_Lieu::newInstanceWithId(44, ['libelle' => 'Médiathèque Anatole-France',
-                                                                         'ville' => 'Zork']));
-
-    $xml = file_get_contents(realpath(dirname(__FILE__)). '/../../fixtures/agenda-sqy.xml');
-    $mock_http_client = Storm_Test_ObjectWrapper::mock()->whenCalled('open_url')
-                                                        ->with('http://sqy.fr/events.xml')
-                                                        ->answers($xml)
-                                                        ->getWrapper();
-
-    Class_Agenda_SQY::setDefaultHttpClient($mock_http_client);
-
-
-    $sous_domaine_spectacle = Class_Catalogue::newInstanceWithId(4, ['libelle' => 'Spectacles',
-                                                                     'sous_domaines' => []]);
-
-    $domaine_musique = Class_Catalogue::newInstanceWithId(3, ['libelle' => 'MusiQue ',
-                                                              'sous_domaines' => [$sous_domaine_spectacle]]);
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue')
-    ->whenCalled('save')->answers(true)
-    ->whenCalled('findAllBy')->answers([])
-    ->whenCalled('findAllBy')->with(['where' => 'parent_id is null',
-                                     'order' => 'libelle'])->answers([$domaine_musique]);
-
-
-
-
-
-    $sous_categorie_spectacles = Class_ArticleCategorie::newInstanceWithId(4, ['libelle' => 'Spectacles',
-                                                                               'sous_categories' => []]);
-    self::$_article_categorie_spectacles = $sous_categorie_spectacles;
-
-    $categorie_musique = Class_ArticleCategorie::newInstanceWithId(3, ['libelle' => 'MusiQue ',
-                                                                       'sous_categories' => [$sous_categorie_spectacles]]);
-
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie')
-    ->whenCalled('save')->answers(true)
-    ->whenCalled('findAllBy')->answers([])
-    ->whenCalled('findAllBy')->with(['id_cat_mere' => 0])->answers([$categorie_musique]);
-
-
-
-
-    static::$_event_screen_play = Class_Article::newInstanceWithId(34,
-                                                                   ['id_origine' => 3998,
-                                                                    'titre' => 'Jeu sur écran']);
-    static::$_article_loader->whenCalled('findFirstBy')
-                            ->answers(null)
-
-                            ->whenCalled('findFirstBy')
-                            ->with(['id_origine' => '3998'])
-                            ->answers(static::$_event_screen_play);
-
-
-    static::$_agenda = (new Class_Agenda_SQY())->importFromURL();
-  }
-
-
-  public static function tearDownAfterClass() {
-    Storm_Model_Abstract::unsetLoaders();
-    Class_Agenda_SQY::setDefaultHttpClient(null);
-  }
-
-
-  public function setUp() {
-    parent::setUp();
-
-    $this->_categories = static::$_agenda->getCategories();
-    $this->_events = static::$_agenda->getEvents();
-    $this->_locations = static::$_agenda->getLocations();
-  }
-
-
-  /** @test */
-  public function categoriesCountShouldBeFourtySix() {
-    $this->assertEquals(46, count($this->_categories));
-  }
-
-
-  /** @test */
-  public function eventsCountShouldBeSeventyThree() {
-    $this->assertEquals(73, count($this->_events));
-  }
-
-
-  /** @test */
-  public function locationCountShouldBeFourtyFive() {
-    $this->assertEquals(45, count($this->_locations));
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"46"][catégorie animation/loisirs]]
-   */
-  public function firstCategoryLibelleShouldBeAnimationLoisirs() {
-    $animation = $this->_categories[46];
-    $this->assertEquals('Animation / loisirs', $animation->getLibelle());
-  }
-
-
-  /**
-   * @test
-   */
-  public function categoryAtelierShouldHaveParentCategorieImport() {
-    $atelier = $this->_categories[31];
-    $this->assertEquals(Class_Agenda_SQY::IMPORT_CATEGORIE_LIBELLE,
-                        $atelier->getParentCategorie()->getLibelle());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"69"][lieu Musée de la ville]]
-   */
-  public function firstLocationLibelleShouldBeMuseeDeLaVille() {
-    $musee = $this->_locations[69];
-    $this->assertEquals('Musée de la ville', $musee->getLibelle());
-    return $musee;
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"69"][lieu Musée de la ville]]
-   */
-  public function firstLocationLatitudeShouldBe48_7() {
-    $musee = Class_Agenda_SQY_LocationWrapper::getWrappedInstance(69);
-    $this->assertEquals('48.783202', $musee->getLatitude());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"69"][lieu Musée de la ville]]
-   */
-  public function firstLocationLongitudeShouldBe48_7() {
-    $musee = Class_Agenda_SQY_LocationWrapper::getWrappedInstance(69);
-    $this->assertEquals('2.042414', $musee->getLongitude());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"69"][lieu Musée de la ville]]
-   */
-  public function firstLocationAdresseShouldBeQuaiFrancoisTruffaut() {
-    $musee = Class_Agenda_SQY_LocationWrapper::getWrappedInstance(69);
-    $this->assertContains('Quai François Truffaut', $musee->getAdresse());
-  }
-
-
-  /**
-   * @test
-   * @depends firstLocationLibelleShouldBeMuseeDeLaVille
-   */
-  public function firstLocationCodePostalShouldBe78180($musee) {
-    $this->assertEquals('78180', $musee->getCodePostal());
-  }
-
-
-  /**
-   * @test
-   * @depends firstLocationLibelleShouldBeMuseeDeLaVille
-   */
-  public function firstLocationVilleShouldBeMontigny($musee) {
-    $this->assertEquals('Montigny-le-Bretonneux', $musee->getVille());
-  }
-
-
-  /**
-   * @test
-   * @depends firstLocationLibelleShouldBeMuseeDeLaVille
-   */
-  public function firstLocationPaysShouldBeFrance($musee) {
-    $this->assertEquals('France', $musee->getPays());
-  }
-
-
-  /** @test */
-  public function firstEventTitreShouldBeRevonsLaVille() {
-    $event_revons = $this->_events[3421];
-    $this->assertEquals('"Rêvons la ville"', $event_revons->getTitre());
-    return $event_revons;
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-
-  public function firstEventIdOrigineShouldBe3421($event_revons) {
-    $this->assertEquals(3421, $event_revons->getIdOrigine());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventDescriptionShouldContainsLaNouvelleExposition($event_revons) {
-    $this->assertContains('<p>« Rêvons la ville », la nouvelle exposition du Musée', $event_revons->getDescription());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventDescriptionShouldBeAddedToContenuInASpan($event_revons) {
-    $this->assertContains('<span class="description"><p>« Rêvons la ville », la nouvelle exposition du Musée', $event_revons->getContenu());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventContenuShouldContainsDesActeursDeSaintQuentin($event_revons) {
-    $this->assertContains('<p>Des acteurs de Saint-Quentin-en-Yvelines',
-                          $event_revons->getContenu());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventDebutShouldBe2012Dash05Dash16($event_revons) {
-    $this->assertEquals('2012-05-16',
-                        $event_revons->getEventsDebut());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventFinShouldBe2013Dash03Dash16($event_revons) {
-    $this->assertEquals('2013-03-16',
-                        $event_revons->getEventsFin());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventShouldHaveBeenSaved($event_revons) {
-    $this->assertEquals('"Rêvons la ville"',
-                        static::$_article_loader->getFirstAttributeForMethodCallAt('save', 0)->getTitre());
-  }
-
-
-  /**
-   * @test
-   * @depends firstEventTitreShouldBeRevonsLaVille
-   */
-  public function firstEventShouldBeValidated($event_revons) {
-    $this->assertTrue($event_revons->isStatusValidated());
-  }
-
-
-  /**
-   * @test
-   */
-  public function eventDixAnsDartShouldContainsImageAgendaSaisonDotJpg() {
-    $event_dix_ans = Class_Agenda_SQY_EventWrapper::getWrappedInstance(3564);
-    $this->assertTrue($event_dix_ans->isValid());
-    $this->assertContains('src="http://www.saint-quentin-en-yvelines.fr/uploads/tx_artificaagenda/agendasaison.jpg"',
-                          $event_dix_ans->getContenu());
-  }
-
-
-
-  /**
-   * @test
-   */
-  public function eventScreenPlayShouldBeUpdated() {
-    $this->assertEquals('Screen/Play', static::$_event_screen_play->getTitre());
-  }
-
-
-  /** @test */
-  public function categoryVisiteWithNoArticlesShouldNotHaveBeenSaved() {
-    $visite = Class_Agenda_SQY_CategoryWrapper::getWrappedInstance(41);
-    $this->assertFalse(static::$_article_categorie_loader->methodHasBeenCalledWithParams('save', [$visite]));
-  }
-
-
-  /** @test */
-  public function lieuMuseeDeLaVilleShouldHaveBeenSaved() {
-    $this->assertEquals('Musée de la ville',
-                        static::$_lieu_loader->getFirstAttributeForMethodCallAt('save', 0)->getLibelle());
-  }
-
-
-  /** @test */
-  public function lieuMediathequeAnatoleFranceShouldHaveId44() {
-    $this->assertEquals(44,
-                        Class_Agenda_SQY_LocationWrapper::getWrappedInstance(22)->getId());
-  }
-
-
-  /** @test */
-  public function lieuGuyancourtWithNoEventsShouldNotHaveBeenSaved() {
-    $guyancourt = Class_Agenda_SQY_LocationWrapper::getWrappedInstance(121);
-    $this->assertFalse(static::$_lieu_loader->methodHasBeenCalledWithParams('save', [$guyancourt]));
-  }
-
-
-  /** @test */
-  public function lieuFermeBelEbatShouldHavePhone0130483344() {
-    $ferme = Class_Agenda_SQY_LocationWrapper::getWrappedInstance(47);
-    $this->assertEquals('01 30 48 33 44', $ferme->getTelephone());
-    return $ferme;
-  }
-
-
-  /**
-   * @test
-   * @depends lieuFermeBelEbatShouldHavePhone0130483344
-   */
-  public function lieuFermeBelEbatMailShouldBeSet($ferme) {
-    $this->assertEquals('laferme.debelebat@ville-guyancourt.fr', $ferme->getMail());
-  }
-
-
-  /**
-   * @test
-   * @depends lieuFermeBelEbatShouldHavePhone0130483344
-   */
-  public function lieuFermeBelEbatLatitueShouldBe48_7($ferme) {
-    $this->assertEquals('48.770757', $ferme->getLatitude());
-  }
-
-  /**
-   * @test
-   * @depends lieuFermeBelEbatShouldHavePhone0130483344
-   */
-  public function lieuFermeBelEbatLongitudeShouldBe2($ferme) {
-    $this->assertEquals('2.069614', $ferme->getLongitude());
-  }
-
-
-  /**
-   * @test
-   * @depends lieuFermeBelEbatShouldHavePhone0130483344
-   */
-  public function lieuFermeBelEbatUrlShouldBeLaFermeDeBelEbatDotFr($ferme) {
-    $this->assertEquals('http://www.lafermedebelebat.fr', $ferme->getUrl());
-  }
-
-
-  /** @test */
-  public function fourthEventLocationShouldBeMuseeNational() {
-    $event_infinis = $this->_events[3992];
-    $this->assertContains('Musée national des Granges',
-                          $event_infinis->getLieu()->getLibelle());
-  }
-
-
-  /** @test */
-  public function eventJazzClubShouldBeInCategoryJazz() {
-    $event_jazz = $this->_events[3486];
-    $this->assertEquals('Jazz', $event_jazz->getCategorie()->getLibelle());
-  }
-
-
-  /** @test */
-  public function categoryJazzShouldBeInContenu() {
-    $event_jazz = $this->_events[3486];
-    $this->assertContains('<span class="categorie"><h2>Jazz', $event_jazz->getContenu());
-  }
-
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"3654"%20location%3D"45"%20organizer%3D""%20category%3D"10,11"%20category2%3D"68"%20category3%3D""%20city2%3D"5"][event histoire soldat]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"10"][catégorie musique]]
-   */
-  public function eventHistoireDuSoldatShouldBeInExistingCategorieSpectacles() {
-    $event_soldat = Class_Agenda_SQY_EventWrapper::getWrappedInstance(3654);
-    $this->assertEquals(4, $event_soldat->getIdCat());
-    return $event_soldat;
-  }
-
-
-  /**
-   * @test
-   * @depends eventHistoireDuSoldatShouldBeInExistingCategorieSpectacles
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"68"][catégorie spectacles]]
-   */
-  public function evenHistoireDuSoldatTagsShouldContainsSpectacle($event_soldat) {
-    $this->assertEquals('Musique;Théâtre;Spectacles', $event_soldat->getTags());
-  }
-
-
-  /**
-   * @test
-   * @depends eventHistoireDuSoldatShouldBeInExistingCategorieSpectacles
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"68"][catégorie spectacles]]
-   */
-  public function evenHistoireDuSoldatDomaineIdsShouldBe4($event_soldat) {
-    $this->assertEquals('4', $event_soldat->getDomaineIds());
-  }
-
-
-  /**
-   * @test
-   */
-  public function eventJeuxDuMercrediShouldBeInCategoryPortail() {
-    $event_jeux = $this->_events[4006];
-    $this->assertEquals('Portail', $event_jeux->getCategorie()->getLibelle());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"4037"%20location%3D"15"%20organizer%3D""%20category%3D"11"%20category2%3D"70,68"%20category3%3D""%20city2%3D"1"][évenement "d'un retournement à l'autre"]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"70"][catégorie Eco-emploi]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"68"][catégorie spectacles]]
-   */
-  public function eventRetournementShouldHaveTagsEcoEmploiAndSpectacles() {
-    $event_retournement = $this->_events[4037];
-    $this->assertEquals('Théâtre;Eco - emploi;Spectacles', $event_retournement->getTags());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"4037"%20location%3D"15"%20organizer%3D""%20category%3D"11"%20category2%3D"70,68"%20category3%3D""%20city2%3D"1"][évenement "d'un retournement à l'autre"]]
-   */
-  public function eventRetournementShouldContainsTarif8Euros() {
-    $event_retournement = $this->_events[4037];
-    $this->assertContains('<dd>Tarif</dd><dt>8 euros</dt>', $event_retournement->getContenu());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"4037"%20location%3D"15"%20organizer%3D""%20category%3D"11"%20category2%3D"70,68"%20category3%3D""%20city2%3D"1"][évenement "d'un retournement à l'autre"]]
-   */
-  public function eventRetournementShouldContainsInfosPratiques() {
-    $event_retournement = $this->_events[4037];
-    $this->assertContains('<dl class="infos"><h2>Infos pratiques', $event_retournement->getContenu());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"4037"%20location%3D"15"%20organizer%3D""%20category%3D"11"%20category2%3D"70,68"%20category3%3D""%20city2%3D"1"][évenement "d'un retournement à l'autre"]]
-   */
-  public function eventRetournementShouldContainsAge5ans() {
-    $event_retournement = $this->_events[4037];
-    $this->assertContains('<dd>Age</dd><dt>5 ans</dt>', $event_retournement->getContenu());
-  }
-
-
-  /**
-   * @test
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"3786"%20location%3D"54"%20organizer%3D""%20category%3D"18,14"%20category2%3D"68"%20category3%3D"59"%20city2%3D"3"][évènement Pascal Péroteau]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"14"][catégorie Jeune public]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"68"][catégorie spectacles]]
-   * [[file:../../fixtures/agenda-sqy.xml::<item%20index%3D"59"][catégorie Représentation scolaire]]
-   */
-  public function eventPascalPeroteauShouldHaveTagsJeunePublicAndSpectaclesAndRepresentationScolaire() {
-    $event_peroteau = $this->_events[3786];
-    $this->assertEquals('Chanson;Jeune public;Spectacles;Représentation scolaire',
-                        $event_peroteau->getTags());
-  }
-}
-
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/AlbumCategorieTest.php b/tests/library/Class/AlbumCategorieTest.php
index 4cc39bda6c9ffede84c4cd68e15f5a39b7bf8e54..f009f203576ef4ffc2436505e0fad7e73d09fea9 100644
--- a/tests/library/Class/AlbumCategorieTest.php
+++ b/tests/library/Class/AlbumCategorieTest.php
@@ -20,7 +20,9 @@
  */
 
 class AlbumCategorieRootTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
 
     $this->cat_jeunesse = $this->fixture('Class_AlbumCategorie',
                                          ['id' => 23,
@@ -98,9 +100,4 @@ class AlbumCategorieRootTest extends ModelTestCase {
     $this->assertEquals(array($this->root),
                         $this->cat_jeunesse->getHierarchy());
   }
-
-
 }
-
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/AlbumRessourceTest.php b/tests/library/Class/AlbumRessourceTest.php
index b7eccd32b8ca8ba5ac1fd7a7aed0b4e76ca06740..c65de35e56aaf546da7b834e75cbfeca4d43217c 100644
--- a/tests/library/Class/AlbumRessourceTest.php
+++ b/tests/library/Class/AlbumRessourceTest.php
@@ -18,11 +18,13 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
+
+
 abstract class AlbumRessourceFileUploadTestCase extends ModelTestCase {
+
   /** @var Class_AlbumRessource */
   protected $_resource;
 
-
   protected function setUp() {
     parent::setUp();
 
@@ -39,6 +41,7 @@ abstract class AlbumRessourceFileUploadTestCase extends ModelTestCase {
 
 
 class AlbumRessourceInitializationTest extends AlbumRessourceFileUploadTestCase {
+
   public function initializeShouldSaveInstance() {
     $handler = $this->mock()
                     ->whenCalled('getError')->answers(null)
@@ -114,6 +117,7 @@ class AlbumRessourceInitializationTest extends AlbumRessourceFileUploadTestCase
 
 
 class AlbumRessourceReceivingFileTest extends AlbumRessourceFileUploadTestCase {
+
   /** @test */
   public function withNoFileShouldReturnTrue() {
     $_FILES['fichier']['size'] = 0;
@@ -130,7 +134,7 @@ class AlbumRessourceReceivingFileTest extends AlbumRessourceFileUploadTestCase {
     $handler->whenCalled('resetError')->answers($handler);
 
     $this->assertFalse($this->_resource->setUploadHandlerFor($handler, 'fichier')
-                                       ->receiveFile());
+                       ->receiveFile());
   }
 }
 
@@ -138,6 +142,7 @@ class AlbumRessourceReceivingFileTest extends AlbumRessourceFileUploadTestCase {
 
 
 class AlbumRessourceLoaderTest extends ModelTestCase {
+
   /** @test */
   public function withHarlockGetNextOrderShouldFilterOnHarlock() {
     $this->fixture('Class_AlbumRessource', ['id'=> 998,
@@ -149,13 +154,13 @@ class AlbumRessourceLoaderTest extends ModelTestCase {
                              'titre' => 'Harlock']);
     $this->assertEquals(7,Class_AlbumRessource::getNextOrderFor($album));
   }
-
 }
 
 
 
 
 class AlbumRessourceSortingTest extends ModelTestCase {
+
   /** @test */
   public function newInstanceShouldHaveOrderAfterSaving() {
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_AlbumRessource')
@@ -163,8 +168,8 @@ class AlbumRessourceSortingTest extends ModelTestCase {
       ->whenCalled('getNextOrderFor')->answers(99);
 
     $arcadia = Class_AlbumRessource::getLoader()
-                ->newInstance()
-                ->setTitre('Arcadia');
+      ->newInstance()
+      ->setTitre('Arcadia');
 
     $arcadia->save();
 
@@ -176,10 +181,11 @@ class AlbumRessourceSortingTest extends ModelTestCase {
 
 
 class AlbumRessourceTypesTest extends ModelTestCase {
+
   /** @test */
   public function emptyFileShouldNotBeImage() {
     $resource = Class_AlbumRessource::getLoader()->newInstance()
-                  ->setFichier('');
+                                                 ->setFichier('');
 
     $this->assertFalse($resource->isImage());
   }
@@ -188,7 +194,7 @@ class AlbumRessourceTypesTest extends ModelTestCase {
   /** @test */
   public function pngFileShouldBeImage() {
     $resource = Class_AlbumRessource::getLoader()->newInstance()
-                  ->setFichier('add.png');
+                                                 ->setFichier('add.png');
 
     $this->assertTrue($resource->isImage());
   }
@@ -197,15 +203,24 @@ class AlbumRessourceTypesTest extends ModelTestCase {
   /** @test */
   public function uppercaseGifFileShouldBeImage() {
     $resource = Class_AlbumRessource::getLoader()->newInstance()
-                  ->setFichier('add.GIF');
+                                                 ->setFichier('add.GIF');
 
     $this->assertTrue($resource->isImage());
   }
 }
 
 
+
+
 class AlbumRessourceTypeXMLTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->resource = Class_AlbumRessource::getLoader()
       ->newInstance()
       ->setTitre('Mon XML')
@@ -241,11 +256,19 @@ class AlbumRessourceTypeXMLTest extends ModelTestCase {
 
 
 
+
 class AlbumRessourceTypeSWFTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->resource = Class_AlbumRessource::getLoader()
-                      ->newInstance()
-                      ->setFichier('pacman.swf');
+      ->newInstance()
+      ->setFichier('pacman.swf');
   }
 
 
@@ -276,11 +299,19 @@ class AlbumRessourceTypeSWFTest extends ModelTestCase {
 
 
 
+
 class AlbumRessourceTypeMOVTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->resource = Class_AlbumRessource::getLoader()
-                      ->newInstance()
-                      ->setFichier('bladerunner.mov');
+      ->newInstance()
+      ->setFichier('bladerunner.mov');
   }
 
 
@@ -310,7 +341,10 @@ class AlbumRessourceTypeMOVTest extends ModelTestCase {
 }
 
 
+
+
 abstract class AlbumRessourceThumbnailTestCase extends ModelTestCase {
+
   protected $_expected_filepath;
   protected $_ressource;
   protected $_size_params;
@@ -353,7 +387,10 @@ abstract class AlbumRessourceThumbnailTestCase extends ModelTestCase {
 
 
 
-class AlbumRessourceThumbnailResizeHundredPerHundredTwentyTest extends AlbumRessourceThumbnailTestCase {
+
+class AlbumRessourceThumbnailResizeHundredPerHundredTwentyTest
+  extends AlbumRessourceThumbnailTestCase {
+
   protected $_size_params = array('width' => 100,
                                   'height' => 120,
                                   'crop_left' => 2,
@@ -391,18 +428,21 @@ class AlbumRessourceThumbnailResizeHundredPerHundredTwentyTest extends AlbumRess
 
   /** @test */
   public function withExistingFileShouldNotCreateNewThumbnail() {
-      unlink($this->_expected_filepath);
-      file_put_contents($this->_expected_filepath, 'some data');
+    unlink($this->_expected_filepath);
+    file_put_contents($this->_expected_filepath, 'some data');
 
-      $this->_ressource->getThumbnailFilePath($this->_size_params);
+    $this->_ressource->getThumbnailFilePath($this->_size_params);
 
-      $this->assertEquals('some data', file_get_contents($this->_expected_filepath));
+    $this->assertEquals('some data', file_get_contents($this->_expected_filepath));
   }
 }
 
 
 
-class AlbumRessourceThumbnailResizeNoParamTest extends AlbumRessourceThumbnailTestCase {
+
+class AlbumRessourceThumbnailResizeNoParamTest
+  extends AlbumRessourceThumbnailTestCase {
+
   protected $_size_params = array();
 
   /** @test */
@@ -423,11 +463,14 @@ class AlbumRessourceThumbnailResizeNoParamTest extends AlbumRessourceThumbnailTe
     $this->assertEquals($im->getImageBlob(),
                         $this->_ressource->getImage()->getImageBlob());
   }
-
 }
 
 
-class AlbumRessourceThumbnailResizeNoWidthButCropParamTest extends AlbumRessourceThumbnailTestCase {
+
+
+class AlbumRessourceThumbnailResizeNoWidthButCropParamTest
+  extends AlbumRessourceThumbnailTestCase {
+
   protected $_size_params = array('width' => 100,
                                   'crop_left' => 2);
 
@@ -443,11 +486,14 @@ class AlbumRessourceThumbnailResizeNoWidthButCropParamTest extends AlbumRessourc
 
 
 
+
 class AlbumRessourceFolioNumberTest extends ModelTestCase {
+
   protected $_ressource;
 
   public function setUp() {
     parent::setUp();
+
     $this->_ressource = Class_AlbumRessource::getLoader()->newInstanceWithId(4);
   }
 
@@ -492,5 +538,4 @@ class AlbumRessourceFolioNumberTest extends ModelTestCase {
   public function withFileAndFolioEmptyStringShouldAnswerEmptyString() {
     $this->assertEquals('', $this->_ressource->setFichier('1.jpg')->setFolio('')->getFolio());
   }
-
 }
diff --git a/tests/library/Class/ArteVodLinkTest.php b/tests/library/Class/ArteVodLinkTest.php
index 7a8e215f2a55daa8ba3363fd1754f2cfb5ebfe5b..fbeb54a1fd5895be659c467b8908c3ff9889aed1 100644
--- a/tests/library/Class/ArteVodLinkTest.php
+++ b/tests/library/Class/ArteVodLinkTest.php
@@ -21,22 +21,27 @@
 
 
 class ArteVodLinkBaseUrlWithoutAlbumTest extends ModelTestCase {
-   public function setUp() {
-     Class_AdminVar::set('ARTE_VOD_LOGIN', 'miiop');
-     $this->_arte_vod_link = new Class_ArteVodLink();
-   }
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('ARTE_VOD_LOGIN', 'miiop');
+    $this->_arte_vod_link = new Class_ArteVodLink();
+  }
 
 
-   /** @test */
-   public function withoutAlbumBaseUrlShouldReturnBaseUrl() {
-     $this->assertEquals('https://vod.mediatheque-numerique.com/mediatheques/miiop',
-                         $this->_arte_vod_link->baseUrl());
-   }
+  /** @test */
+  public function withoutAlbumBaseUrlShouldReturnBaseUrl() {
+    $this->assertEquals('https://vod.mediatheque-numerique.com/mediatheques/miiop',
+                        $this->_arte_vod_link->baseUrl());
+  }
 }
 
 
 
+
 class ArteVodLinkWithUserAndAlbumTest extends ModelTestCase {
+
   protected
     $_sso_key = 'secret',
     $_james_bond,
@@ -44,6 +49,7 @@ class ArteVodLinkWithUserAndAlbumTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $entre_les_murs = Class_Album::newInstanceWithId(5)
       ->beArteVOD()
       ->setExternalUri('http://www.mediatheque-numerique.com/films/entre-les-murs')
diff --git a/tests/library/Class/Article/CollectionTest.php b/tests/library/Class/Article/CollectionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e554334b246d8b154c73f8d5c2071771f24da5d3
--- /dev/null
+++ b/tests/library/Class/Article/CollectionTest.php
@@ -0,0 +1,167 @@
+<?php
+/**
+ * Copyright (c) 2012-2022, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+abstract class CollectionArticleTestCase extends ModelTestCase {
+  protected Class_Article_Collection $_collection;
+
+  public function setUp() {
+    parent::setUp();
+    $this->_fixtures();
+    $this->_collection = new Class_Article_Collection(Class_Article::findAll());
+  }
+
+
+  protected function _sortBy(string $sort_mode) : Class_Article_Collection {
+    return $this->_collection->sortBy($sort_mode);
+  }
+
+
+  abstract protected function _fixtures();
+}
+
+
+
+
+class CollectionArticleBaseTest extends CollectionArticleTestCase {
+  protected function _fixtures() {
+    $this->fixture(Class_Article::class,
+                   ['id' => 1,
+                    'titre' => 'Fête de la pomme',
+                    'contenu' => 'pom pom pom poooom',
+                    'date_creation' => '2011-04-02',
+                    'debut' => '2011-10-02',
+                    'events_debut' => '2011-10-20',
+                    'tags' => 'Fête;Pomme',
+                    'pick_day' => '6']);
+
+    $this->fixture(Class_Article::class,
+                   ['id' => 2,
+                    'titre' => 'Fête de la poire',
+                    'contenu' => 'we are ze knights who say Poire !',
+                    'date_creation' => '2010-03-25',
+                    'debut' => '2010-03-25',
+                    'events_debut' => '2010-03-25',
+                    'tags' => 'Fête;Poire',
+                    'pick_day' => '0']);
+
+    $this->fixture(Class_Article::class,
+                   ['id' => 3,
+                    'titre' => 'Fête de la banane',
+                    'contenu' => 'la polenta banana la chica rumba paella',
+                    'date_creation' => '2011-05-01',
+                    'debut' => '2011-01-01',
+                    'events_debut' => '2011-05-23',
+                    'pick_day' => '0,6']);
+  }
+
+
+  /** @test */
+  public function sortByRandowShouldShuffle() {
+    $first = $this->_sortBy('Random')->first();
+
+    // give us 10 chances to detect a shuffle
+    foreach(range(1, 10) as $id)
+      if ($first != $this->_sortBy('Random')->first())
+        return;
+
+    $this->fail();
+  }
+
+
+  /** @test */
+  public function slice2ShouldReturn2Articles() {
+    $this->assertCount(2, $this->_collection->slice(2));
+  }
+
+
+  /** @test */
+  public function byEventDebutShouldReturnPoireFirst() {
+    $this->assertEquals('Fête de la poire',
+                        $this->_sortBy('EventDebut')->first()->getTitre());
+  }
+
+
+  /** @test */
+  public function byDebutPublicationDescShouldReturnPommeThenBananeThenPoire() {
+    $this->assertEquals(['Fête de la pomme',
+                         'Fête de la banane',
+                         'Fête de la poire'],
+                        $this->_sortBy('DebutPublicationDesc')->collect('titre'));
+  }
+
+
+  /** @test */
+  public function byDateCreationDescShouldReturnBananeThenPommeThenPoire() {
+    $this->assertEquals(['Fête de la banane',
+                         'Fête de la pomme',
+                         'Fête de la poire'],
+                        $this->_sortBy('DateCreationDesc')->collect('titre'));
+  }
+
+
+  /** @test */
+  public function bySelectionShouldChangeNothing() {
+    $this->assertEquals(Class_Article::findAll(),
+                        $this->_sortBy('Selection')->getArrayCopy());
+  }
+
+
+  /** @test */
+  public function filterByTagPoireShouldReturnOnlyPoire() {
+    $filtered = $this->_collection->filterByTag('poire')->getArrayCopy();
+    $this->assertEquals('Fête de la poire', $filtered[0]->getTitre());
+    $this->assertCount(1, $filtered);
+  }
+
+
+  /** @test */
+  public function filterByTagPoMMeShouldReturnOnlyPomme() {
+    $filtered = $this->_collection->filterByTag('poMMe')->getArrayCopy();
+    $this->assertEquals('Fête de la pomme', $filtered[0]->getTitre());
+    $this->assertCount(1, $filtered);
+  }
+
+
+  /** @test */
+  public function filterByDaySaturdayShouldReturnPommeAndBanane() {
+    $filtered = $this->_collection->filterByDay('2011-09-03')->getArrayCopy();
+    $this->assertEquals('Fête de la pomme', $filtered[0]->getTitre());
+    $this->assertEquals('Fête de la banane', $filtered[1]->getTitre());
+    $this->assertCount(2, $filtered);
+  }
+
+
+  /** @test */
+  public function filterByDaySundayShouldReturnPoireAndBanane() {
+    $filtered = $this->_collection->filterByDay('2011-09-04')->getArrayCopy();
+    $this->assertEquals('Fête de la poire', $filtered[0]->getTitre());
+    $this->assertEquals('Fête de la banane', $filtered[1]->getTitre());
+    $this->assertCount(2, $filtered);
+  }
+
+
+  /** @test */
+  public function filterByDayWithMonthShouldNotFilter() {
+    $this->assertCount(3,
+                       $this->_collection->filterByDay('2011-09')
+                       ->getArrayCopy());
+  }
+}
diff --git a/tests/library/Class/ArticleCategorieTest.php b/tests/library/Class/ArticleCategorieTest.php
index 915c574512d6cb1d6508ef8325bb97483879e36f..ddafb191fdd663c1b60f645f6e17426ee6e06c60 100644
--- a/tests/library/Class/ArticleCategorieTest.php
+++ b/tests/library/Class/ArticleCategorieTest.php
@@ -20,7 +20,10 @@
  */
 
 class ArticleCategorieTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->annecy = Class_Bib::newInstanceWithId(21, ['libelle' => 'Annecy']);
 
     $this->cat_jeunesse = Class_ArticleCategorie::newInstanceWithId(3,
@@ -357,4 +360,4 @@ class ArticleCategorieParentTest extends ModelTestCase {
   public function newsParentCategorieShouldBe0() {
     $this->assertEquals('0', $this->_news->getIdCatMere());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/ArticleLoaderTest.php b/tests/library/Class/ArticleLoaderTest.php
index b70463bfd35cc44960c7546a35389ea2abc19df2..dd3f6865a61a1e481e25adb50b51aab1f0f1c518 100644
--- a/tests/library/Class/ArticleLoaderTest.php
+++ b/tests/library/Class/ArticleLoaderTest.php
@@ -24,14 +24,16 @@ abstract class ArticleLoaderGetArticlesByPreferencesTestCase extends ModelTestCa
   const WHERE_VISIBLE_CLAUSE =
     '((DEBUT IS NULL) OR (DEBUT <= CURDATE())) AND ((FIN IS NULL) OR (FIN >= CURDATE()))';
 
-  protected $select;
-
+  protected Class_Article_TableSelectForTest $select;
+  protected $_storm_default_to_volatile = false;
+  protected bool $_storm_mock_zend_adapter = false;
 
   public function setUp() {
+    parent::setUp();
+
     Class_AdminVar::set('ENABLE_ARTICLES_TIMINGS', 0);
 
-    $this->select = (new Class_Article_TableSelectForTest)
-      ->setFetchAllResult($this->_articlesFixtures());
+    $this->select = new Class_Article_TableSelectForTest;
 
     Class_ArticleCategorie::getLoader()
       ->newInstanceWithId(2)
@@ -40,44 +42,11 @@ abstract class ArticleLoaderGetArticlesByPreferencesTestCase extends ModelTestCa
                            ->newInstanceWithId(4)
                            ->setLibelle('Exotiques')
                            ->setSousCategories([])]);
-
-  }
-
-
-  protected function _articlesFixtures() {
-    return [
-            [
-             'ID_ARTICLE' => 23,
-             'ID_CAT' => 2,
-             'TITRE' => 'Fête de la pomme',
-             'DATE_CREATION' => '2011-04-02',
-             'DEBUT' => '2011-10-02',
-             'FIN' => '2011-10-22',
-             'EVENTS_DEBUT' => '2011-10-20',
-             'TAGS' => 'Fête;Pomme'],
-
-            ['ID_ARTICLE' => 18,
-             'ID_CAT' => 2,
-             'TITRE' => 'Fête de la poire',
-             'DATE_CREATION' => '2010-03-25',
-             'DEBUT' => '2010-03-25',
-             'EVENTS_DEBUT' => '2010-03-25',
-             'TAGS' => 'Fête;Poire'],
-
-            ['ID_ARTICLE' => 55,
-             'ID_CAT' => 4,
-             'TITRE' => 'Fête de la banane',
-             'DEBUT' => '2011-01-01',
-             'DATE_CREATION' => '2011-05-01',
-             'EVENTS_DEBUT' => '2011-03-25',
-             'EVENTS_FIN' => '2011-03-27',
-             'TAGS' => 'Fête;Banane']
-    ];
   }
 
 
   public function getArticles($prefs) {
-    return Class_Article::getLoader()->getArticlesByPreferences($prefs);
+    return Class_Article::getArticlesByPreferences($prefs);
   }
 
 
@@ -90,151 +59,108 @@ abstract class ArticleLoaderGetArticlesByPreferencesTestCase extends ModelTestCa
 
 
 
-class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticlesByPreferencesTestCase {
+class ArticleLoaderGetArticlesByPreferencesTest
+  extends ArticleLoaderGetArticlesByPreferencesTestCase {
+
   /** @test */
-  function withNoSelectionAnd5ArticlesDisplayedOrderedByDate() {
-    $articles = $this->getArticles(array('display_order' => 'DateCreationDesc',
-                                         'nb_aff' => 5));
+  public function withNoSelectionAnd5ArticlesDisplayedOrderedByDate() {
+    $this->getArticles(['display_order' => 'DateCreationDesc',
+                        'nb_aff' => 5]);
+
     $this->assertSelect(sprintf("WHERE %s AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC LIMIT 5",
                                 self::WHERE_VISIBLE_CLAUSE));
-    return $articles;
   }
 
 
   /** @test */
-  function withNoSelectionAnd5ArticlesDisplayedOrderedByDateAndLangueRO() {
-    $articles = $this->getArticles(array('display_order' => 'DateCreationDesc',
-                                         'nb_aff' => 5,
-                                         'langue' => 'ro'));
+  public function withNoSelectionAnd5ArticlesDisplayedOrderedByDateAndLangueRO() {
+    $this->getArticles(['display_order' => 'DateCreationDesc',
+                        'nb_aff' => 5,
+                        'langue' => 'ro']);
+
     $this->assertSelect(sprintf("WHERE %s AND (LANGUE='ro') ORDER BY `DATE_CREATION` DESC LIMIT 5",
                                 self::WHERE_VISIBLE_CLAUSE));
-    return $articles;
   }
 
 
   /** @test */
-  function withNoSelectionAnd2ArticlesOn10DisplayedOrderedRandom() {
-    $articles = $this->getArticles(array('display_order' => 'Random',
-                                         'nb_analyse' => 10,
-                                         'nb_aff' => 2));
+  public function withNoSelectionAnd2ArticlesOn10DisplayedOrderedRandom() {
+    $this->getArticles(['display_order' => 'Random',
+                        'nb_analyse' => 10,
+                        'nb_aff' => 2]);
+
     $this->assertSelect(sprintf("WHERE %s AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC LIMIT 10",
                                 self::WHERE_VISIBLE_CLAUSE));
-    return $articles;
   }
 
 
-
   /** @test */
-  function withNoSelectionAndDisplayedOrderedByDateFirstShouldAlwaysBeFeteDeLaBanane() {
-    for($i=0; $i<10; $i++) {
-      $articles = $this->getArticles(array('display_order' => 'DateCreationDesc',
-                                           'nb_aff' => 5));
-      $this->assertEquals('Fête de la banane', array_first($articles)->getTitre());
-    }
-  }
-
+  public function withNoSelectionAndDisplayedOrderedByDate() {
+    $this->getArticles(['display_order' => 'DateCreationDesc',
+                        'nb_aff' => 5]);
 
-  /** @test */
-  function withDisplayOrderRandomArticlesShouldBeShuffled() {
-    $articles = $this->getArticles(array('display_order' => 'Random',
-                                         'nb_analyse' => 10,
-                                         'nb_aff' => 2));
-    for($i=0; $i<10; $i++) {
-      $next = $this->getArticles(array('display_order' => 'Random',
-                                       'nb_analyse' => 10,
-                                       'nb_aff' => 2));
-      if ($next[0] != $articles[0])
-        return;
-    }
-    $this->assertFalse(true);
-  }
-
-
-  /**
-   * @test
-   * @depends withNoSelectionAnd2ArticlesOn10DisplayedOrderedRandom
-   */
-  function withNoSelectionNbAffTwoShouldReturnTwoArticles($articles) {
-    $this->assertEquals(2, count($articles));
+    $this->assertSelect(sprintf("WHERE %s AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC LIMIT 5",
+                                self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
-  function withArticleSelectionAndNbAffOneFirstShouldBeDisplayedOrderedByEventDebut() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_items' => '23-18-',
-                                         'nb_aff' => 1));
+  public function withArticleSelectionAndNbAffOneFirstShouldBeDisplayedOrderedByEventDebut() {
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '23-18-',
+                        'nb_aff' => 1]);
+
     $this->assertSelect(sprintf("WHERE %s AND (id_article in (23,18)) ORDER BY FIELD(ID_ARTICLE, 23,18) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
-    $this->assertEquals('Fête de la poire', array_first($articles)->getTitre());
-    $this->assertEquals(1, count($articles));
   }
 
 
-
   /** @test */
-  function withArticleSelectionAndNbAffOneOrderSelctionBothArticlesShouldBeVisible() {
-    $articles = $this->getArticles(array('display_order' => 'Selection',
-                                         'id_items' => '23-18-',
-                                         'nb_aff' => 1));
+  public function withArticleSelectionAndNbAffOneOrderSelctionBothArticlesShouldBeVisible() {
+    $this->getArticles(['display_order' => 'Selection',
+                        'id_items' => '23-18-',
+                        'nb_aff' => 1]);
+
     $this->assertSelect(sprintf("WHERE %s AND (id_article in (23,18)) ORDER BY FIELD(ID_ARTICLE, 23,18) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
-    $this->assertEquals('Fête de la pomme', array_first($articles)->getTitre());
-    $this->assertEquals('Fête de la banane', array_last($articles)->getTitre());
-    $this->assertEquals(3, count($articles));
   }
 
 
 
   /** @test */
-  function withArticleSelectionNoIditemsNorIdCategorieShouldAnswersEmptyList() {
-    $articles = $this->getArticles(['display_order' => 'Selection',
-                                    'id_items' => '',
-                                    'id_categorie' => '']);
-    $this->assertEmpty($articles);
+  public function withArticleSelectionNoIditemsNorIdCategorieShouldAnswersEmptyList() {
+    $this->assertEmpty($this->getArticles(['display_order' => 'Selection',
+                                           'id_items' => '',
+                                           'id_categorie' => '']));
   }
 
 
   /** @test */
-  function withArticleSelectionRandomAndNbAffOneShouldReturnOneArticle() {
-    $articles = $this->getArticles(array('display_order' => 'Random',
-                                         'nb_aff' => 1));
-    $this->assertEquals(1, count($articles));
-  }
-
+  public function withCategorieSelectionDisplayedOrderedByDebutPublication() {
+    $this->getArticles(['display_order' => 'DebutPublicationDesc',
+                        'id_categorie' => '4-2',
+                        'nb_aff' => 2]);
 
-  /** @test */
-  function withCategorieSelectionDisplayedOrderedByDebutPublication() {
-    $articles = $this->getArticles(array('display_order' => 'DebutPublicationDesc',
-                                         'id_categorie' => '4-2',
-                                         'nb_aff' => 2));
     $this->assertSelect(sprintf("WHERE %s AND (`cms_article`.ID_CAT in (4,2)) ORDER BY FIELD(`cms_article`.ID_CAT, 4,2) ASC",
                         self::WHERE_VISIBLE_CLAUSE));
-    $this->assertEquals('Fête de la pomme', array_first($articles)->getTitre());
-    $this->assertEquals('Fête de la banane', array_at(1, $articles)->getTitre());
-    $this->assertEquals(2, count($articles));
   }
 
 
   /** @test */
-  function withSelectionCategoriesAndLangueFr() {
-    $articles = $this->getArticles(array('id_categorie' => '4-2',
-                                         'nb_aff' => 2,
-                                         'langue' => 'ro'));
+  public function withSelectionCategoriesAndLangueFr() {
+    $this->getArticles(['id_categorie' => '4-2',
+                        'nb_aff' => 2,
+                        'langue' => 'ro']);
+
     $this->assertSelect(sprintf("WHERE %s AND (`cms_article`.ID_CAT in (4,2)) ORDER BY FIELD(`cms_article`.ID_CAT, 4,2) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
-  function withObsoleteSelectionCategories() {
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
-      ->whenCalled('find')
-      ->with(99)
-      ->answers(null);
-
-    $this->getArticles(array('id_categorie' => '9999-2',
-                             'nb_aff' => 2));
+  public function withObsoleteSelectionCategories9999ShouldNotBeInWhere() {
+    $this->getArticles(['id_categorie' => '9999-2',
+                        'nb_aff' => 2]);
 
     $this->assertSelect(sprintf("WHERE %s AND (`cms_article`.ID_CAT in (2,4)) ORDER BY FIELD(`cms_article`.ID_CAT, 2,4) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
@@ -242,32 +168,32 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
 
 
   /** @test */
-  function withArticleAndCategorieSelectionSqlShouldBeOr() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_items' => '23-18-',
-                                         'id_categorie' => '4',
-                                         'nb_aff' => 3));
+  public function withArticleAndCategorieSelectionSqlShouldBeOr() {
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '23-18-',
+                        'id_categorie' => '4',
+                        'nb_aff' => 3]);
+
     $this->assertSelect(sprintf("WHERE %s AND (id_article in (23,18) OR `cms_article`.ID_CAT in (4)) ORDER BY FIELD(`cms_article`.ID_CAT, 4) ASC, FIELD(ID_ARTICLE, 23,18) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
 
 
-
   /** @test */
-  function withArticleAndPlaceSelectionSqlShouldIncludeIdLieu() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_lieu' => '2',
-                                         'id_categorie' => '4',
-                                         'nb_aff' => 3));
+  public function withArticleAndPlaceSelectionSqlShouldIncludeIdLieu() {
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_lieu' => '2',
+                        'id_categorie' => '4',
+                        'nb_aff' => 3]);
+
     $this->assertSelect(sprintf("WHERE %s AND (ID_LIEU=2) AND (`cms_article`.ID_CAT in (4)) ORDER BY FIELD(`cms_article`.ID_CAT, 4) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
 
 
-
   /** @test */
-  function withArticleAndCustomFieldValueSelectionSqlShouldFilterByCustomField() {
-    $this->fixture('Class_CustomField',
+  public function withArticleAndCustomFieldValueSelectionSqlShouldFilterByCustomField() {
+    $this->fixture(Class_CustomField::class,
                    ['id' => 5,
                     'priority' => 3,
                     'label' => 'Options',
@@ -275,11 +201,11 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
                     'options_list' => 'wifi;jardinage;projection',
                     'model' => 'Article']);
 
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'custom_fields' => [5 => ['value1'],
-                                                        12 => ['value2']],
-                                    'id_categorie' => '4',
-                                    'nb_aff' => 3]);
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'custom_fields' => [5 => ['value1'],
+                                            12 => ['value2']],
+                        'id_categorie' => '4',
+                        'nb_aff' => 3]);
 
     $this->assertSelect('WHERE ((DEBUT IS NULL) OR (DEBUT <= CURDATE())) AND ((FIN IS NULL) OR (FIN >= CURDATE())) AND (`cms_article`.ID_CAT in (4)) ORDER BY FIELD(`cms_article`.ID_CAT, 4) ASC');
   }
@@ -287,37 +213,36 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
 
   /** @test */
   public function withSelectionShouldBeOrderedByDateCreation() {
-    $articles = $this->getArticles(array('display_order' => 'DateCreationDesc',
-                                         'id_items' => '18-23-',
-                                         'nb_aff' => 1));
+    $this->getArticles(['display_order' => 'DateCreationDesc',
+                        'id_items' => '18-23-',
+                        'nb_aff' => 1]);
 
     $this->assertSelect(sprintf("WHERE %s AND (id_article in (18,23)) ORDER BY FIELD(ID_ARTICLE, 18,23) ASC",
                                 self::WHERE_VISIBLE_CLAUSE));
-    $this->assertEquals('Fête de la banane', array_first($articles)->getTitre());
-    $this->assertEquals(1, count($articles));
   }
 
 
   /** @test */
   public function withMonthDateSqlShouldFilterEventsByMonth() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_items' => '',
-                                         'id_categorie' => '',
-                                         'event_date' => '2011-03',
-                                         'id_bib' => 0));
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'event_date' => '2011-03',
+                        'id_bib' => 0]);
+
     $this->assertSelect(sprintf("WHERE %s AND (left(EVENTS_DEBUT,7) <= '2011-03') AND (left(EVENTS_FIN,7) >= '2011-03') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
-    $this->assertEquals(3, count($articles));
   }
 
 
   /** @test */
   public function withDayDateSqlShouldFilterEventsByDay() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_items' => '',
-                                         'id_categorie' => '',
-                                         'event_date' => '2011-03-15',
-                                         'id_bib' => 0));
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'event_date' => '2011-03-15',
+                        'id_bib' => 0]);
+
     $this->assertSelect(sprintf("WHERE %s AND (left(EVENTS_DEBUT,10) <= '2011-03-15') AND (left(EVENTS_FIN,10) >= '2011-03-15') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -325,11 +250,12 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
 
   /** @test */
   public function withIdBibGivenShouldFilterByIdSite() {
-    $articles = $this->getArticles(array('display_order' => 'EventDebut',
-                                         'id_items' => '',
-                                         'id_categorie' => '',
-                                         'event_date' => '2011-03',
-                                         'id_bib' => 5 ));
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'event_date' => '2011-03',
+                        'id_bib' => 5]);
+
     $this->assertSelect(sprintf("INNER JOIN `cms_categorie` ON cms_categorie.ID_CAT = cms_article.ID_CAT WHERE %s AND (cms_categorie.ID_SITE=5) AND (left(EVENTS_DEBUT,7) <= '2011-03') AND (left(EVENTS_FIN,7) >= '2011-03') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -337,9 +263,10 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
 
   /** @test */
   public function withOrderCommentCountShouldJoinWithCmsRank() {
-    $articles = $this->getArticles(['display_order' => 'CommentCount',
-                                    'id_items' => '',
-                                    'id_categorie' => '4-2']);
+    $this->getArticles(['display_order' => 'CommentCount',
+                        'id_items' => '',
+                        'id_categorie' => '4-2']);
+
     $this->assertSelect(sprintf("INNER JOIN `cms_rank` ON cms_rank.ID_CMS = cms_article.ID_ARTICLE WHERE %s AND (`cms_article`.ID_CAT in (4,2)) ORDER BY (cms_rank.abon_nombre_avis + cms_rank.bib_nombre_avis) desc",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -347,91 +274,57 @@ class ArticleLoaderGetArticlesByPreferencesTest extends ArticleLoaderGetArticles
 
   /** @test */
   public function withStatusShouldFilterByStatus() {
-    $articles = $this->getArticles(array('status' => Class_Article::STATUS_ARCHIVED));
-    $this->assertSelect(sprintf('WHERE %s AND (PARENT_ID=0) AND (STATUS in (4)) ORDER BY `DATE_CREATION` DESC', self::WHERE_VISIBLE_CLAUSE));
+    $this->getArticles(['status' => Class_Article::STATUS_ARCHIVED]);
+
+    $this->assertSelect(sprintf('WHERE %s AND (PARENT_ID=0) AND (STATUS in (4)) ORDER BY `DATE_CREATION` DESC',
+                                self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
   public function withManyStatusShouldFilterByManyStatus() {
-    $articles = $this->getArticles(['status' => [Class_Article::STATUS_ARCHIVED,
-                                         Class_Article::STATUS_DRAFT]]);
-    $this->assertSelect(sprintf('WHERE %s AND (PARENT_ID=0) AND (STATUS in (4, 1)) ORDER BY `DATE_CREATION` DESC', self::WHERE_VISIBLE_CLAUSE));
+    $this->getArticles(['status' => [Class_Article::STATUS_ARCHIVED,
+                                     Class_Article::STATUS_DRAFT]]);
+
+    $this->assertSelect(sprintf('WHERE %s AND (PARENT_ID=0) AND (STATUS in (4, 1)) ORDER BY `DATE_CREATION` DESC',
+                                self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
   public function withEventsOnlyShouldFilterOnEventsDates() {
-    $article = $this->getArticles(array('events_only' => true));
-    $this->assertSelect(sprintf('WHERE %s AND (EVENTS_DEBUT IS NOT NULL) AND (EVENTS_FIN IS NOT NULL) AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC', self::WHERE_VISIBLE_CLAUSE));
-  }
-
+    $this->getArticles(['events_only' => true]);
 
-  /** @test */
-  public function withEventEndAfterSqlShouldFilterOnEventsFin() {
-    $articles = $this->getArticles(['event_end_after' => '2011-03-15']);
-    $this->assertSelect(sprintf("WHERE %s AND (EVENTS_FIN IS NOT NULL) AND (left(EVENTS_FIN,10) >= '2011-03-15') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC",  self::WHERE_VISIBLE_CLAUSE));
+    $this->assertSelect(sprintf('WHERE %s AND (EVENTS_DEBUT IS NOT NULL) AND (EVENTS_FIN IS NOT NULL) AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC',
+                                self::WHERE_VISIBLE_CLAUSE));
   }
 
 
-
   /** @test */
-  public function withPublishedFalseShouldNotFilterByDebutAndFin() {
-    $article = $this->getArticles(array('published' => false));
-    $this->assertSelect('WHERE (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC');
-  }
-
-
+  public function withEventEndAfterSqlShouldFilterOnEventsFin() {
+    $this->getArticles(['event_end_after' => '2011-03-15']);
 
-  /** @test */
-  function withArticleSelectionTagPoireShouldAnswersArticleFetePoire() {
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'tag' => 'poire']);
-    $this->assertEquals(['Fête de la poire'],
-                        array_map(function($article) { return $article->getTitre(); },
-                                  $articles));
+    $this->assertSelect(sprintf("WHERE %s AND (EVENTS_FIN IS NOT NULL) AND (left(EVENTS_FIN,10) >= '2011-03-15') AND (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC",
+                                self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
-  function withArticleSelectionTagPoMMeShouldAnswersArticleFetePomme() {
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'tag' => 'poMMe']);
-    $this->assertEquals(['Fête de la pomme'],
-                        array_map(function($article) { return $article->getTitre(); },
-                                  $articles));
-  }
-}
-
-
-
-
-abstract class ArticleLoaderGroupByBibTestCase extends ModelTestCase {
-  /** @var array */
-  protected $articles;
-
-  protected function setUp() {
-    parent::setUp();
+  public function withPublishedFalseShouldNotFilterByDebutAndFin() {
+    $this->getArticles(['published' => false]);
 
-    $this->articles = Class_Article_Loader::groupByBibId($this->_getArticlesFixture());
+    $this->assertSelect('WHERE (PARENT_ID=0) ORDER BY `DATE_CREATION` DESC');
   }
-
 }
 
 
 
 
 class ArticleLoaderWithCustomFieldsTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CustomField',
+    $this->fixture(Class_CustomField::class,
                    ['id' => 5,
                     'priority' => 3,
                     'label' => 'Options',
@@ -439,7 +332,7 @@ class ArticleLoaderWithCustomFieldsTest extends ModelTestCase {
                     'options_list' => 'wifi;jardinage;projection',
                     'model' => 'Article']);
 
-    $soiree_net = $this->fixture('Class_Article',
+    $soiree_net = $this->fixture(Class_Article::class,
                                  ['id' => 1,
                                   'titre' => 'Soirée internet',
                                   'contenu' => 'Ondes power',
@@ -448,7 +341,7 @@ class ArticleLoaderWithCustomFieldsTest extends ModelTestCase {
       ->setCustomField('Options', ['wifi', 'projection'])
       ->saveWithCustomFields();
 
-    $journee_potager = $this->fixture('Class_Article',
+    $journee_potager = $this->fixture(Class_Article::class,
                                       ['id' => 2,
                                        'titre' => 'Massacre de limaces',
                                        'contenu' => '50 façons de tuer les limaces']);
@@ -469,7 +362,7 @@ class ArticleLoaderWithCustomFieldsTest extends ModelTestCase {
 
     Class_Article::setTable($table);
 
-    $this->onLoaderOfModel('Class_Article')
+    $this->onLoaderOfModel(Class_Article::class)
          ->whenCalled('findAll')
          ->answers([$soiree_net, $journee_potager]);
   }
@@ -487,42 +380,80 @@ class ArticleLoaderWithCustomFieldsTest extends ModelTestCase {
 
 
 
+abstract class ArticleLoaderGroupByBibTestCase extends ModelTestCase {
+  protected array $articles;
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->articles = Class_Article_Loader::groupByBibId($this->_getArticlesFixture());
+  }
+
+
+  abstract protected function _getArticlesFixture() : array;
+}
+
+
+
+
 class ArticleLoaderGroupByBibWithoutBibTest extends ArticleLoaderGroupByBibTestCase {
+  protected function _getArticlesFixture() : array {
+    return [$this->fixture(Class_Article::class,
+                           ['id' => 1,
+                            'titre' => 'Un article merveilleux',
+                            'contenu' => 'Un article merveilleux']),
+            $this->fixture(Class_Article::class,
+                           ['id' => 2,
+                            'titre' => 'Un article moins merveilleux que le précédent',
+                            'contenu' => 'Un article moins merveilleux que le précédent'])];
+  }
+
+
   /** @test */
   public function sizeOfArrayShouldBeOne() {
     $this->assertEquals(1, count($this->articles));
   }
 
+
   /** @test */
   public function keyShouldBeZero() {
     $this->assertEquals(0, key($this->articles));
   }
 
+
   /** @test */
   public function valueShouldBeSourceArray() {
     $this->assertEquals($this->_getArticlesFixture(), current($this->articles));
   }
-
-  /**
-   * @return array
-   */
-  protected function _getArticlesFixture() {
-    return array(
-      Class_Article::getLoader()
-        ->newInstanceWithId(1)
-        ->setTitre('Un article merveilleux'),
-      Class_Article::getLoader()
-        ->newInstanceWithId(2)
-        ->setTitre('Un article moins merveilleux que le précédent'),
-    );
-  }
 }
 
 
 
 
-class ArticleLoaderGroupByBibWithOneBibTest
-extends ArticleLoaderGroupByBibTestCase {
+class ArticleLoaderGroupByBibWithOneBibTest extends ArticleLoaderGroupByBibTestCase {
+  protected function _getArticlesFixture() : array {
+    $alimentation = $this
+      ->fixture(Class_ArticleCategorie::class,
+                ['id' => 1,
+                 'libelle' => 'Alimentation',
+                 'bib' => $this->fixture(Class_Bib::class,
+                                         ['id' => 1,
+                                          'libelle' => 'Bonlieu'])]);
+
+    return [$this->fixture(Class_Article::class,
+                           ['id' => 1,
+                            'titre' => 'Un article merveilleux',
+                            'contenu' => 'Un article merveilleux',
+                            'categorie' => $alimentation]),
+
+            $this->fixture(Class_Article::class,
+                           ['id' => 2,
+                            'titre' => 'Un article moins merveilleux que le précédent',
+                            'contenu' => 'Un article moins merveilleux que le précédent',
+                            'categorie' => $alimentation])];
+  }
+
+
   /** @test */
   public function sizeOfArrayShouldBeOne() {
     $this->assertEquals(1, count($this->articles));
@@ -539,48 +470,43 @@ extends ArticleLoaderGroupByBibTestCase {
   public function valueShouldBeSourceArray() {
     $this->assertEquals($this->_getArticlesFixture(), current($this->articles));
   }
+}
 
 
-  /**
-   * @return array
-   */
-  protected function _getArticlesFixture() {
-    return array(
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(1)
-                 ->setTitre('Un article merveilleux')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(1)
-                                ->setLibelle('Alimentation')
-                                ->setBib(
-                                         Class_Bib::getLoader()
-                                         ->newInstanceWithId(1)
-                                         ->setLibelle('Bonlieu')
-                                         )
-                                ),
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(2)
-                 ->setTitre('Un article moins merveilleux que le précédent')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(1)
-                                ->setLibelle('Alimentation')
-                                ->setBib(
-                                         Class_Bib::getLoader()
-                                         ->newInstanceWithId(1)
-                                         ->setLibelle('Bonlieu')
-                                         )
-                                ),
-                 );
-  }
-}
 
 
+class ArticleLoaderGroupByBibWithTwoBibTest extends ArticleLoaderGroupByBibTestCase {
+  protected function _getArticlesFixture() : array {
+    $alimentation = $this
+      ->fixture(Class_ArticleCategorie::class,
+                ['id' => 1,
+                 'libelle' => 'Alimentation',
+                 'bib' => $this->fixture(Class_Bib::class,
+                                         ['id' => 1,
+                                          'libelle' => 'Bonlieu'])]);
+
+    $ateliers = $this
+      ->fixture(Class_ArticleCategorie::class,
+                ['id' => 2,
+                 'libelle' => 'Ateliers',
+                 'bib' => $this->fixture(Class_Bib::class,
+                                         ['id' => 2,
+                                          'libelle' => 'La Turbine'])]);
+
+    return [$this->fixture(Class_Article::class,
+                           ['id' => 1,
+                            'titre' => 'Un article merveilleux',
+                            'contenu' => 'Un article merveilleux',
+                            'categorie' => $alimentation]),
+
+            $this->fixture(Class_Article::class,
+                           ['id' => 2,
+                            'titre' => 'Un article moins merveilleux que le précédent',
+                            'contenu' => 'Un article moins merveilleux que le précédent',
+                            'categorie' => $ateliers])];
+  }
 
 
-class ArticleLoaderGroupByBibWithTwoBibTest
-extends ArticleLoaderGroupByBibTestCase {
   /** @test */
   public function sizeOfArrayShouldBeTwo() {
     $this->assertEquals(2, count($this->articles));
@@ -589,7 +515,7 @@ extends ArticleLoaderGroupByBibTestCase {
 
   /** @test */
   public function keysShouldBeBonlieuAndLaTurbine() {
-    $this->assertEquals([1,2], array_keys($this->articles));
+    $this->assertEquals([1, 2], array_keys($this->articles));
   }
 
 
@@ -605,48 +531,40 @@ extends ArticleLoaderGroupByBibTestCase {
     $fixtures = $this->_getArticlesFixture();
     $this->assertEquals($fixtures[1], $this->articles[2][0]);
   }
+}
 
 
-  /**
-   * @return array
-   */
-  protected function _getArticlesFixture() {
-    return array(
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(1)
-                 ->setTitre('Un article merveilleux')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(1)
-                                ->setLibelle('Alimentation')
-                                ->setBib(
-                                         Class_Bib::getLoader()
-                                         ->newInstanceWithId(1)
-                                         ->setLibelle('Bonlieu')
-                                         )
-                                ),
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(2)
-                 ->setTitre('Un article moins merveilleux que le précédent')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(1)
-                                ->setLibelle('Alimentation')
-                                ->setBib(
-                                         Class_Bib::getLoader()
-                                         ->newInstanceWithId(2)
-                                         ->setLibelle('La Turbine')
-                                         )
-                                ),
-                 );
-  }
-}
 
 
+class ArticleLoaderGroupByBibWithAndWithoutBibTest extends ArticleLoaderGroupByBibTestCase {
+  protected function _getArticlesFixture() : array {
+    $alimentation = $this
+      ->fixture(Class_ArticleCategorie::class,
+                ['id' => 1,
+                 'libelle' => 'Alimentation']);
+
+    $electronic = $this
+      ->fixture(Class_ArticleCategorie::class,
+                ['id' => 2,
+                 'libelle' => 'Électronique',
+                 'bib' => $this->fixture(Class_Bib::class,
+                                         ['id' => 2,
+                                          'libelle' => 'La Turbine'])]);
+
+    return [$this->fixture(Class_Article::class,
+                           ['id' => 1,
+                            'titre' => 'Un article merveilleux',
+                            'contenu' => 'Un article merveilleux',
+                            'categorie' => $alimentation]),
+
+            $this->fixture(Class_Article::class,
+                           ['id' => 2,
+                            'titre' => 'Un article moins merveilleux que le précédent',
+                            'contenu' => 'Un article moins merveilleux que le précédent',
+                            'categorie' => $electronic])];
+  }
 
 
-class ArticleLoaderGroupByBibWithAndWithoutBibTest
-extends ArticleLoaderGroupByBibTestCase {
   /** @test */
   public function sizeOfArrayShouldBeTwo() {
     $this->assertEquals(2, count($this->articles));
@@ -671,87 +589,4 @@ extends ArticleLoaderGroupByBibTestCase {
     $fixtures = $this->_getArticlesFixture();
     $this->assertEquals($fixtures[1], $this->articles[2][0]);
   }
-
-
-  /**
-   * @return array
-   */
-  protected function _getArticlesFixture() {
-    return array(
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(1)
-                 ->setTitre('Un article merveilleux')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(1)
-                                ->setLibelle('Alimentation')
-                                ),
-                 Class_Article::getLoader()
-                 ->newInstanceWithId(2)
-                 ->setTitre('Un article moins merveilleux que le précédent')
-                 ->setCategorie(
-                                Class_ArticleCategorie::getLoader()
-                                ->newInstanceWithId(2)
-                                ->setLibelle('Électronique')
-                                ->setBib(
-                                         Class_Bib::getLoader()
-                                         ->newInstanceWithId(2)
-                                         ->setLibelle('La Turbine')
-                                         )
-                                ),
-                 );
-  }
-}
-
-
-
-
-class ArticleLoaderFilterByDayTest extends ArticleLoaderGetArticlesByPreferencesTestCase {
-  protected function _articlesFixtures() {
-    return [
-            [
-             'ID_ARTICLE' => 23,
-             'TITRE' => 'Fête de la pomme',
-             'PICK_DAY' => '6'],
-
-            ['ID_ARTICLE' => 18,
-             'TITRE' => 'Fête de la poire',
-             'PICK_DAY' => '0'],
-
-            ['ID_ARTICLE' => 55,
-             'TITRE' => 'Fête de la banane',
-             'PICK_DAY' => '0,6'],
-
-            ['ID_ARTICLE' => 57,
-             'TITRE' => 'Fête de la frite',
-             'PICK_DAY' => '0,1,3,4,5,6']
-    ];
-  }
-
-
-  protected function _getArticlesId($prefs) {
-    return array_values(array_map(function($a) { return $a->getId(); },
-                                  $this->getArticles($prefs)));
-  }
-
-
-  /** @test */
-  public function onSaturdayShouldGetFetePommeBananeFrite() {
-    $this->assertEquals([23, 55, 57],
-                        $this->_getArticlesId(['event_date' => '2011-09-03']));
-  }
-
-
-  /** @test */
-  public function onSundayShouldGetFetePoireBananeFrite() {
-    $this->assertEquals([18, 55, 57],
-                        $this->_getArticlesId(['event_date' => '2011-09-04']));
-  }
-
-
-  /** @test */
-  public function withMonthShouldGetAllArticles() {
-    $this->assertEquals([23, 18, 55, 57],
-                        $this->_getArticlesId(['event_date' => '2011-09']));
-  }
 }
diff --git a/tests/library/Class/ArticleTest.php b/tests/library/Class/ArticleTest.php
index c21326f38635fca5dd0bf40e31ab6465035cb4a3..7ef76fc0fbda6320282808fb2d642f6e726cbd7a 100644
--- a/tests/library/Class/ArticleTest.php
+++ b/tests/library/Class/ArticleTest.php
@@ -20,7 +20,10 @@
  */
 
 class ArticleWithTraductionsTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->concert = Class_Article::getLoader()
       ->newInstanceWithId(4)
       ->setTitre('Erik Truffaz en concert')
@@ -38,7 +41,6 @@ class ArticleWithTraductionsTest extends ModelTestCase {
       ->setContenu('at Bonlieu')
       ->setLangue('en');
 
-
     $this->concert_roumain = Class_Article::getLoader()
       ->newInstanceWithId(42)
       ->setParentId(4)
@@ -47,7 +49,6 @@ class ArticleWithTraductionsTest extends ModelTestCase {
       ->setContenu('la Bonlieu')
       ->setLangue('ro');
 
-
     $art_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article');
 
     $art_wrapper
@@ -87,7 +88,6 @@ class ArticleWithTraductionsTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   function withWorkflowStatusConcertAnglaisShouldBeSameAsParent() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur(1);
@@ -199,7 +199,6 @@ class ArticleWithTraductionsTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   function concertGetTraductionLangueFRShouldReturnItself() {
     $this->assertEquals($this->concert, $this->concert->getTraductionLangue('fr'));
@@ -269,7 +268,6 @@ class ArticleWithTraductionsTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   function withNullTitreShouldNotBeValid() {
     $this->assertContains("Vous devez compléter le champ 'Titre'",
@@ -341,6 +339,7 @@ class ArticleWithTraductionsTest extends ModelTestCase {
                           $this->concert->setEventsDebut('32/18/2010')->validate()->getErrors());
   }
 
+
   /** @test */
   function withEventFinInvalidShouldNotBeValid() {
     $this->assertContains("La date de 'Fin évènement' n'est pas valide",
@@ -369,28 +368,33 @@ class ArticleWithTraductionsTest extends ModelTestCase {
 
 
 class ArticleTestSmallArticle extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('0');
     $this->_article = ArticleTestFixtures::smallArticle();
     $this->_article->setAuteur(Class_Users::newInstanceWithId(1, ['login' =>  'tom']));
   }
 
+
   /** @test */
   public function summaryShouldBeContenu() {
     $this->assertEquals($this->_article->getContenu(),
                         $this->_article->getSummary());
   }
 
+
   /** @test */
   public function fullContentShouldBeContenu() {
     $this->assertEquals($this->_article->getContenu(),
                         $this->_article->getFullContentWithCookiesConsent());
   }
 
+
   /** @test */
   public function hasSummaryShouldReturnFalse(){
     $this->assertFalse($this->_article->hasSummary());
@@ -416,6 +420,7 @@ class ArticleTestSmallArticle extends ModelTestCase {
 
 
 class ArticleTestSummaryAndFullContentForArticleWithEndTag extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
@@ -424,18 +429,21 @@ class ArticleTestSummaryAndFullContentForArticleWithEndTag extends ModelTestCase
     $this->_article = ArticleTestFixtures::endtagArticle();
   }
 
+
   /** @test */
   public function summaryShouldBeContenuBeforeEndTag() {
     $this->assertEquals('à Boussy',
                         $this->_article->getSummary());
   }
 
+
   /** @test */
   public function fullContentShouldBeContenu(){
     $this->assertEquals('à Boussy  venez nombreux!',
                         $this->_article->getFullContent());
   }
 
+
   /** @test */
   public function hasSummaryShouldReturnTrue(){
     $this->assertTrue($this->_article->hasSummary());
@@ -445,12 +453,15 @@ class ArticleTestSummaryAndFullContentForArticleWithEndTag extends ModelTestCase
 
 
 
-class ArticleTestSummaryAndFullContentForArticleWithDescription extends ModelTestCase {
+class ArticleTestSummaryAndFullContentForArticleWithDescription
+  extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = $this->fixture('Class_Article',
                                      ['id' => 3,
                                       'titre' => 'Fête de la pomme',
@@ -463,6 +474,7 @@ class ArticleTestSummaryAndFullContentForArticleWithDescription extends ModelTes
                                       'date_maj' => '2012-12-15']);
   }
 
+
   /** @test */
   public function summaryShouldBeDescription() {
     $this->assertEquals('à Boussy<iframe src="http://mylinkonotherwebsite"></iframe>',
@@ -495,6 +507,7 @@ class ArticleTestSummaryAndFullContentForArticleWithDescription extends ModelTes
                         $this->_article->getFullContent());
   }
 
+
   /** @test */
   public function hasSummaryShouldReturnTrue(){
     $this->assertTrue($this->_article->hasSummary());
@@ -511,12 +524,15 @@ class ArticleTestSummaryAndFullContentForArticleWithDescription extends ModelTes
 
 
 
-class ArticleTestSummaryAndFullContentForArticleWithEmptyDescription extends ModelTestCase {
+class ArticleTestSummaryAndFullContentForArticleWithEmptyDescription
+  extends ModelTestCase {
+
   /** @var Class_Article  */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = $this->fixture('Class_Article',
                                      ['id' => 0,
                                       'titre' => 'Fête de la pomme',
@@ -528,18 +544,21 @@ class ArticleTestSummaryAndFullContentForArticleWithEmptyDescription extends Mod
                                       'events_fin' => '20/12/2010']);
   }
 
+
   /** @test */
   public function summaryShouldBeContenu() {
     $this->assertEquals('venez nombreux!',
                         $this->_article->getSummary());
   }
 
+
   /** @test */
   public function fullContentShouldBeContenu() {
     $this->assertEquals('venez nombreux!',
                         $this->_article->getFullContent());
   }
 
+
   /** @test */
   public function hasSummaryShouldReturnFalse(){
     $this->assertFalse($this->_article->hasSummary());
@@ -548,21 +567,26 @@ class ArticleTestSummaryAndFullContentForArticleWithEmptyDescription extends Mod
 
 
 
+
 class ArticleTestEmptyDates extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::emptyDatesArticle();
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertTrue($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedIsVisibleShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -570,6 +594,7 @@ class ArticleTestEmptyDates extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedIsVisibleShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -582,20 +607,24 @@ class ArticleTestEmptyDates extends ModelTestCase {
 
 
 class ArticleTestFutureStartDate extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::futureStartDateArticle();
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -603,6 +632,7 @@ class ArticleTestFutureStartDate extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -613,12 +643,15 @@ class ArticleTestFutureStartDate extends ModelTestCase {
 
 
 
+
 class ArticleTestPastStartDate extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::pastStartDateArticle();
   }
 
@@ -628,6 +661,7 @@ class ArticleTestPastStartDate extends ModelTestCase {
     $this->assertTrue($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -635,39 +669,44 @@ class ArticleTestPastStartDate extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
     $this->_article->beValidated();
     $this->assertTrue($this->_article->isVisible());
   }
-
 }
 
 
 
 
 class ArticleTestFutureEndDate extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::futureEndDateArticle();
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertTrue($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withoutWorkflowStatusShouldBeValidated() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertEquals(3, $this->_article->getStatus());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -675,6 +714,7 @@ class ArticleTestFutureEndDate extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -687,25 +727,30 @@ class ArticleTestFutureEndDate extends ModelTestCase {
 
 
 class ArticleTestPastEndDate extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::pastEndDateArticle();
   }
 
+
   /** @test */
   public function isVisibleShouldReturnFalse() {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -713,6 +758,7 @@ class ArticleTestPastEndDate extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -725,6 +771,7 @@ class ArticleTestPastEndDate extends ModelTestCase {
 
 
 class ArticleTestAllPastDates extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
@@ -733,17 +780,20 @@ class ArticleTestAllPastDates extends ModelTestCase {
     $this->_article = ArticleTestFixtures::allPastDatesArticle();
   }
 
+
   /** @test */
   public function isVisibleShouldReturnFalse() {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -751,6 +801,7 @@ class ArticleTestAllPastDates extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -763,25 +814,30 @@ class ArticleTestAllPastDates extends ModelTestCase {
 
 
 class ArticleTestAllFutureDates extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::allFutureDatesArticle();
   }
 
+
   /** @test */
   public function isVisibleShouldReturnFalse() {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -789,6 +845,7 @@ class ArticleTestAllFutureDates extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -801,20 +858,24 @@ class ArticleTestAllFutureDates extends ModelTestCase {
 
 
 class ArticleTestDatesIncludesNow extends ModelTestCase {
+
   /** @var Class_Article */
   protected $_article;
 
   protected function setUp() {
     parent::setUp();
+
     $this->_article = ArticleTestFixtures::datesIncludesNowArticle();
   }
 
+
   /** @test */
   public function withoutWorkflowIsVisibleShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('');
     $this->assertTrue($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusNonValidatedShouldReturnFalse() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -822,6 +883,7 @@ class ArticleTestDatesIncludesNow extends ModelTestCase {
     $this->assertFalse($this->_article->isVisible());
   }
 
+
   /** @test */
   public function withWorkflowAndStatusValidatedShouldReturnTrue() {
     Class_AdminVar::getLoader()->newInstanceWithId('WORKFLOW')->setValeur('1');
@@ -834,6 +896,7 @@ class ArticleTestDatesIncludesNow extends ModelTestCase {
 
 
 class ArticleTestFixtures {
+
   /**
    * @return Class_Article
    */
@@ -850,6 +913,7 @@ class ArticleTestFixtures {
                                      ->setFin($end->format(DateTime::ISO8601));
   }
 
+
   /**
    * @return Class_Article
    */
@@ -865,6 +929,7 @@ class ArticleTestFixtures {
                                      ->setFin($end->format(DateTime::ISO8601));
   }
 
+
   /**
    * @return Class_Article
    */
@@ -880,6 +945,7 @@ class ArticleTestFixtures {
                                      ->setFin($end->format(DateTime::ISO8601));
   }
 
+
   /**
    * @return Class_Article
    */
@@ -894,6 +960,7 @@ class ArticleTestFixtures {
                                      ->setFin($date->format(DateTime::ISO8601));
   }
 
+
   /**
    * @return Class_Article
    */
@@ -921,6 +988,7 @@ class ArticleTestFixtures {
                                      ->setFin('');
   }
 
+
   /**
    * @return Class_Article
    */
@@ -933,6 +1001,7 @@ class ArticleTestFixtures {
                                      ->setFin('');
   }
 
+
   /**
    * @return Class_Article
    */
@@ -942,6 +1011,7 @@ class ArticleTestFixtures {
                                      ->setFin('');
   }
 
+
   /**
    * @return Class_Article
    */
@@ -958,6 +1028,7 @@ class ArticleTestFixtures {
                                                         ));
   }
 
+
   /**
    * @return Class_Article
    */
@@ -978,6 +1049,7 @@ class ArticleTestFixtures {
 
 
 class EventsByMonthNoArticlesTest extends ModelTestCase {
+
   public function setup() {
     parent::setup();
 
@@ -990,6 +1062,7 @@ class EventsByMonthNoArticlesTest extends ModelTestCase {
 
   }
 
+
   /** @test **/
   public function fevrierShouldNotContainsEvents() {
     $this->assertFalse(Class_Article::hasEventForMonth(2));
@@ -1000,10 +1073,12 @@ class EventsByMonthNoArticlesTest extends ModelTestCase {
 
 
 abstract class EventsByMonthWithArticleTestCase extends ModelTestCase {
+
   protected $concert;
 
   public function setup() {
     parent::setup();
+
     $this->concert = $this->fixture('Class_Article', ['id' => 4,
                                                       'titre' => 'Erik Truffaz en concert',
                                                       'description' => 'Venez nombreux',
@@ -1044,19 +1119,22 @@ abstract class EventsByMonthWithArticleTestCase extends ModelTestCase {
 
 
 class EventsByMonthWithArticleSameYearTest extends EventsByMonthWithArticleTestCase {
+
   public function setup() {
     parent::setup();
+
     Class_Article::setTimeSource(new TimeSourceForTest('2013-01-19 09:00:00'));
   }
-
 }
 
 
 
 
 class EventsByMonthWithArticleNextYearTest extends EventsByMonthWithArticleTestCase {
+
   public function setup() {
     parent::setup();
+
     Class_Article::setTimeSource(new TimeSourceForTest('2012-05-19 09:00:00'));
   }
 }
@@ -1065,7 +1143,6 @@ class EventsByMonthWithArticleNextYearTest extends EventsByMonthWithArticleTestC
 
 
 class ArticleIndexAllTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -1205,10 +1282,10 @@ class ArticleIndexAllTest extends ModelTestCase {
 
 
 
+
 class ArticleUnindexTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_first, $_second;
+
+  protected $_first, $_second;
 
   public function setUp() {
     parent::setUp();
@@ -1257,6 +1334,7 @@ class ArticleUnindexTest extends ModelTestCase {
     $this->assertNull(Class_NoticeDomain::findFirstBy(['domain_id' => 2]));
   }
 
+
   /** @test */
   public function recordShouldNotHaveDomainFacet() {
     $this->assertNotContains('H2', Class_Notice::find(1)->getFacettes());
@@ -1265,7 +1343,9 @@ class ArticleUnindexTest extends ModelTestCase {
 
 
 
+
 class ArticleFirstImagePathTest extends ModelTestCase {
+
   protected $_article;
 
   public function setUp() {
diff --git a/tests/library/Class/AvisNoticeTest.php b/tests/library/Class/AvisNoticeTest.php
index 643ca34612e520bf88c770f31ca8b56f63c5a4f3..2efdb72625ed217227d88a16f73af3bf82f74139 100644
--- a/tests/library/Class/AvisNoticeTest.php
+++ b/tests/library/Class/AvisNoticeTest.php
@@ -23,7 +23,10 @@ require_once 'ModelTestCase.php';
 
 
 class AvisTestBibAbonne extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->avis_bib1 = new Class_AvisNotice();
     $this->avis_bib1->setAbonOuBib(1)->setNote(4);
 
@@ -42,26 +45,31 @@ class AvisTestBibAbonne extends ModelTestCase {
                             $this->avis_abon2);
   }
 
+
   public function testIsWrittenByBibliothecaire() {
     $this->assertTrue($this->avis_bib1->isWrittenByBibliothecaire());
     $this->assertFalse($this->avis_abon1->isWrittenByBibliothecaire());
   }
 
+
   public function testIsWrittenByAbonne() {
     $this->assertFalse($this->avis_bib1->isWrittenByAbonne());
     $this->assertTrue($this->avis_abon1->isWrittenByAbonne());
   }
 
+
   public function testFilterByAbonne() {
     $this->assertEquals(array($this->avis_abon1, $this->avis_abon2),
                         Class_AvisNotice::filterByAbonne($this->all_avis));
   }
 
+
   public function testFilterByBibliothecaire() {
     $this->assertEquals(array($this->avis_bib1, $this->avis_bib2),
                         Class_AvisNotice::filterByBibliothecaire($this->all_avis));
   }
 
+
   public function testGetNoteAverage() {
     $this->assertEquals(0, Class_AvisNotice::getNoteAverage(null));
     $this->assertEquals(0, Class_AvisNotice::getNoteAverage(array()));
@@ -77,12 +85,12 @@ class AvisTestBibAbonne extends ModelTestCase {
 
 
 
-abstract class AvisNoticeWithFixturesTestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
+abstract class AvisNoticeWithFixturesTestCase extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture(Class_AvisNotice::class,
                    ['id' => 23,
                     'id_user' => 2,
@@ -123,28 +131,35 @@ abstract class AvisNoticeWithFixturesTestCase extends ModelTestCase {
 
 
 
+
 class AvisTestSortByDateAvisDesc extends AvisNoticeWithFixturesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->avis = Class_AvisNotice::getLoader()->findAll();
     $this->avis_sorted = Class_AvisNotice::sortByDateAvisDesc($this->avis);
   }
 
+
   public function testFirstIsSteveOnPotter() {
     $avis = $this->avis_sorted[0];
     $this->assertEquals(48, $avis->getId());
   }
 
+
   public function testSecondIsMarcusOnMillenium() {
     $avis = $this->avis_sorted[1];
     $this->assertEquals(23, $avis->getId());
   }
 
+
   public function testThirdIsMarcusOnPotter() {
     $avis = $this->avis_sorted[2];
     $this->assertEquals(25, $avis->getId());
   }
 
+
   public function testLastIsSteveOnMillenium() {
     $avis = $this->avis_sorted[3];
     $this->assertEquals(12, $avis->getId());
@@ -152,7 +167,10 @@ class AvisTestSortByDateAvisDesc extends AvisNoticeWithFixturesTestCase {
 }
 
 
+
+
 class AvisNoticeTestLoader extends ModelTestCase {
+
   public function testLoaderIsInstanceOfAvisNoticeLoader() {
     $loader = Class_AvisNotice::getLoader();
     $this->assertTrue($loader instanceof AvisNoticeLoader);
@@ -163,26 +181,32 @@ class AvisNoticeTestLoader extends ModelTestCase {
 
 
 class AvisNoticeTestFindAll extends AvisNoticeWithFixturesTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->avis = Class_AvisNotice::getLoader()->findAll();
   }
 
+
   public function testFirstIsMarcusOnMillenium() {
     $first = $this->avis[0];
     $this->assertEquals('excellent', $first->getEntete());
   }
 
+
   public function testNoteMarcusOnMilleniumIsFour() {
     $first = $this->avis[0];
     $this->assertEquals(4, $first->getNote());
   }
 
+
   public function testLastIsSteveOnPotter() {
     $last = $this->avis[3];
     $this->assertEquals('Vive potter', $last->getEntete());
   }
 
+
   public function testSteveOnMilleniumNoteIsZero() {
     $steve_millenium = $this->avis[2];
     $this->assertEquals(12, $steve_millenium->getId());
@@ -194,7 +218,6 @@ class AvisNoticeTestFindAll extends AvisNoticeWithFixturesTestCase {
 
 
 class AvisNoticeTestBelongsToUserRelation extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -262,7 +285,10 @@ class AvisNoticeTestBelongsToUserRelation extends ModelTestCase {
 
 
 class NoticeTestHasManyAvisTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->millenium = $this->fixture('Class_Notice', ['id' => 34,
                                                        'clef_oeuvre' => 'MILLENIUM--LARSSON']);
 
@@ -285,7 +311,6 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
 
 
     $this->notice_loader = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Notice');
-
   }
 
 
@@ -297,8 +322,6 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
   }
 
 
-
-
   /** @test */
   public function milleniumAvisFirstNoticesShouldNoticeMillenium() {
     $this->assertEquals($this->millenium,
@@ -306,7 +329,6 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function noticeMilleniumGetAvisShouldReturnAllAvisOnClefOeuvre() {
     $found_avis = $this->millenium->getAvis();
@@ -316,7 +338,6 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function avisMilleniumSteveGetNoticesShouldReturnNoticeMillenium() {
     $notices_found = $this->avis_millenium_steve->findNoticesByClefOeuvre();
@@ -342,6 +363,7 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
     return $this->avis_millenium_lost_bryan;
   }
 
+
   /**
    * @test
    * @depends lostAvisMilleniumGetNoticesShouldSearchNoticeOnTitleClefOeuvre
@@ -351,7 +373,6 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
   }
 
 
-
   /**
    * @test
    * @depends lostAvisMilleniumGetNoticesShouldSearchNoticeOnTitleClefOeuvre
@@ -367,17 +388,16 @@ class NoticeTestHasManyAvisTest extends ModelTestCase {
   public function clefoeuvreShouldNotChanged($saved_avis) {
     $this->assertEquals('MILLENIUM--SLARSSON', $saved_avis->getClefOeuvre());
   }
-
 }
 
 
 
 
 class AvisValidationsTest  extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('AVIS_MIN_SAISIE', 10);
     Class_AdminVar::set('AVIS_MAX_SAISIE', 1200);
 
@@ -385,6 +405,7 @@ class AvisValidationsTest  extends ModelTestCase {
     $this->avis->setEntete('a title');
   }
 
+
   public function testValidWithRightAvisSize() {
     $this->avis->setAvis('more than 10 characters');
 
@@ -392,6 +413,7 @@ class AvisValidationsTest  extends ModelTestCase {
     $this->assertTrue($this->avis->save());
   }
 
+
   public function testInvalidWithWrongAvisSize() {
     $this->avis->setAvis('0');
 
@@ -404,7 +426,6 @@ class AvisValidationsTest  extends ModelTestCase {
 
 
 class AvisSetAbonOuBibTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -440,12 +461,14 @@ class AvisSetAbonOuBibTest extends ModelTestCase {
     $this->assertEquals(1, $this->avis->getAbonOuBib());
   }
 
+
   public function testSaveWithFlorenceSetAbonOuBibToZero() {
     $this->avis->setUser($this->marcel);
     $this->avis->save();
     $this->assertEquals(0, $this->avis->getAbonOuBib());
   }
 
+
   public function testSaveWithNoUserSetAbonOuBibToZero() {
     $this->avis->setUser(null);
     $this->avis->save();
@@ -456,9 +479,11 @@ class AvisSetAbonOuBibTest extends ModelTestCase {
 
 
 
-
 class AvisVisibilityTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->user_reader = new Class_Users();
     $this->user_reader->setRoleLevel(1)->setId(2);
 
@@ -518,6 +543,7 @@ class AvisVisibilityTest extends ModelTestCase {
     $this->assertTrue($avis->isVisibleForUser($user));
   }
 
+
   protected function assertNotVisible($avis, $user) {
     $this->assertFalse($avis->isVisibleForUser($user));
   }
@@ -540,6 +566,7 @@ class AvisVisibilityTest extends ModelTestCase {
     $this->assertVisible($this->avis_biblio_invalid, $this->user_bib_other);
   }
 
+
   public function testWithModoReaderAPosteriori() {
     $this->modo_avis->setValeur(1);
     $this->assertVisible($this->avis_reader_valid, $this->user_reader);
@@ -558,6 +585,7 @@ class AvisVisibilityTest extends ModelTestCase {
     $this->assertVisible($this->avis_biblio_invalid, $this->user_reader);
   }
 
+
   public function testWithModoBibrAPosteriori() {
     $this->modo_avis_biblio->setValeur(1);
     $this->assertVisible($this->avis_reader_valid, $this->user_reader);
@@ -578,9 +606,13 @@ class AvisVisibilityTest extends ModelTestCase {
 }
 
 
+
+
 class AvisNoticeAvisFromPreferencesTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_Users::beVolatile();
     Class_AdminVar::newInstanceWithId('MODO_AVIS', ['valeur' => 1]);
     Class_AdminVar::newInstanceWithId('MODO_AVIS_BIBLIO', ['valeur' => 1]);
@@ -734,7 +766,6 @@ class AvisNoticeAvisFromPreferencesTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function withAPosterioriBibModerationAllAvisShouldReturnModeratedRatingFromAbon() {
     Class_AdminVar::newInstanceWithId('MODO_AVIS', ['valeur' => 1]);
@@ -755,7 +786,6 @@ class AvisNoticeAvisFromPreferencesTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function withNoFoundRecordShouldNotReturnAnyAvis() {
     Class_AdminVar::newInstanceWithId('MODO_AVIS', ['valeur' => 0]);
@@ -782,7 +812,9 @@ class AvisNoticeAvisFromPreferencesTest extends ModelTestCase {
 
 
 
+
 class AvisNoticeWithSameArtworkKeyTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
 
diff --git a/tests/library/Class/BibTest.php b/tests/library/Class/BibTest.php
index 45765a3194c0318f0917d53c249236045b4c2571..ed65665517a72df0d3d595ae7008c243eb36515e 100644
--- a/tests/library/Class/BibTest.php
+++ b/tests/library/Class/BibTest.php
@@ -20,12 +20,14 @@
  */
 
 class BibTest extends ModelTestCase {
+
   /** @test */
   function loaderFindAllWithPortailShouldIncludePortail() {
     $this->assertEquals(0,
                         array_first(Class_Bib::getLoader()->findAllWithPortail())->getId());
   }
 
+
   /** @test */
   function loaderFindAllByWithPortailShouldIncludePortail() {
     $this->assertEquals(0,
@@ -50,18 +52,17 @@ class BibTest extends ModelTestCase {
 
     $this->assertEquals('ALL', Class_Bib::findAllByIdZone('ALL'));
     $this->assertEquals('ZONE', Class_Bib::findAllByIdZone(3));
-
   }
 
 
   /** @test */
   public function withAffZoneContainingIdProfilGetUrlShouldAnswerProfilRewriteUrl() {
-    $this->fixture('Class_Profil',
-                   ['id' => 23,
-                    'libelle' => 'Annecy',
-                    'rewrite_url' => 'annecy']);
+    Class_Profil::setCurrentProfil($this->fixture(Class_Profil::class,
+                                                  ['id' => 23,
+                                                   'libelle' => 'Annecy',
+                                                   'rewrite_url' => 'annecy']));
 
-    $bib = $this->fixture('Class_Bib',
+    $bib = $this->fixture(Class_Bib::class,
                           ['id' => 2,
                            'aff_zone' => serialize(['profilID' => 23,
                                                     'libelle' => 'Annecy'])]);
@@ -72,7 +73,12 @@ class BibTest extends ModelTestCase {
 
   /** @test */
   public function withEmptyAffZoneContainingIdProfilGetUrlShouldAnswerBibViewId2() {
-    $bib = $this->fixture('Class_Bib',
+    Class_Profil::setCurrentProfil($this->fixture(Class_Profil::class,
+                                                  ['id' => 23,
+                                                   'libelle' => 'Annecy',
+                                                   'rewrite_url' => 'annecy']));
+
+    $bib = $this->fixture(Class_Bib::class,
                           ['id' => 2]);
 
     $this->assertContains('/bib/bibview/id/2', $bib->getUrl());
@@ -87,15 +93,12 @@ class BibTest extends ModelTestCase {
                            'rewrite_url' => 'annecy']);
     $this->assertContains('/annecy', $bib->getUrl());
   }
-
 }
 
 
 
 
 class BibFindAllWithPortailTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
@@ -113,4 +116,4 @@ class BibFindAllWithPortailTest extends ModelTestCase {
   public function bibBBBShouldBeLast() {
     $this->assertEquals(1, Class_Bib::findAllWithPortail()[2]->getId());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/CatalogueTest.php b/tests/library/Class/CatalogueTest.php
index 9a14f2149d6f16b68723c58f1290a57d21bacbc6..6709b645ffa21a86199ed7cf9723afdb37857252 100644
--- a/tests/library/Class/CatalogueTest.php
+++ b/tests/library/Class/CatalogueTest.php
@@ -21,10 +21,10 @@
 
 class CatalogueGetRequetesPanierWithIdUserAndIdPanierTest extends ModelTestCase {
 
-  protected $requetes,
+  protected
+    $requetes,
     $_requests_with_basket_order;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -80,7 +80,11 @@ class CatalogueGetRequetesPanierWithIdUserAndIdPanierTest extends ModelTestCase
 }
 
 
-class CatalogueGetRequetesPanierWithIdUserAndIdPanierUsedForIdTest extends ModelTestCase {
+
+
+class CatalogueGetRequetesPanierWithIdUserAndIdPanierUsedForIdTest
+  extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -111,9 +115,8 @@ class CatalogueGetRequetesPanierWithIdUserAndIdPanierUsedForIdTest extends Model
 
 
 
-class CatalogueNoIndexTest extends ModelTestCase {
-  protected $_storm_default_to_volatile =true;
 
+class CatalogueNoIndexTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -135,11 +138,15 @@ class CatalogueNoIndexTest extends ModelTestCase {
 
 
 
+
 class CatalogueOrderByForCatalogueRequestByPreferencesTest extends ModelTestCase {
+
   protected $_catalogue;
   protected $_preferences;
+
   public function setUp() {
     parent::setUp();
+
     $this->_catalogue = new Class_Catalogue();
     $this->_preferences = ['id_catalogue' => 666,
                            'aleatoire' => 1,
@@ -148,12 +155,14 @@ class CatalogueOrderByForCatalogueRequestByPreferencesTest extends ModelTestCase
                            'tri' => 0];
   }
 
+
   /** @test */
   public function withPreferenceTriZeroShouldReturnOrderByAlphaTitre() {
     $order = Class_Catalogue::orderByForCatalogueRequestByPreferences($this->_preferences);
     $this->assertEquals(' order by alpha_titre ' , $order);
   }
 
+
   /** @test */
   public function withPreferenceTriZeroStringShouldReturnOrderByAlphaTitre() {
     $this->_preferences['tri']='0';
@@ -169,6 +178,7 @@ class CatalogueOrderByForCatalogueRequestByPreferencesTest extends ModelTestCase
     $this->assertEquals(' order by date_creation DESC ' , $order);
   }
 
+
   /** @test */
   public function withPreferenceTriUnStringShouldReturnOrderByDateCreation() {
     $this->_preferences['tri']='1';
@@ -221,10 +231,12 @@ class CatalogueOrderByForCatalogueRequestByPreferencesTest extends ModelTestCase
 
 
 class CatalogueGetSelectionFacetteTest extends ModelTestCase {
+
   protected $_catalogue;
 
   public function setUp() {
     parent::setUp();
+
     $this->_catalogue = new Class_Catalogue();
   }
 
@@ -285,12 +297,15 @@ class CatalogueGetSelectionFacetteTest extends ModelTestCase {
 
 
 
+
 class CatalogueGetPagedNoticesTest extends ModelTestCase {
+
   protected $_catalogue;
   protected $_noticeWrapper;
 
   public function setUp() {
     parent::setUp();
+
     $this->_catalogue = Class_Catalogue::newInstanceWithId(3);
     $this->_noticeWrapper = $this->onLoaderOfModel('Class_Notice');
   }
@@ -473,10 +488,12 @@ class CatalogueGetPagedNoticesTest extends ModelTestCase {
 
 
 class CatalogueGetRequetesWithFacettesAndNoCatalogueTest extends ModelTestCase {
+
   protected $_catalogue;
 
   public function setUp() {
     parent::setUp();
+
     $this->_requetes = Class_Catalogue::getLoader()
       ->getRequetes(['id_catalogue' => 0,
                      'facettes' => 'T1, Y1']);
@@ -503,11 +520,14 @@ class CatalogueGetRequetesWithFacettesAndNoCatalogueTest extends ModelTestCase {
 
 
 
+
 class CatalogueOAISpecTest extends ModelTestCase {
+
   protected $_catalogue;
 
   public function setUp() {
     parent::setUp();
+
     $this->_catalogue = Class_Catalogue::newInstanceWithId(3)->setLibelle('zork');
   }
 
@@ -543,6 +563,7 @@ class CatalogueOAISpecTest extends ModelTestCase {
 
 
 class CatalogueGetNoticesByPreferencesNotRandomTest extends ModelTestCase {
+
   protected $_cache_key = 'fixed_seed_ddc31b220940c90625375ed2f381bc8c';
 
   public function setUp() {
@@ -655,12 +676,12 @@ class CatalogueGetNoticesByPreferencesNotRandomTest extends ModelTestCase {
 
 
 
+
 class CatalogueParentTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->_histoire = Class_Catalogue::newInstanceWithId(100, [ 'libelle' => 'Histoire',
                                                                 'parent_id' => 0]);
     $this->_jeux = Class_Catalogue::newInstanceWithId(600, [ 'libelle' => 'Jeux>',
@@ -744,7 +765,10 @@ class CatalogueParentTest extends ModelTestCase {
 }
 
 
+
+
 class CatalogueBuildCriteresRechercheTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -829,11 +853,13 @@ class CatalogueBuildCriteresRechercheTest extends ModelTestCase {
 
 
 class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
+
   protected $_old_sql;
   protected $_thesaurus;
 
   public function setUp() {
     parent::setUp();
+
     $this->_old_sql = Zend_Registry::get('sql');
     $this->mock_sql = Storm_Test_ObjectWrapper::mock();
     Zend_Registry::set('sql', $this->mock_sql);
@@ -855,6 +881,7 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
       ->answers(2);
   }
 
+
   public function tearDown() {
     Zend_Registry::set('sql', $this->_old_sql);
     parent::tearDown();
@@ -873,7 +900,6 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   }
 
 
-
   /** @test */
   public function deleteCatalogueHistoireShouldDeleteThesaurus() {
     $thesaurus = $this->fixture('Class_CodifThesaurus',
@@ -896,7 +922,7 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   public function saveCataloguePolitiqueShouldCreateThesaurus() {
     Class_CodifThesaurus::getLoader()
       ->whenCalled('findNextThesaurusChildId')
-      ->with('YYYY0001')
+      ->with('Catalogue', 'YYYY0001')
       ->answers('YYYY00010001')
 
       ->whenCalled('findThesaurusForCatalogue')
@@ -915,7 +941,7 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   public function saveCatalogueMoyenAgeShouldCreateThesaurus() {
     Class_CodifThesaurus::getLoader()
       ->whenCalled('findNextThesaurusChildId')
-      ->with('YYYY0001')
+      ->with('Catalogue', 'YYYY0001')
       ->answers('YYYY00010001')
 
       ->whenCalled('findThesaurusForCatalogue')
@@ -930,9 +956,21 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   public function saveCatalogueAndMoveDomaineShouldCreateThesaurus() {
     Class_CodifThesaurus::getLoader()
       ->whenCalled('findNextThesaurusChildId')
-      ->with('YYYY0001')
+      ->with('Catalogue', 'YYYY0001')
       ->answers('YYYY00010001')
 
+      ->whenCalled('findNextThesaurusChildId')
+      ->with('Catalogue', 'YYYY00010001')
+      ->answers('YYYY000100010001')
+
+      ->whenCalled('findNextThesaurusChildId')
+      ->with('Catalogue', 'YYYYHIST')
+      ->answers('YYYYHIST0003')
+
+      ->whenCalled('findNextThesaurusChildId')
+      ->with('Catalogue', 'YYYYHIST0003')
+      ->answers('YYYYHIST00030001')
+
       ->whenCalled('findThesaurusForCatalogue')
       ->answers(null);
     $this->_politique->setParentId($this->_moyenage->getId());
@@ -946,8 +984,12 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   public function saveCatalogueAndMoveDomaineShouldCreateThesaurusExisting() {
     Class_CodifThesaurus::getLoader()
       ->whenCalled('findNextThesaurusChildId')
-      ->with('YYYYHIST')
-      ->answers('YYYYHIST003')
+      ->with('Catalogue', 'YYYYHIST')
+      ->answers('YYYYHIST0003')
+
+      ->whenCalled('findNextThesaurusChildId')
+      ->with('Catalogue', 'YYYYHIST0003')
+      ->answers('YYYYHIST00030001')
 
       ->whenCalled('deleteAllWithIdOrigineAndCode')
       ->answers(null)
@@ -971,7 +1013,7 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
   public function saveCatalogueAndMoveDomaineWithNonExistingThesarusShouldCreateThesaurus() {
     Class_CodifThesaurus::getLoader()
       ->whenCalled('findNextThesaurusChildId')
-      ->with('catalogue','YYYY0001')
+      ->with('Catalogue', 'YYYY0001')
       ->answers('YYYY00010005')
 
       ->whenCalled('deleteAllWithIdOrigineAndCode')
@@ -1027,12 +1069,12 @@ class CatalogueThesaurusCRUDTest extends CatalogueParentTest {
 
 
 class CatalogueGetAllNoticesIdsForDomaineTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_catalogue;
+
+  protected $_catalogue;
 
   public function setUp() {
     parent::setUp();
+
     $this->_catalogue = $this->fixture('Class_Catalogue',
                                        ['id' => 3,
                                         'libelle' => 'Livres',
@@ -1071,11 +1113,12 @@ class CatalogueGetAllNoticesIdsForDomaineTest extends ModelTestCase {
 
 
 
+
 class CatalogueGetRequetesWithCatalogueTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Catalogue',
                    ['id' => 5,
                     'libelle' => 'My catalogue']);
@@ -1092,10 +1135,10 @@ class CatalogueGetRequetesWithCatalogueTest extends ModelTestCase {
 
 
 class CatalogueGetRequetesWithEmptyCustomFormValuesTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('CUSTOM_DOMAIN_FORM', 1);
     Class_AdminVar::set('CUSTOM_SEARCH_FORM', 1);
 
@@ -1123,11 +1166,12 @@ class CatalogueGetRequetesWithEmptyCustomFormValuesTest extends ModelTestCase {
 
 
 class CatalogueGetAllNoticeIdsForDomaineTest extends ModelTestCase {
-  protected $_catalogue;
 
+  protected $_catalogue;
 
   public function setUp() {
     parent::setUp();
+
     $catalogue = $this->fixture('Class_Catalogue',
                                 ['id' => 5,
                                  'libelle' => 'My catalogue']);
@@ -1153,9 +1197,8 @@ class CatalogueGetAllNoticeIdsForDomaineTest extends ModelTestCase {
 
 
 class CatalogueWithNoveltyTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_domain_request;
+
+  protected $_domain_request;
 
   public function setUp() {
     parent::setUp();
@@ -1207,8 +1250,10 @@ class CatalogueWithNoveltyTest extends ModelTestCase {
 
 
 
+
 /** @see #72286 */
 class CatalogueFetchAllNoticeByPrefWithRandomTest extends ModelTestCase {
+
   /** @test */
   public function withRandomShouldUseNbAnalyseAsLimit() {
     $this->fixture('Class_Catalogue',
@@ -1234,6 +1279,7 @@ class CatalogueFetchAllNoticeByPrefWithRandomTest extends ModelTestCase {
 
 
 
+
 /** @see #128828 **/
 class CatalogueEmptyFacetTestCase extends ModelTestCase {
 
@@ -1269,15 +1315,15 @@ class CatalogueEmptyFacetTestCase extends ModelTestCase {
 
 
 
+
 /** @see #153857 **/
 class CatalogueGetRequetesWith0NbNoticesTest extends ModelTestCase {
 
-
   protected $_requestes;
 
-
   public function setUp() {
     parent::setUp();
+
     $this->_requetes = Class_Catalogue::getLoader()
       ->getRequetes(['id_catalogue' => 0,
                      'nb_notices' => 0,
diff --git a/tests/library/Class/CommSigbTest.php b/tests/library/Class/CommSigbTest.php
index 36fa41e97b77bb77f4a7379ecb628272e2e332fb..bb373a46d5b9f915c35700670da22ef6f96ca7ef 100644
--- a/tests/library/Class/CommSigbTest.php
+++ b/tests/library/Class/CommSigbTest.php
@@ -20,11 +20,14 @@
  */
 
 abstract class CommSigbTestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
 
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     Class_CommSigb::setInstance(null);
     $this->comm_sigb = new Class_CommSigb;
 
@@ -273,7 +276,9 @@ abstract class CommSigbTestCase extends ModelTestCase {
 
 
 
+
 class CommSigbAstrolabeOpsysTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -303,7 +308,6 @@ class CommSigbAstrolabeOpsysTest extends CommSigbTestCase {
 
 class CommSigbMoulinsVSmartTest extends CommSigbTestCase {
 
-
   public function setUp() {
     parent::setUp();
 
@@ -461,6 +465,7 @@ class CommSigbMoulinsVSmartTest extends CommSigbTestCase {
 
 
 class CommSigbMeuseKohaTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -479,7 +484,6 @@ class CommSigbMeuseKohaTest extends CommSigbTestCase {
   }
 
 
-
   /** @test */
   public function reserverExemplaireWithParamsReserveAndExpirationDataShouldPassParamsToKohaService() {
     $this->mock_service
@@ -500,7 +504,6 @@ class CommSigbMeuseKohaTest extends CommSigbTestCase {
                                                              'ABC',
                                                              '2019-12-01',
                                                              '2020-02-08'));
-
   }
 
 
@@ -535,7 +538,9 @@ class CommSigbMeuseKohaTest extends CommSigbTestCase {
 
 
 
+
 class CommSigbLocalNanookTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -565,6 +570,7 @@ class CommSigbLocalNanookTest extends CommSigbTestCase {
 
 
 class CommSigbWaterbearTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -591,6 +597,7 @@ class CommSigbWaterbearTest extends CommSigbTestCase {
 
 
 class CommSigbCarthameTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -614,7 +621,9 @@ class CommSigbCarthameTest extends CommSigbTestCase {
 
 
 
+
 class CommSigbOrpheeTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -642,7 +651,9 @@ class CommSigbOrpheeTest extends CommSigbTestCase {
 
 
 
+
 class CommSigbMicrobibTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -666,7 +677,9 @@ class CommSigbMicrobibTest extends CommSigbTestCase {
 
 
 
+
 class CommSigbBiblixNetTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -690,7 +703,9 @@ class CommSigbBiblixNetTest extends CommSigbTestCase {
 
 
 
+
 class CommSigbDynixTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -729,11 +744,14 @@ class CommSigbDynixTest extends CommSigbTestCase {
 
 
 class CommSigbWithNotAbonneTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
 
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->user = new stdClass();
     $this->user->ID_SITE = 0;
     $this->user->ID_USER = 66;
@@ -769,6 +787,7 @@ class CommSigbWithNotAbonneTest extends ModelTestCase {
                         $this->comm_sigb->supprimerReservation($this->user, 0));
   }
 
+
   /** @test */
   public function ficheAbonneShouldReturnError() {
     $this->assertEquals(['erreur' => 'Communication SIGB indisponible'],
@@ -798,9 +817,9 @@ class CommSigbWithNotAbonneTest extends ModelTestCase {
 
 
 
+
 /** @see http://forge.afi-sa.fr/issues/32959 */
 class CommSigbItemAvailabilityWithoutSigbTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -841,7 +860,9 @@ class CommSigbItemAvailabilityWithoutSigbTest extends ModelTestCase {
 
 
 
+
 class CommSigbFloraTest extends CommSigbTestCase {
+
   public function setUp() {
     parent::setUp();
 
diff --git a/tests/library/Class/CommentBiblioRecordTest.php b/tests/library/Class/CommentBiblioRecordTest.php
index b25750ae28341ec25374762070e58099132b9d30..bf4a241d1e24d060bd1bdfbc9d60c3c5520a1b99 100644
--- a/tests/library/Class/CommentBiblioRecordTest.php
+++ b/tests/library/Class/CommentBiblioRecordTest.php
@@ -21,8 +21,10 @@
 
 
 abstract class CommentBiblioRecordFixUserTestCase extends ModelTestCase {
-  public function setUp(){
+
+  public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Users', ['id'=>78,
                                    'idabon' => 'xx888',
                                    'login' => 'watkins',
@@ -112,9 +114,13 @@ abstract class CommentBiblioRecordFixUserTestCase extends ModelTestCase {
 }
 
 
+
+
 class CommentBiblioRecordWrongUserIdTest extends CommentBiblioRecordFixUserTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_AvisNotice::fixLostUserIdsForAllComments();
   }
 
@@ -150,11 +156,15 @@ class CommentBiblioRecordWrongUserIdTest extends CommentBiblioRecordFixUserTestC
 }
 
 
+
+
 /**
  * Storm Volatile persistence strategy filters empty values in find* methods
  * Storm Db one does not so we mock find* call to emulate Db behaviour
  */
-class CommentBiblioRecordWrongUserLibraryChangedTest extends CommentBiblioRecordFixUserTestCase {
+class CommentBiblioRecordWrongUserLibraryChangedTest
+  extends CommentBiblioRecordFixUserTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -175,8 +185,12 @@ class CommentBiblioRecordWrongUserLibraryChangedTest extends CommentBiblioRecord
 
 
 
+
 class CommentBiblioRecordWithFamilyCardTest extends ModelTestCase {
+
   public function setup() {
+    parent::setUp();
+
     $this->fixture('Class_Notice', ['id' => 37,
                                     'clef_oeuvre' => 'MILLENIUM--LARSSON',
                                     'type_doc' => Class_TypeDoc::ARTICLE]);
@@ -249,4 +263,4 @@ class CommentBiblioRecordWithFamilyCardTest extends ModelTestCase {
   public function thirdAvisAuthorShouldBeAna() {
     $this->assertEquals('ana',Class_AvisNotice::find(13)->getAuthorName());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/CompareUrlTest.php b/tests/library/Class/CompareUrlTest.php
index 3320dc6ca385fc693fd4cba42831e0a707e25793..302add810052798f6a3eae0339c8e77771d9bffa 100644
--- a/tests/library/Class/CompareUrlTest.php
+++ b/tests/library/Class/CompareUrlTest.php
@@ -31,9 +31,6 @@ class CompareUrlIsInRequestUrlTest extends ModelTestCase {
 
 class CompareUrlSameAsRequestTest extends AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php
index 194bcdd4326c9aadfc284dd46429a2a50b9bf07e..1b1a7fe301eb77503ef3fa676e12d797088c24d1 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php
@@ -72,18 +72,6 @@ abstract class PhaseNoticeImportTestCase extends PhaseNoticeTestCase {
                              'mots_renvois' => '',
                              'date_creation' => '2015-01-01']);
 
-    $this->onLoaderOfModel(Class_CodifAuteur::class)
-         ->whenCalled('findByCodeAlpha')
-         ->with('WILDExOSCAR')
-         ->answers($oscar)
-
-         ->whenCalled('findByCodeAlpha')
-         ->with('JALOUXxEDMOND')
-         ->answers($edmond)
-
-         ->whenCalled('findByCodeAlpha')
-         ->answers(null);
-
     $this->fixture(Class_CodifMatiere::class,
                    ['id' => 43,
                     'libelle' => 'Renaissance',
@@ -497,13 +485,13 @@ class PhaseNoticeIncrementalImportWithThesaurusPublicViseTest
 
   /** @test */
   public function record1FacettesShouldContainsThesaurusPublicVise() {
-    $this->assertEquals('HPUVI0001 A1 M1', Class_Notice::find(1)->getFacettes());
+    $this->assertEquals('HPUVI0001 A1 A2 A3 A4 M1', Class_Notice::find(1)->getFacettes());
   }
 
 
   /** @test */
   public function record2FacettesShouldContainsThesaurusPublicVise() {
-    $this->assertEquals('T1 HPUVI0002 A1 Lfre',
+    $this->assertEquals('T1 HPUVI0002 A5 Lfre',
                         Class_Notice::find(2)->getFacettes());
   }
 
@@ -555,13 +543,14 @@ class PhaseNoticeIncrementalImportWithThesaurusLabel0Test
 
   /** @test */
   public function record1FacettesShouldContainsThesaurusDocumentaire() {
-    $this->assertEquals('HDOCU0001 A1 M1', Class_Notice::find(1)->getFacettes());
+    $this->assertEquals('HDOCU0001 A1 A2 A3 A4 M1',
+                        Class_Notice::find(1)->getFacettes());
   }
 
 
   /** @test */
   public function record2FacettesShouldContainsThesaurusDocumentaire() {
-    $this->assertEquals('T1 HDOCU0002 A1 Lfre',
+    $this->assertEquals('T1 HDOCU0002 A5 Lfre',
                         Class_Notice::find(2)->getFacettes());
   }
 
diff --git a/tests/library/Class/Cosmogramme/Integration/PhasePatronsTest.php b/tests/library/Class/Cosmogramme/Integration/PhasePatronsTest.php
index 9247626ebcefb868992ae934d75ebf2a30be1295..22633ea39df2d0ebbc229262ad29a2cd74d17516 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhasePatronsTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhasePatronsTest.php
@@ -857,6 +857,21 @@ class PhasePatronsImportOrpheeTest
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql', $this->_sql = $this->mock());
+    $this->_sql
+      ->whenCalled('query')
+      ->with('update bib_admin_users set statut=1 where role_level=2 and id_int_bib=1 and statut != 1')
+      ->willDo(function()
+               {
+                 (new Storm_Model_Collection(Class_Users::findAllBy(['role_level' => 2,
+                                                                     'id_int_bib' => 1,
+                                                                     'statut not' => 1])))
+                   ->eachDo(function($model)
+                            {
+                              $model->setStatut(1)->save();
+                            });
+               });
+
     $this->_phase = $this->_buildPhase('Patrons')
                          ->setMemoryCleaner(function() {})
                          ->setPrinter($this->_printer);
diff --git a/tests/library/Class/Cosmogramme/Integration/PhasePseudoRecordTest.php b/tests/library/Class/Cosmogramme/Integration/PhasePseudoRecordTest.php
index b6827adc9b6dd452946e9fa4b9d9f954ed1060a2..3d79c7bca36b66e814924e6e430c58bf27c51653 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhasePseudoRecordTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhasePseudoRecordTest.php
@@ -20,15 +20,19 @@
  */
 
 
-abstract class PhasePseudoRecordTestCase extends Class_Cosmogramme_Integration_PhaseTestCase {
+abstract class PhasePseudoRecordTestCase
+  extends Class_Cosmogramme_Integration_PhaseTestCase {
+
   protected
     $_phase_name,
     $_phase_label,
     $_model_name,
     $_model_id;
+  protected bool $_storm_mock_zend_adapter = false;
 
   public function setUp() {
     parent::setUp();
+
     $this->_phase = $this->_buildPhase($this->_phase_name)
                          ->setMemoryCleaner(function() {})
                          ->run();
@@ -450,4 +454,4 @@ class PhasePseudoRecordAlbumValidInteractiveCallbackTest
   public function dateMajAlbumsShouldBeUpdated() {
     $this->assertEquals('2019-01-09 12:11:38', Class_CosmoVar::get('date_maj_albums'));
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseSerialArticlesIndexTest.php b/tests/library/Class/Cosmogramme/Integration/PhaseSerialArticlesIndexTest.php
index 32eadecbcf18523216e3048cf8548a46f3367c47..fed9f08e4216cef7fdea5e939987d474de0abb1e 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhaseSerialArticlesIndexTest.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhaseSerialArticlesIndexTest.php
@@ -103,7 +103,6 @@ class Class_Cosmogramme_Integration_PhaseSerialArticlesIndexTest
            return [$xmen, $orphan, $iron_man];
          });
 
-    $this->onLoaderOfModel(Class_CodifAuteur::class);
     $this->_prepareAuthor(1, 'LEExSTAN')
          ->_prepareAuthor(2, 'KIRBYxJACK')
          ->_prepareAuthor(3, 'LIEBERxLARRY')
@@ -116,14 +115,9 @@ class Class_Cosmogramme_Integration_PhaseSerialArticlesIndexTest
 
 
   protected function _prepareAuthor($id, $formes) {
-    $author = $this->fixture(Class_CodifAuteur::class,
-                             ['id' => $id,
-                              'formes' => $formes,
-                             ]);
-
-    Class_CodifAuteur::whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('" . $formes . "' IN BOOLEAN MODE)"])
-      ->answers($author);
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => $id,
+                    'formes' => $formes]);
 
     return $this;
   }
diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php b/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
index c9f41f61f5c5ddf6194b461550bcc8a06e322303..57cd3740f675227e4328b2b42d71f6d4fb028d03 100644
--- a/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
+++ b/tests/library/Class/Cosmogramme/Integration/PhaseTestCase.php
@@ -35,6 +35,10 @@ abstract class Class_Cosmogramme_Integration_PhaseTestCase extends ModelTestCase
 
     profil_donnees::clearCache();
 
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->_log = $this->mock();
     $append_log = function($content) {
       $this->_log_content .= ' ' . $content . "\n";
@@ -105,5 +109,3 @@ abstract class Class_Cosmogramme_Integration_PhaseTestCase extends ModelTestCase
     return null;
   }
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/CriteresRechercheTest.php b/tests/library/Class/CriteresRechercheTest.php
index 38a8384a77c85770dbe6f2d2919218e0ccc3603c..57b71d35c2a4de996ce7cbe934341038c7b81f20 100644
--- a/tests/library/Class/CriteresRechercheTest.php
+++ b/tests/library/Class/CriteresRechercheTest.php
@@ -20,13 +20,22 @@
  */
 
 
-class CriteresRechercheRetourTest extends ModelTestCase {
+abstract class CriteresRechercheTestCase extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->criteres_recherche= new Class_CriteresRecherche();
+
+    $this->fixture(Class_Profil::class, ['id' => 1])
+         ->beCurrentProfil();
+
+    $this->criteres_recherche = new Class_CriteresRecherche();
   }
+}
+
+
 
 
+class CriteresRechercheRetourTest extends CriteresRechercheTestCase {
   public function expectedUrls() {
     return [
 
@@ -177,14 +186,16 @@ class CriteresRechercheRetourTest extends ModelTestCase {
    */
   public function urlRetourShouldBe($params, $url) {
     $this->criteres_recherche->setParams($params);
-    $this->assertEquals($url,$this->criteres_recherche->getUrlRetourListe());
+    $this->assertEquals($url, $this->criteres_recherche->getUrlRetourListe());
   }
 }
 
 
 
 
-class CriteresRechercheRetourRechercheInitialeTest extends ModelTestCase {
+class CriteresRechercheRetourRechercheInitialeTest
+  extends CriteresRechercheTestCase {
+
   public function expectedUrls() {
     return    [
       [['expressionRecherche' => 'millenium',
@@ -216,23 +227,17 @@ class CriteresRechercheRetourRechercheInitialeTest extends ModelTestCase {
    * @dataProvider expectedUrls
    * @test
    */
-  public function urlRetourShouldBe($params, $url) {
-    $criteres_recherche= new Class_CriteresRecherche();
-    $criteres_recherche->setParams($params);
-    $this->assertEquals($url,$criteres_recherche->getUrlRetourRechercheInitiale());
+  public function urlRetourShouldBe($params, $expected) {
+    $this->criteres_recherche->setParams($params);
+    $actual = $this->criteres_recherche->getUrlRetourRechercheInitiale();
+    $this->assertEquals($expected, $actual);
   }
 }
 
 
 
 
-class CriteresRechercheNouvelleTest extends ModelTestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->criteres_recherche= new Class_CriteresRecherche();
-  }
-
-
+class CriteresRechercheNouvelleTest extends CriteresRechercheTestCase {
   public function expectedUrls() {
     return [[['expressionRecherche' => 'millenium',
               'code_rebond' => 'A26'],
@@ -253,22 +258,17 @@ class CriteresRechercheNouvelleTest extends ModelTestCase {
    * @dataProvider expectedUrls
    * @test
    */
-  public function urlRetourShouldBe($params, $url) {
+  public function urlRetourShouldBe($params, $expected) {
     $this->criteres_recherche->setParams($params);
-    $this->assertEquals($url,$this->criteres_recherche->getUrlNouvelleRecherche());
+    $actual = $this->criteres_recherche->getUrlNouvelleRecherche();
+    $this->assertEquals($expected, $actual);
   }
 }
 
 
 
 
-class CriteresRechercheUrlFacetteTest extends ModelTestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->criteres_recherche= new Class_CriteresRecherche();
-  }
-
-
+class CriteresRechercheUrlFacetteTest extends CriteresRechercheTestCase {
   public function expectedUrls() {
     return [[['expressionRecherche' => '1q84',
               'code_rebond' => 'A26',
@@ -317,22 +317,17 @@ class CriteresRechercheUrlFacetteTest extends ModelTestCase {
    * @dataProvider expectedUrls
    * @test
    */
-  public function urlRetourShouldBe($params, $url) {
+  public function urlRetourShouldBe($params, $expected) {
     $this->criteres_recherche->setParams($params);
-    $this->assertEquals($url,$this->criteres_recherche->getUrlCriteresWithFacettes());
+    $actual = $this->criteres_recherche->getUrlCriteresWithFacettes();
+    $this->assertEquals($expected, $actual);
   }
 }
 
 
 
 
-class CriteresRechercheFilterParamsTest extends ModelTestCase {
-  public function setUp() {
-    parent::setUp();
-    $this->criteres_recherche= new Class_CriteresRecherche();
-  }
-
-
+class CriteresRechercheFilterParamsTest extends CriteresRechercheTestCase {
   public function expectedUrls() {
     return [[['expressionRecherche' => '1q84',
               'code_rebond' => 'A26',
@@ -387,10 +382,9 @@ class CriteresRechercheFilterParamsTest extends ModelTestCase {
 
 
 
-class CriteresRechercheSerieTest extends ModelTestCase {
+class CriteresRechercheSerieTest extends CriteresRechercheTestCase {
   public function setUp() {
     parent::setUp();
-    $this->criteres_recherche= new Class_CriteresRecherche();
     $this->criteres_recherche->setParams(['id_catalogue' => 3,
                                           'id_panier' => 2,
                                           'serie' => 'CASSIO']);
@@ -419,14 +413,13 @@ class CriteresRechercheSerieTest extends ModelTestCase {
 
 
 
-class CriteresRechercheCatalogueSortTest extends ModelTestCase {
+class CriteresRechercheCatalogueSortTest extends CriteresRechercheTestCase {
   /** @test */
   public function shouldBeSortedByPublication() {
-    $criteres = new Class_CriteresRecherche();
-    $criteres->setParams(['id_catalogue' => 2]);
+    $this->criteres_recherche->setParams(['id_catalogue' => 2]);
 
     $this->assertEquals(Class_CriteresRecherche::SORT_PUBLICATION_DESC,
-                        $criteres->getTri());
+                        $this->criteres_recherche->getTri());
   }
 }
 
@@ -453,4 +446,4 @@ class CriteresRechercheWithGenreTest extends AbstractControllerTestCase {
 
 class TestingSearchCriteriaVisitor {
   use Trait_SearchCriteriaVisitor;
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/DecodageUnimarcTest.php b/tests/library/Class/DecodageUnimarcTest.php
index fcde4541f4bae8994d25a3ac67d6a1b36b4b747f..7d2b52c5681cdbc1d4b20943fd86fb93c03ffcf0 100644
--- a/tests/library/Class/DecodageUnimarcTest.php
+++ b/tests/library/Class/DecodageUnimarcTest.php
@@ -23,6 +23,7 @@
 class DecodageUnimarcDVDLaJeuneFilleTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_CodifLangue',
                    ['id' => 'bam', 'libelle' => '']);
 
@@ -140,11 +141,15 @@ class DecodageUnimarcLivreCinemaDAnimationTest extends PHPUnit_Framework_TestCas
 
 class DecodageUnimarcLittleSenegalTest extends ModelTestCase {
   public function setUp() {
-    $this->little_senegal = Class_Notice::newInstanceWithId(4);
-    $this->little_senegal->setUnimarc("01494ngm0 2200337   450 0010007000000710012000071000041000191010038000601020007000981150042001052000052001472100035001992150053002343000109002873000071003963050034004673300201005013450027007026060031007296060036007606060043007966060039008397000048008787020043009267020031009697020038010007020035010387020033010738010023011068010027011292371272|0aEDV1441  a20070320i20042001b-ey0frey0103    ba0 afreaengcfrecengjfrejengjger  aFR  ac093baz|zba||||zz||cb|||||||||||||||1 aLittle SénégalbDVDfRachid Bouchareb, réal.  cBlaq outcParamountdcop. 2004  a1 DVD vidéo monoface zone 2 (1 h 33 min)cCoul.  aVersion originale franco-anglaise, Version française, avec sous-titrage en français, anglais, allemand  aBonus : court-métrage \"Peut-être la mer\" (14 min), bande-annonce  aDate de sortie du film : 2001  aUn vieil Africain, guide à la maison des esclaves de l'île de Gorée, part à la rencontre des descendants de ses ancêtres à Harlem... Quête identitaire et exploration d'un fossé culturel...  b3333973136023d44,73 ?| 31047449aCinémayAlgérie| 32243366aCinémayFrancez1990-| 32163808aNoirs américainsxAu cinéma| 32243367aCinéma30076549yAfrique 132371273aBoucharebbRachidf1953-43704690 132371260aKouyatébSotiguif1936-4590 132371274aHopebSharon4590 131073585aZembRoschdyf1965-4590 132371277aLorellebOlivier4690 131089718aBoutellabSafy4230 0aFRbADAVc20070320 0aFRbBM Melunc20070510");
+    parent::setUp();
 
-    $this->fixture('Class_CodifLangue', ['id' => 'fre', 'libelle' => '']);
-    $this->fixture('Class_CodifLangue', ['id' => 'eng', 'libelle' => '']);
+    $this->little_senegal =
+      $this->fixture(Class_Notice::class,
+                     ['id' => 4,
+                      'unimarc' => "01494ngm0 2200337   450 0010007000000710012000071000041000191010038000601020007000981150042001052000052001472100035001992150053002343000109002873000071003963050034004673300201005013450027007026060031007296060036007606060043007966060039008397000048008787020043009267020031009697020038010007020035010387020033010738010023011068010027011292371272|0aEDV1441  a20070320i20042001b-ey0frey0103    ba0 afreaengcfrecengjfrejengjger  aFR  ac093baz|zba||||zz||cb|||||||||||||||1 aLittle SénégalbDVDfRachid Bouchareb, réal.  cBlaq outcParamountdcop. 2004  a1 DVD vidéo monoface zone 2 (1 h 33 min)cCoul.  aVersion originale franco-anglaise, Version française, avec sous-titrage en français, anglais, allemand  aBonus : court-métrage \"Peut-être la mer\" (14 min), bande-annonce  aDate de sortie du film : 2001  aUn vieil Africain, guide à la maison des esclaves de l'île de Gorée, part à la rencontre des descendants de ses ancêtres à Harlem... Quête identitaire et exploration d'un fossé culturel...  b3333973136023d44,73 ?| 31047449aCinémayAlgérie| 32243366aCinémayFrancez1990-| 32163808aNoirs américainsxAu cinéma| 32243367aCinéma30076549yAfrique 132371273aBoucharebbRachidf1953-43704690 132371260aKouyatébSotiguif1936-4590 132371274aHopebSharon4590 131073585aZembRoschdyf1965-4590 132371277aLorellebOlivier4690 131089718aBoutellabSafy4230 0aFRbADAVc20070320 0aFRbBM Melunc20070510"]);
+
+    $this->fixture(Class_CodifLangue::class, ['id' => 'fre', 'libelle' => '']);
+    $this->fixture(Class_CodifLangue::class, ['id' => 'eng', 'libelle' => '']);
   }
 
 
@@ -251,37 +256,38 @@ class DecodageUnimarcEcosseTest extends PHPUnit_Framework_TestCase {
 
 
 
-class DecodageUnimarcConcertoAuteursTest extends PHPUnit_Framework_TestCase {
+class DecodageUnimarcConcertoAuteursTest extends ModelTestCase {
   public function setUp() {
+    parent::setUp();
+
     Class_AdminVar::set('AUTHOR_PAGE', 0);
+
     $this->concerto = new Class_Notice();
     $this->concerto->setUnimarc("00963njm0 2200265   450 001000600000010002000006101001300026200002400039200002600063200002700089200002800116200004400144210004000188215003300228608003800261608003800299610005900337610005900396686000600455700006500461700005300526702002900579702004200608702004700650265555  aHMU907286d15.7  afreafre1 aPiano concerto N  3� iIallegro ma non tanto� iII Intermezzo : adagio� iIII Finale : alla breve� iRhapsody on a theme of Paganini, op. 43  aArlesd 2001cHarmonia mundi France  a1 disque compacte1 brochure  amusique instrumentale orchestrale  amusique instrumentale orchestrale  aConcertos (piano) - Disques compactsxDisques compacts  aConcertos (piano) - Disques compactsxDisques compacts  a3 1aRACHMANINOVbSergueï Vassilievitch4Fonction indéterminée 1aRACHMANINOVbSergueï Vassilievitch4Compositeur 1aNAKAMATSUbJon4Musicien 1aSEAMANbChristopher4Chef d'orchestre 1aROCHESTER PHILHARMONIC ORCHESTRA4Musicien");
 
-    $rachmaninov = Class_CodifAuteur::newInstanceWithId(3);
-    $nakamatsu = Class_CodifAuteur::newInstanceWithId(4);
-    $seaman = Class_CodifAuteur::newInstanceWithId(5);
-    $orchestra = Class_CodifAuteur::newInstanceWithId(6);
-
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('RACHMANINOVxSERGUEIxVASSILIEVITCH' IN BOOLEAN MODE)"])
-      ->answers($rachmaninov)
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => 3,
+                    'formes' => 'RACHMANINOVxSERGUEIxVASSILIEVITCH',
+                   ]);
 
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('NAKAMATSUxJON' IN BOOLEAN MODE)"])
-      ->answers($nakamatsu)
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => 4,
+                    'formes' => 'NAKAMATSUxJON',
+                   ]);
 
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('SEAMANxCHRISTOPHER' IN BOOLEAN MODE)"])
-      ->answers($seaman)
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => 5,
+                    'formes' => 'SEAMANxCHRISTOPHER',
+                   ]);
 
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('ROCHESTERxPHILHARMONICxORCHESTRA' IN BOOLEAN MODE)"])
-      ->answers($orchestra);
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => 6,
+                    'formes' => 'ROCHESTERxPHILHARMONICxORCHESTRA']);
 
-
-    Class_CodifAuteurFonction::newInstanceWithId('000', ['libelle' => 'On sait pas']);
-    Class_CodifAuteurFonction::newInstanceWithId('545', ['libelle' => 'Zikos']);
+    Class_CodifAuteurFonction::newInstanceWithId('000',
+                                                 ['libelle' => 'On sait pas']);
+    Class_CodifAuteurFonction::newInstanceWithId('545',
+                                                 ['libelle' => 'Zikos']);
 
     $this->_authors = $this->concerto->getAllAuthorsWithResponsibility();
   }
@@ -320,47 +326,62 @@ class DecodageUnimarcConcertoAuteursTest extends PHPUnit_Framework_TestCase {
 
 
 class DecodageUnimarcDVDUnHerosTresDiscretTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
+
     Class_AdminVar::set('AUTHOR_PAGE', 0);
+
     $this->fixture('Class_CodifLangue',
                    ['id' => 23,
                     'libelle' => '']);
-    foreach ($this->createAuthors() as $author) {
-      $author_db=$this->fixture('Class_CodifAuteur',
-                                ['id' => $author[0],
-                                 'libelle' => $author[1]
-                                ]);
-      Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-        ->whenCalled('findFirstBy')
-        ->with(['where' => "MATCH(formes) AGAINST('".$author[2]."' IN BOOLEAN MODE)"])
-        ->answers($author_db);
-
-
-    }
-    $this->fixture('Class_CodifAuteurFonction', ['id' => '005',
-                                                 'libelle' => 'Charpentier']);
-    $unimarc=file_get_contents(realpath(dirname(__FILE__)).'../../../fixtures/audiard_herosdiscret.uni');
+
+    foreach ($this->createAuthors() as $author)
+      $this->fixture(Class_CodifAuteur::class,
+                     ['id' => $author[0],
+                      'libelle' => $author[1],
+                      'formes' => $author[2],
+                     ]);
+
+    $this->fixture('Class_CodifAuteurFonction',
+                   ['id' => '005',
+                    'libelle' => 'Charpentier']);
+
+    $unimarc = file_get_contents(realpath(dirname(__FILE__)).'../../../fixtures/audiard_herosdiscret.uni');
+
     $this->audiard = $this->fixture('Class_Notice',
                                     ['id' => 10,
                                      'unimarc' => $unimarc,
                                      'exemplaires' => []]);
+
     $this->_authors = $this->audiard->getAllAuthorsWithResponsibility();
   }
 
+
   protected function createAuthors() {
-    return [[1,'Jacques Audiard','AUDIARDxJACQUES'],
-            [2,'Alexandre Desplat', 'DESPLATxALEXANDRE'],
+    return [[1, 'Jacques Audiard', 'AUDIARDxJACQUES'],
+            [2, 'Alexandre Desplat', 'DESPLATxALEXANDRE'],
             [3, 'Jean-François Deniau', 'DENIAUxJEANxFRANCOIS'],
             [4, 'Mathieu Kassovitz', 'KASSOVITZxMATHIEU'],
             [5, 'Anouk Grinberg', 'GRINBERGxANOUK'],
-            [6,'Sandrine Kiberlain' , 'KIBERLAINxSANDRINE'],
-            [8,'Albert Dupontel' , 'DUPONTELxALBERT'],
-            [7,'Alain Le Henry' , 'LExHENRYxALAIN']];
+            [6, 'Sandrine Kiberlain', 'KIBERLAINxSANDRINE'],
+            [8, 'Albert Dupontel', 'DUPONTELxALBERT'],
+            [7, 'Alain Le Henry', 'LExHENRYxALAIN']];
   }
+
+
+  public function expectedAuthors() {
+    return [
+            [1, 'Jacques Audiard (Metteur en scène ou réalisateur)', 'A1', 0],
+            [2, 'Alexandre Desplat (Compositeur)', 'A2', 1],
+            [3, 'Jean-François Deniau (Auteur)', 'A3', 2],
+            [4, 'Mathieu Kassovitz (Acteur)', 'A4', 3],
+            [5, 'Anouk Grinberg (Acteur)','A5', 4],
+            [6, 'Sandrine Kiberlain (Acteur)' , 'A6', 5],
+            [8, 'Albert Dupontel (Acteur)' , 'A8', 6],
+            [7, 'Alain Le Henry (Intervenant)' , 'A7', 7]];
+  }
+
+
   /**
    * @dataProvider expectedAuthors
    * @test
@@ -368,7 +389,6 @@ class DecodageUnimarcDVDUnHerosTresDiscretTest extends ModelTestCase {
   public function getAuthorUnimarcShouldReturnExpectedAuthors($id, $label, $rebound_code, $author_index) {
     $author = $this->_authors[$author_index];
 
-
     $this->assertEquals($id, $author->getId());
     $this->assertEquals($label, $author->getLabel());
     $this->assertEquals(['controller' => 'recherche',
@@ -380,65 +400,55 @@ class DecodageUnimarcDVDUnHerosTresDiscretTest extends ModelTestCase {
                          'page' => null],
                         $author->getUrlParams());
   }
-
-
-  public function expectedAuthors() {
-    return [
-            [1, 'Jacques Audiard (Metteur en scène ou réalisateur)', 'A1', 0],
-            [2, 'Alexandre Desplat (Compositeur)', 'A2', 1],
-            [3, 'Jean-François Deniau (Auteur)', 'A3', 2],
-            [4, 'Mathieu Kassovitz (Acteur)', 'A4', 3],
-            [5, 'Anouk Grinberg (Acteur)','A5', 4],
-            [6, 'Sandrine Kiberlain (Acteur)' , 'A6', 5],
-            [8, 'Albert Dupontel (Acteur)' , 'A8', 7],
-            [7, 'Alain Le Henry (Intervenant)' , 'A7', 9]];
-  }
 }
 
 
 
 
 class DecodageUnimarcCDKayaTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
-    $this->_bob_marley = $this->fixture('Class_CodifAuteur',
+    $this->_bob_marley = $this->fixture(Class_CodifAuteur::class,
                                         ['id' => 8,
-                                         'libelle' => 'Bob Marley'
+                                         'libelle' => 'Bob Marley',
+                                         'formes' => 'MARLEYxBOB',
                                         ]);
 
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('MARLEYxBOB BOOLEAN MODE)"])
-      ->answers($this->_bob_marley);
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => 9,
+                    'libelle' => 'The wailers',
+                    'formes' => 'WAILERSxxTHE',
+                   ]);
 
     $unimarc = file_get_contents( ROOT_PATH . 'tests/fixtures/bobmarley_kaya.uni');
-    $this->cd_kaya = $this->fixture('Class_Notice',
+    $this->cd_kaya = $this->fixture(Class_Notice::class,
                                     ['id' => 11,
                                      'unimarc' => $unimarc,
                                      'exemplaires' => []]);
+
     $this->_authors = $this->cd_kaya->getAllAuthorsWithResponsibility();
   }
 
 
   /** @test */
   public function firstAuthorIdShouldBeBobMarley() {
-    $this->assertEquals($this->_bob_marley->getId(), $this->_authors[0]->getId());
+    $this->assertEquals($this->_bob_marley->getId(),
+                        $this->_authors[0]->getId());
   }
 
 
   /** @test */
   public function firstAuthorLabelShouldContainsFunctionsGuitareChanteur() {
-    $this->assertEquals('Bob Marley (Guitare, Chanteur)', $this->_authors[0]->getLabel());
+    $this->assertEquals('Bob Marley (Guitare, Chanteur)',
+                        $this->_authors[0]->getLabel());
   }
 
 
     /** @test */
   public function secondAuthorLabelShouldBeTheWailers() {
-    $this->assertEquals('Wailers (The)', $this->_authors[1]->getLabel());
+    $this->assertEquals('Wailers (The)',
+                        $this->_authors[1]->getLabel());
   }
 }
 
@@ -446,38 +456,32 @@ class DecodageUnimarcCDKayaTest extends ModelTestCase {
 
 
 class DecodageUnimarcVieDAdeleTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
-    $this->fixture('Class_CodifAuteurFonction',
+    $this->fixture(Class_CodifAuteurFonction::class,
                    ['id' => '090',
                     'libelle' => 'Scénariste, dialoguiste']);
 
-    $this->fixture('Class_CodifAuteurFonction',
+    $this->fixture(Class_CodifAuteurFonction::class,
                    ['id' => '690',
                     'libelle' => 'Scénariste']);
 
-    $this->fixture('Class_CodifAuteurFonction',
+    $this->fixture(Class_CodifAuteurFonction::class,
                    ['id' => '370',
                     'libelle' => 'Réalisateur de film']);
 
-    $abdellatif = $this->fixture('Class_CodifAuteur',
+    $abdellatif = $this->fixture(Class_CodifAuteur::class,
                                  ['id' => 8,
-                                  'libelle' => 'Abdellatif Kechiche'
+                                  'libelle' => 'Abdellatif Kechiche',
+                                  'formes' => 'KECHICHExABDELLATIF',
                                  ]);
 
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_CodifAuteur')
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('ABDELLATIFxKECHICHE BOOLEAN MODE)"])
-      ->answers($abdellatif);
-
-    $vie_adele = $this->fixture('Class_Notice',
+    $vie_adele = $this->fixture(Class_Notice::class,
                                 ['id' => 11,
                                  'unimarc' => file_get_contents( ROOT_PATH . 'tests/fixtures/vie_adele.uni'),
                                  'exemplaires' => []]);
+
     $this->_authors = $vie_adele->getAllAuthorsWithResponsibility();
   }
 
@@ -487,7 +491,6 @@ class DecodageUnimarcVieDAdeleTest extends ModelTestCase {
     $this->assertEquals('Abdellatif Kechiche (Réalisateur de film, Scénariste, Scénariste, dialoguiste)',
                         $this->_authors[0]->getLabel());
   }
-
 }
 
 
diff --git a/tests/library/Class/DynamicUserGroupTest.php b/tests/library/Class/DynamicUserGroupTest.php
index ed0f5bdc22847f5a9ad8d446f5b1914a44af2aac..c04271674a651d7ca2927a079b9014426f37d412 100644
--- a/tests/library/Class/DynamicUserGroupTest.php
+++ b/tests/library/Class/DynamicUserGroupTest.php
@@ -21,23 +21,32 @@
 
 
 abstract class DynamicUserGroupTestCase extends ModelTestCase {
-  public function setUp() {
+  protected $_sql;
+
+  protected function setUp() {
     parent::setUp();
 
-    $this->_annecy = $this->fixture('Class_Bib',
+    Zend_Registry::set('sql', $this->_sql = $this->mock());
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 883,
+                   ])
+         ->beCurrentProfil();
+
+    $this->_annecy = $this->fixture(Class_Bib::class,
                                     ['id' => 5, 'libelle' => 'Annecy']);
 
-    $this->_marseille = $this->fixture('Class_Bib',
+    $this->_marseille = $this->fixture(Class_Bib::class,
                                        ['id' => 6, 'libelle' => 'Marseille']);
 
-    $this->_baptiste = $this->fixture('Class_Users',
+    $this->_baptiste = $this->fixture(Class_Users::class,
                                       ['id' => 3,
                                        'prenom' => 'Baptiste',
                                        'login' => 'B',
                                        'password' => 'B',
                                        'last_login' => null]);
 
-    $this->_xavier = $this->fixture('Class_Users',
+    $this->_xavier = $this->fixture(Class_Users::class,
                                     ['id' => 8,
                                      'prenom' => 'Xavier',
                                      'login' => 'X',
@@ -118,7 +127,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
     Class_AdminVar::set('ENABLED_SEARCH_USER_AGE', 1);
 
     $this->_marseillais = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 3,
                  'libelle' => 'Rédacteurs marseillais',
                  'filters' => json_encode([
@@ -131,7 +140,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                   ->assertSave();
 
     $this->_anneciens = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 12,
                  'libelle' => 'Rédacteurs annéciens',
                  'filters' => json_encode([
@@ -147,7 +156,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
     $time_source = new TimeSourceForTest('2020-01-15 15:00');
     Class_User_ILSSubscription::setTimeSource($time_source);
     Class_User_SearchCriteria_Age::setTimeSource($time_source);
-    $this->_gontran = $this->fixture('Class_Users',
+    $this->_gontran = $this->fixture(Class_Users::class,
                                      ['id' => 22,
                                       'login' => 'gontran',
                                       'password' => 'password',
@@ -160,7 +169,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                       'last_login' => '2020-06-06 12:00:00'
                                      ]);
 
-    $this->_shella = $this->fixture('Class_Users',
+    $this->_shella = $this->fixture(Class_Users::class,
                                     ['id' => 28,
                                      'login' => 'shella',
                                      'password' => 'password',
@@ -174,7 +183,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                     ]);
 
     $this->_subscribers = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 13,
                  'libelle' => 'Abonnés',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -182,24 +191,24 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            'search_valid_subscription' => 1])]);
 
     // @see http://forge.afi-sa.fr/issues/108358#note-9, manually linked to dynamic
-    $this->_max = $this->fixture('Class_Users',
-                                 ['id' => 32,
-                                  'login' => 'max',
-                                  'password' => 'zemenace',
-                                  'id_site' => 1,
-                                  'idabon' => '88308ID',
-                                  'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
-                                  'date_fin' => '2019-01-01',
-                                  'last_login' => null,
-                                  'user_group_memberships' => [$this->fixture('Class_UserGroupMembership',
-                                                                              ['id' => 1000,
-                                                                               'user_id' => 32,
-                                                                               'user_group_id' => 13])],
-                                 ]);
-
+    $this->_max = $this
+      ->fixture(Class_Users::class,
+                ['id' => 32,
+                 'login' => 'max',
+                 'password' => 'zemenace',
+                 'id_site' => 1,
+                 'idabon' => '88308ID',
+                 'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
+                 'date_fin' => '2019-01-01',
+                 'last_login' => null,
+                 'user_group_memberships' => [$this->fixture(Class_UserGroupMembership::class,
+                                                             ['id' => 1000,
+                                                              'user_id' => 32,
+                                                              'user_group_id' => 13])],
+                ]);
 
     $this->_late_subscribers = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 14,
                  'libelle' => 'Abonnés tardifs',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -209,20 +218,25 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_non_exported = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 15,
                  'libelle' => 'Abonnés tardifs',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
                  'filters' => json_encode([
                                            'search_statut' => 1
                                            ])]);
-    $this->fixture('Class_AvisNotice',
+
+    $this->fixture(Class_AvisNotice::class,
                    ['id' => 34,
                     'id_user' => $this->_xavier->getId(),
                     'entete' => 'a mon avis']);
+    $this->_sql
+      ->whenCalled('fetchAllByColumn')
+      ->with('select distinct(id_user) as id from notices_avis')
+      ->answers([$this->_xavier->getId()]);
 
     $this->_reviewers = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 16,
                  'libelle' => 'Critiques',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -231,7 +245,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_basketers = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 17,
                  'libelle' => 'Createurs de paniers',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -239,13 +253,17 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            'search_basket'=> 'yes'
                                            ])]);
 
-    $this->fixture('Class_PanierNotice',
+    $this->fixture(Class_PanierNotice::class,
                    ['id' => 12,
-                    'id_user' => $this->_baptiste->getId()]
-    );
+                    'id_user' => $this->_baptiste->getId()]);
+
+    $this->_sql
+      ->whenCalled('fetchAllByColumn')
+      ->with('select distinct(id_user) as id from notices_paniers')
+      ->answers([$this->_baptiste->getId()]);
 
     $this->_searchers = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 18,
                  'libelle' => 'Chercheurs',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -254,7 +272,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_subscription_ended = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 19,
                  'libelle' => 'En fin d\'abonnement',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -264,7 +282,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_minors = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 20,
                  'libelle' => 'Mineurs',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -274,7 +292,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_adults = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 21,
                  'libelle' => 'Adultes',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -283,7 +301,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_abonnes = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 22,
                  'libelle' => 'Abonnes',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -292,7 +310,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_never_logged = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 23,
                  'libelle' => 'Jamais connecté.e.s',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -301,7 +319,7 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
                                            ])]);
 
     $this->_logged_last_month = $this
-      ->fixture('Class_UserGroup',
+      ->fixture(Class_UserGroup::class,
                 ['id' => 24,
                  'libelle' => 'Loggué depuis le 1er juin 2020',
                  'group_type' => Class_UserGroup::TYPE_DYNAMIC,
@@ -385,4 +403,4 @@ class DynamicUserGroupModoBibTest extends DynamicUserGroupTestCase {
   public function userShouldNotHaveGroup($user, $group) {
     $this->assertNotContains($this->$group, $this->{$user}->getUserGroups());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/EADTest.php b/tests/library/Class/EADTest.php
index 1f4386d6c8eca58cbceccbe6369043acc259177b..577fa44f7f349cbba2909129b36dd2d8876330c8 100644
--- a/tests/library/Class/EADTest.php
+++ b/tests/library/Class/EADTest.php
@@ -56,9 +56,10 @@ class EADEmptyLoadTest extends ModelTestCase {
   protected $_ead;
 
   public function setUp() {
-    Storm_Test_ObjectWrapper::onLoaderOfModel('Class_AlbumCategorie')
-      ->whenCalled('save')
-      ->answers(true);
+    parent::setUp();
+    $this->onLoaderOfModel('Class_AlbumCategorie')
+         ->whenCalled('save')
+         ->answers(true);
 
     $this->_ead = new Class_EAD();
     $this->_ead->load('');
@@ -88,15 +89,16 @@ class EADMoulinsTest extends PHPUnit_Framework_TestCase {
 
   public static function setUpBeforeClass() {
     Class_AlbumRessource::beVolatile();
+
     Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Matiere')
       ->whenCalled('save')
       ->willDo(function($model) {
-          if ($model->getCodeAlpha()=='BIBLE DE SOUVIGNY') {
-            $model->setId(99);
-            $model->getLoader()->cacheInstance($model);
-          }
-          return true;
-        })
+        if ($model->getCodeAlpha()=='BIBLE DE SOUVIGNY') {
+          $model->setId(99);
+          $model->getLoader()->cacheInstance($model);
+        }
+        return true;
+      })
 
       ->whenCalled('findFirstBy')
       ->answers(null)
@@ -493,18 +495,18 @@ class EADIndexationParDefautTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
-    Class_Album::beVolatile();
 
-    $codif_type_doc=self::fixture('Class_CodifTypeDoc', ['id' => Class_TypeDoc::LIVRE_NUM,
-                                                         'famille_id' => Class_CodifTypeDoc::INCONNU,
-                                                         'bibliotheques' => '1;8',
-                                                         'annexes' => '10;12',
-                                                         'sections' => '18;19']);
+    $codif_type_doc = $this->fixture(Class_CodifTypeDoc::class,
+                                     ['id' => Class_TypeDoc::LIVRE_NUM,
+                                      'famille_id' => Class_CodifTypeDoc::INCONNU,
+                                      'bibliotheques' => '1;8',
+                                      'annexes' => '10;12',
+                                      'sections' => '18;19']);
 
-    self::fixture('Class_TypeDoc', ['id'=>Class_TypeDoc::LIVRE_NUM,
-                                    'codif_type_doc' => $codif_type_doc,
-                                    'label'=> 'Livre Numérique'
-                     ]);
+    $this->fixture(Class_TypeDoc::class,
+                   ['id' => Class_TypeDoc::LIVRE_NUM,
+                    'codif_type_doc' => $codif_type_doc,
+                    'label'=> 'Livre Numérique']);
 
     $this->_ead = new Class_EAD();
     $this->_ead->loadFile('./tests/fixtures/ead_moulins.xml');
@@ -536,7 +538,4 @@ class EADIndexationParDefautTest extends ModelTestCase {
     $album = array_at(66, $this->_ead->getAlbums());
     $this->assertEquals('18;19',$album->getSections());
   }
-
-
 }
-?>
\ No newline at end of file
diff --git a/tests/library/Class/I18nTest.php b/tests/library/Class/I18nTest.php
index b91889660824fbe3ab4588d4df0b5f3af7cbe533..c13f4faed6413b2bd3a409599c7854c8396dbb09 100644
--- a/tests/library/Class/I18nTest.php
+++ b/tests/library/Class/I18nTest.php
@@ -20,21 +20,21 @@
  */
 
 class ProfileI18nTest extends ModelTestCase {
+
   protected
-    $_storm_default_to_volatile = true,
     $_extractor,
     $_i18n,
     $_basePath;
 
+  public function setUp() {
+    parent::setUp();
 
-  protected function setUp() {
     Class_I18n::setInstance(null);
     $this->_i18n = Class_I18n::getInstance();
 
     $this->_basePath = realpath(dirname(__FILE__)). '/../../../userfiles' . Class_I18n::BASE_PATH;
 
     $this->_ensureNoFile(Class_I18n::MASTER_NAME);
-
   }
 
 
@@ -72,7 +72,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->setProfilExtractor($this->_extractor);
     $this->_i18n->generate();
     $this->assertEquals(I18nTestFixtures::createProfileStringsSerialization(), file_get_contents($this->_getFilePathFor(Class_I18n::MASTER_NAME)));
-
   }
 
 
@@ -98,7 +97,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->generate();
 
     $this->assertEquals(I18nTestFixtures::createProfileStringsSerializationWithQuotesAndSlashes(), file_get_contents($this->_getFilePathFor(Class_I18n::MASTER_NAME)));
-
   }
 
 
@@ -108,7 +106,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_writeFileFixture(Class_I18n::MASTER_NAME, I18nTestFixtures::createProfileStringsSerialization());
 
     $this->assertEquals(I18nTestFixtures::createMasterDatas(), $this->_i18n->read());
-
   }
 
 
@@ -116,7 +113,6 @@ class ProfileI18nTest extends ModelTestCase {
   public function readNotExistingEnglishLanguageWithNoMasterShouldReturnEmptyArray() {
     $this->_ensureNoFile('en');
     $this->assertEmpty($this->_i18n->read('en'));
-
   }
 
 
@@ -142,7 +138,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->read('en');
 
     $this->assertEquals(I18nTestFixtures::createEmptySerialization(), $empty_serialization);
-
   }
 
 
@@ -152,7 +147,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_writeFileFixture('en', I18nTestFixtures::createEnglishSerialization());
 
     $this->assertEquals(I18nTestFixtures::createEnglishDatas(), $this->_i18n->read('en'));
-
   }
 
 
@@ -162,7 +156,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->update('es', '', '');
 
     $this->assertFileExists($this->_getFilePathFor('es'));
-
   }
 
 
@@ -173,7 +166,6 @@ class ProfileI18nTest extends ModelTestCase {
     $datas = $this->_i18n->read('es');
 
     $this->assertEquals('The number of the beast', $datas['666']);
-
   }
 
 
@@ -184,7 +176,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->update('es', md5('Les dernières nouvelles du front'), 'The latest news from the front');
 
     $this->assertEquals(I18nTestFixtures::createEnglishSerialization(), file_get_contents($this->_getFilePathFor('es')));
-
   }
 
 
@@ -195,7 +186,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->updateAll('es', I18nTestFixtures::createProfileStrings());
 
     $this->assertEquals(I18nTestFixtures::createProfileStringsSerialization(), file_get_contents($this->_getFilePathFor('es')));
-
   }
 
 
@@ -206,7 +196,6 @@ class ProfileI18nTest extends ModelTestCase {
     $this->_i18n->updateAll('es', array());
 
     $this->assertEquals(I18nTestFixtures::createEmptySerialization(), file_get_contents($this->_getFilePathFor('es')));
-
   }
 
 
@@ -243,6 +232,7 @@ class ProfileI18nTest extends ModelTestCase {
 
 
 class I18nTestFixtures {
+
   public static function createEnglishDatas() {
     return array(
       md5('Toutes nos collections de papillons') => 'All our collections of butterflies',
@@ -250,7 +240,8 @@ class I18nTestFixtures {
     );
   }
 
-    /**
+
+  /**
    * @return string
    */
   public static function createEnglishSerialization() {
@@ -263,10 +254,12 @@ return array(
 ?>';
   }
 
+
   public static function createMasterDatas() {
     return self::createProfileStrings();
   }
 
+
   /**
    * @return array
    */
@@ -277,6 +270,7 @@ return array(
     );
   }
 
+
   /**
    * @return string
    */
@@ -290,6 +284,7 @@ return array(
 ?>';
   }
 
+
   /**
    * @return array
    */
@@ -300,6 +295,7 @@ return array(
     );
   }
 
+
   /**
    * @return string
    */
@@ -313,6 +309,7 @@ return array(
 ?>';
   }
 
+
   public static function createEmptySerialization() {
     return '<?php
 return array(
@@ -320,7 +317,4 @@ return array(
 );
 ?>';
   }
-
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/Indexation/PseudoNoticeTest.php b/tests/library/Class/Indexation/PseudoNoticeTest.php
index fed08c60ac12c449309b0eff6e1b52bf91cc4bfb..c20307137f5f864bd922c087ce6c800d926edfdf 100644
--- a/tests/library/Class/Indexation/PseudoNoticeTest.php
+++ b/tests/library/Class/Indexation/PseudoNoticeTest.php
@@ -133,7 +133,10 @@ class Class_Indexation_PseudoNoticeAlbumTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
 
-    $this->fixture(Class_CodifAuteur::class, ['id' => '234']);
+    $this->fixture(Class_CodifAuteur::class,
+                   ['id' => '234',
+                    'libelle' => 'Gustave Flaubert',
+                    'formes' => 'GUSTAVExFLAUBERT']);
 
     $this->fixture(Class_Album::class,
                    ['id' => 896,
@@ -713,8 +716,12 @@ class Class_Indexation_PseudoNoticeArticleLongContentTest
 
 
 class Class_Indexation_PseudoNoticeRssUpdateTest extends ModelTestCase {
+
+  protected bool $_storm_mock_zend_adapter = false;
+
   public function setUp() {
     parent::setUp();
+
     $record = $this->fixture(Class_Notice::class,
                              ['id' => 15,
                               'type_doc' => Class_TypeDoc::RSS,
diff --git a/tests/library/Class/MailTest.php b/tests/library/Class/MailTest.php
index ba9df20b6f16020de1822f851eaa14df55ce7e36..7d62105533d8669f868a46fb25d57e46c19d3111 100644
--- a/tests/library/Class/MailTest.php
+++ b/tests/library/Class/MailTest.php
@@ -20,6 +20,7 @@
  */
 
 class Class_MailTesting extends Class_Mail {
+
   protected
     $_destinataire,
     $_sujet,
@@ -34,22 +35,27 @@ class Class_MailTesting extends Class_Mail {
     return $this->_mail_return_value;
   }
 
+
   public function mailReturns($value) {
     $this->_mail_return_value = $value;
   }
 
+
   public function getDestinataire() {
     return $this->_destinataire;
   }
 
+
   public function getSujet() {
     return $this->_sujet;
   }
 
+
   public function getBody() {
     return $this->_body;
   }
 
+
   public function getMailHeaders() {
     return $this->_headers;
   }
@@ -57,8 +63,8 @@ class Class_MailTesting extends Class_Mail {
 
 
 
+
 class MailToZorkFromFlorenceTest extends ModelTestCase {
-  protected $_storm_default_to_volatile=true;
 
   public function setUp() {
     parent::setUp();
@@ -66,8 +72,12 @@ class MailToZorkFromFlorenceTest extends ModelTestCase {
       ->newInstanceWithId('mail_admin')
       ->setValeur('florence@astrolabe-melun.fr');
 
-    $this->fixture('Class_Profil', ['id' => 1,
-                                    'mail_site' => '']);
+    $current_profil = $this->fixture(Class_Profil::class,
+                                     ['id' => 1]);
+
+    Class_Profil::setCurrentProfil($current_profil);
+
+    $current_profil->setMailSite('');
 
     $this->_mail_testing = new Class_MailTesting();
     $this->_mail_testing->mailReturns(true);
@@ -106,7 +116,6 @@ class MailToZorkFromFlorenceTest extends ModelTestCase {
 
 
 class MailErrorsTest extends ModelTestCase {
-  protected $_storm_default_to_volatile=true;
 
   public function setUp() {
     parent::setUp();
@@ -115,6 +124,7 @@ class MailErrorsTest extends ModelTestCase {
     Class_Profil::setCurrentProfil($profil);
   }
 
+
   /** @test */
   function withoutMailAdminShouldReturnErrorMessage() {
     Class_CosmoVar::setValueOf('mail_admin', '');
diff --git a/tests/library/Class/Migration/CleanProfileCfgModulesTest.php b/tests/library/Class/Migration/CleanProfileCfgModulesTest.php
index 09bb6a1a42a4f0f7d011e7aeb8708ed3ad9217b1..f12abc6f3eb6723ea0225141f89238f772027444 100644
--- a/tests/library/Class/Migration/CleanProfileCfgModulesTest.php
+++ b/tests/library/Class/Migration/CleanProfileCfgModulesTest.php
@@ -25,9 +25,8 @@ class CleanProfileCfgModulesScriptTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
 
-    $this->fixture(Class_Profil::class,
-                   ['id' => 1,
-                   ]);
+    Class_Profil::setCurrentProfil($this->fixture(Class_Profil::class,
+                                                  ['id' => 1]));
 
     (new Class_Profil_Import($this->fixture(Class_Profil::class, ['id' => 3])))
       ->import(__DIR__ . '/141251_profile_with_theme_historic.json');
diff --git a/tests/library/Class/Migration/DigitalResource/NumilogTest.php b/tests/library/Class/Migration/DigitalResource/NumilogTest.php
index bcbae961d61b20ee5b33b4f222e3baa0fab8cb93..f05c2420c71c847aec8de6d12ae2c6970d449757 100644
--- a/tests/library/Class/Migration/DigitalResource/NumilogTest.php
+++ b/tests/library/Class/Migration/DigitalResource/NumilogTest.php
@@ -24,6 +24,13 @@ class Class_Migration_DigitialResource_NumilogTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('query')
+                       ->with('update notices set facettes = clean_spaces(REGEXP_REPLACE(facettes, "\\\\bHCCCC0001\\\\b", "")) where type_doc not in ("8", "9", "10") and type=1 and match(facettes) against("+HCCCC0001" in boolean mode)')
+                       ->answers(0));
+
     Class_DigitalResource::resetInstance();
 
     $cfg_menus =
diff --git a/tests/library/Class/Migration/DigitalResource/ToutApprendreTest.php b/tests/library/Class/Migration/DigitalResource/ToutApprendreTest.php
index 228a36ee4da1972f9126171f2e9c017b183df63b..e6518a00b00473fdc977cae958c4ac2a2c3d275d 100644
--- a/tests/library/Class/Migration/DigitalResource/ToutApprendreTest.php
+++ b/tests/library/Class/Migration/DigitalResource/ToutApprendreTest.php
@@ -27,6 +27,13 @@ class Class_Migration_DigitialResource_ToutApprendreTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('query')
+                       ->with('update notices set facettes = clean_spaces(REGEXP_REPLACE(facettes, "\\\\bHCCCC0001\\\\b", "")) where type_doc not in ("8", "9", "10") and type=1 and match(facettes) against("+HCCCC0001" in boolean mode)')
+                       ->answers(0));
+
     Class_DigitalResource::resetInstance();
 
     $cfg_menus = ['H' => ['libelle' => 'Menu horizontal',
diff --git a/tests/library/Class/Migration/SigbStandardCodificationsTest.php b/tests/library/Class/Migration/SigbStandardCodificationsTest.php
index edaabc40764b99145b206a14d97cc34f39547ca7..5b93ab803a6955ca4874af53ede2f518651d6f03 100644
--- a/tests/library/Class/Migration/SigbStandardCodificationsTest.php
+++ b/tests/library/Class/Migration/SigbStandardCodificationsTest.php
@@ -50,6 +50,7 @@ class Class_Migration_SigbStandardCodificationsTest extends ModelTestCase {
 
     $this->fixture(Class_IntBib::class,
                    ['id' => 10, 'sigb' => Class_IntBib::SIGB_NANOOK]);
+
     $this->fixture(Class_IntMajAuto::class, ['id' => 42]);
 
     $landing_directory = $this
@@ -80,11 +81,29 @@ class Class_Migration_SigbStandardCodificationsTest extends ModelTestCase {
       ->beStrict();
 
     Class_Cosmogramme_LandingDirectory::setInstance($landing_directory);
+
+    $now = new TimeSourceForTest('2015-03-26 14:00:00');
+    Class_Cosmogramme_Generator_AbstractTask::setTimeSource($now);
+
+    $db_adapter = $this->mock();
+    foreach(['codif_section', 'codif_emplacement', 'codif_genre'] as $codif)
+      $db_adapter
+        ->whenCalled('query')
+        ->with('delete from ' . $codif . ' where date_maj != "2015-03-26"')
+        ->answers(0)
+
+        ->whenCalled('query')
+        ->with('update ' . $codif . ' set date_maj=""')
+        ->answers(0);
+
+    Class_Cosmogramme_Generator_AbstractTask::setDbAdapter($db_adapter);
   }
 
 
   public function tearDown() {
     Class_Cosmogramme_LandingDirectory::setInstance(null);
+    Class_Cosmogramme_Generator_AbstractTask::setTimeSource(null);
+    Class_Cosmogramme_Generator_AbstractTask::setDbAdapter(null);
     parent::tearDown();
   }
 
diff --git a/tests/library/Class/ModelTestCase.php b/tests/library/Class/ModelTestCase.php
index ba66f723425b2914397721c68430b92a11f255cd..a44b34c35c65d3a8c291c17c1996950429708fd6 100644
--- a/tests/library/Class/ModelTestCase.php
+++ b/tests/library/Class/ModelTestCase.php
@@ -45,7 +45,7 @@ abstract class ModelTestCase extends Storm_Test_ModelTestCase {
 
 
   protected function setUp() {
-    Storm_Model_Abstract::unsetLoaders();
+    parent::setUp();
     if($this->_storm_default_to_volatile) {
       Storm_Model_Loader::defaultToVolatile();
       Class_Versions::defaultToVolatile();
@@ -90,4 +90,4 @@ abstract class ModelTestCase extends Storm_Test_ModelTestCase {
                  $this->_registry_sql);
     return parent::tearDown();
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/MoteurRecherche/MatchingTermsTest.php b/tests/library/Class/MoteurRecherche/MatchingTermsTest.php
index ebbd69e081cf9d4b4d4678a12b9869c776e3b6e8..97b45300e3b058083fdb52746989142149321d7e 100644
--- a/tests/library/Class/MoteurRecherche/MatchingTermsTest.php
+++ b/tests/library/Class/MoteurRecherche/MatchingTermsTest.php
@@ -21,8 +21,18 @@
 
 
 class MoteurRechercheMatchingTermsTest extends ModelTestCase {
+
   protected $_next_record_id = 1;
 
+  public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+  }
+
+
   protected function _prepareRecord($title, $author='') {
     $marc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithChildren('200', ['a' => $title])
@@ -92,7 +102,6 @@ class MoteurRechercheMatchingTermsTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function AntoninDvorakSearchShouldMatchWithPhonetic() {
     $marc = (new Class_NoticeUnimarc_Fluent)
@@ -106,5 +115,4 @@ class MoteurRechercheMatchingTermsTest extends ModelTestCase {
                     'unimarc' => $marc->render()]);
     $this->assertSearchTermsMatch('Antonín Dvorak', ['antonín', 'dvořák']);
   }
-
 }
diff --git a/tests/library/Class/MoteurRechercheTest.php b/tests/library/Class/MoteurRechercheTest.php
index 9143b1db596ea3b6d3c6fce7eabb78503caf359a..0b87fed54d6e6eb2056886fe4ea06ca43f95c13d 100644
--- a/tests/library/Class/MoteurRechercheTest.php
+++ b/tests/library/Class/MoteurRechercheTest.php
@@ -20,11 +20,10 @@
  */
 
 abstract class MoteurRechercheTestCase extends ModelTestCase {
+
   protected
     $mock_sql,
-    $expected_date = '2011-05-03',
-    $_storm_default_to_volatile = true;
-
+    $expected_date = '2011-05-03';
 
   public function setUp() {
     parent::setUp();
@@ -32,7 +31,9 @@ abstract class MoteurRechercheTestCase extends ModelTestCase {
     $this->mock_sql = $this->mock();
     Zend_Registry::set('sql', $this->mock_sql);
 
-    $this->mock_sql->whenCalled('query')->answers(true);
+    $this->mock_sql
+      ->whenCalled('query')
+      ->answers(true);
 
     Class_MoteurRecherche::setTimeSource(new TimeSourceForTest('2012-05-03 09:00:00'));
 
@@ -93,6 +94,7 @@ abstract class MoteurRechercheTestCase extends ModelTestCase {
 
 
 class MoteurRechercheAvanceeTest extends MoteurRechercheTestCase {
+
   public function expectedSql() {
     $list_sql = 'select id_notice, facettes from notices Where %s order by %s';
 
@@ -105,7 +107,7 @@ class MoteurRechercheAvanceeTest extends MoteurRechercheTestCase {
             [['rech_titres' => '"nouveaux chiens" garde',
               'operateur_titres' => 'and',
               'tri' => 'alpha_titre'],
-             'req_notices' => $this->listSqlWith("(MATCH(titres) AGAINST('+\\\"NOUVEAUX CHIENS\\\" +(GARDE GARDES GARD)' IN BOOLEAN MODE))",
+             'req_notices' => $this->listSqlWith("(MATCH(titres) AGAINST('+\"NOUVEAUX CHIENS\" +(GARDE GARDES GARD)' IN BOOLEAN MODE))",
                                                  'alpha_titre')],
 
             [['rech_titres' => 'Les nouveaux chiens de garde',
@@ -253,6 +255,7 @@ class MoteurRechercheAvanceeTest extends MoteurRechercheTestCase {
 
 
 class MoteurRechercheSimpleTest extends MoteurRechercheTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -274,23 +277,23 @@ class MoteurRechercheSimpleTest extends MoteurRechercheTestCase {
 
             [['expressionRecherche' => '"Gilets jaunes" canard bleu "chapeau rouge"'],
              'nb_mots' => 6,
-             'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\\\"GILETS JAUNES\\\" +\\\"CHAPEAU ROUGE\\\" +(CANARD CANARDS KANAR) +(BLEU BLEUS BL)' IN BOOLEAN MODE)",
+             'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\"GILETS JAUNES\" +\"CHAPEAU ROUGE\" +(CANARD CANARDS KANAR) +(BLEU BLEUS BL)' IN BOOLEAN MODE)",
                                                "MATCH(auteurs) AGAINST('P_CHAPEAU P_ROUGE P_GILETS P_JAUNES P_CANARD P_BLEU') desc, MATCH(titres) AGAINST('P_CHAPEAU P_ROUGE P_GILETS P_JAUNES P_CANARD P_BLEU') desc, MATCH(titres) AGAINST('CHAPEAU ROUGE GILETS JAUNES CANARD BLEU') desc, MATCH(auteurs) AGAINST('CHAPEAU ROUGE GILETS JAUNES CANARD BLEU') desc, date_creation desc")],
 
             [['expressionRecherche' => '"Gilets jaunes"'],
              'nb_mots' => 2,
-             'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\\\"GILETS JAUNES\\\"' IN BOOLEAN MODE)",
+             'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\"GILETS JAUNES\"' IN BOOLEAN MODE)",
                                                "MATCH(auteurs) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('GILETS JAUNES') desc, MATCH(auteurs) AGAINST('GILETS JAUNES') desc, date_creation desc")],
 
             [['expressionRecherche' => 'Gilets jaunes'],
              'nb_mots' => 2,
              'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(GILET GILETS JIL) +(JAUNE JAUNES JON)' IN BOOLEAN MODE)",
-                                               "MATCH(titres, auteurs) AGAINST('\\\"GILETS JAUNES\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"GILETS JAUNES\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('GILETS JAUNES') desc, MATCH(auteurs) AGAINST('GILETS JAUNES') desc, date_creation desc")],
+                                               "MATCH(titres, auteurs) AGAINST('\"GILETS JAUNES\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"GILETS JAUNES\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('P_GILETS P_JAUNES') desc, MATCH(titres) AGAINST('GILETS JAUNES') desc, MATCH(auteurs) AGAINST('GILETS JAUNES') desc, date_creation desc")],
 
             [['expressionRecherche' => 'take the a train'],
              'nb_mots' => 3,
              'req_liste' => $this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(TAKE TAKES TAK) +(THE THES) +(TRAIN TRAINS TRIN)' IN BOOLEAN MODE)",
-                                               "MATCH(titres, auteurs) AGAINST('\\\"TAKE THE A TRAIN\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"TAKE THE A TRAIN\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_TAKE P_THE P_TRAIN') desc, MATCH(titres) AGAINST('P_TAKE P_THE P_TRAIN') desc, MATCH(titres) AGAINST('TAKE THE TRAIN') desc, MATCH(auteurs) AGAINST('TAKE THE TRAIN') desc, date_creation desc")],
+                                               "MATCH(titres, auteurs) AGAINST('\"TAKE THE A TRAIN\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"TAKE THE A TRAIN\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_TAKE P_THE P_TRAIN') desc, MATCH(titres) AGAINST('P_TAKE P_THE P_TRAIN') desc, MATCH(titres) AGAINST('TAKE THE TRAIN') desc, MATCH(auteurs) AGAINST('TAKE THE TRAIN') desc, date_creation desc")],
 
             [['expressionRecherche' => 'Bakounine'],
              'nb_mots' => 1,
@@ -482,9 +485,12 @@ class MoteurRechercheSimpleTest extends MoteurRechercheTestCase {
 
 
 
-class MoteurRechercheSimpleWithOtherIndexFieldsTest extends MoteurRechercheSimpleTest {
+class MoteurRechercheSimpleWithOtherIndexFieldsTest
+  extends MoteurRechercheSimpleTest {
+
   public function setUp() {
     parent::setUp();
+
     Class_CosmoVar::setValueOf('other_index_fields', '330$a');
   }
 
@@ -506,6 +512,7 @@ class MoteurRechercheSimpleWithOtherIndexFieldsTest extends MoteurRechercheSimpl
 
 
 class MoteurRechercheSerieTest extends MoteurRechercheTestCase {
+
   public function expectedSql() {
     return [
             [['expressionRecherche' => 'Geo',
@@ -522,6 +529,7 @@ class MoteurRechercheSerieTest extends MoteurRechercheTestCase {
 
   }
 
+
   /**
    * @dataProvider expectedSql
    * @test
@@ -547,7 +555,9 @@ class MoteurRechercheSerieTest extends MoteurRechercheTestCase {
 
 
 
+
 class MoteurRechercheRebondTest extends MoteurRechercheTestCase {
+
   public function expectedSql() {
     return [
             [['expressionRecherche' => 'pomme',
@@ -647,6 +657,7 @@ class MoteurRechercheRebondTest extends MoteurRechercheTestCase {
 
 
 class MoteurRechercheGuideeWithOneSubCategorieTest extends MoteurRechercheTestCase {
+
   public function expectedSql() {
     return [
             [['rubrique' =>'D6', 'fil' => 'X1'],
@@ -746,6 +757,7 @@ class MoteurRechercheGuideeWithOneSubCategorieTest extends MoteurRechercheTestCa
 
 
 class MoteurRechercheGuideeWithTwoSubCategorieTest extends MoteurRechercheTestCase {
+
   public function expectedSql() {
     return [
             [['facettes' => 'M123-A989',
@@ -785,7 +797,6 @@ class MoteurRechercheGuideeWithTwoSubCategorieTest extends MoteurRechercheTestCa
                  ])
       ->beStrict();
 
-
     $this->criteres_recherche->setParams($params);
 
     $liens = [['libelle' => Zend_Registry::get('translate')->_("Accueil"),
@@ -815,7 +826,6 @@ class MoteurRechercheGuideeWithTwoSubCategorieTest extends MoteurRechercheTestCa
                          'facettes' => 'M123-A989',
                          'bib_select' => '1,2,3']]];
 
-
     $result = $this->moteur_recherche->lancerRecherche($this->criteres_recherche);
     $this->assertEquals($req_liste, $result->getRecordsQuery());
     $this->assertEquals(['fil'=> $fil_ariane,
@@ -829,6 +839,7 @@ class MoteurRechercheGuideeWithTwoSubCategorieTest extends MoteurRechercheTestCa
 
 
 class MoteurRechercheCatalogueTest extends MoteurRechercheTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -918,7 +929,6 @@ class MoteurRechercheCatalogueTest extends MoteurRechercheTestCase {
   }
 
 
-
   /** @test */
   public function domainWithLibraryNoveltyShouldNotRemoveOtherMultifacets() {
     $params = ['id_catalogue' => 89,
@@ -951,12 +961,13 @@ class MoteurRechercheCatalogueTest extends MoteurRechercheTestCase {
 
 
 class MoteurRecherchePhonetixCollisionTest extends MoteurRechercheTestCase {
+
   /** @test */
   public function shouldNotUsePhonetix() {
     $this->mock_sql
       ->whenCalled('fetchAll')
       ->with($this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(JEAN JEANS) +(GENET GENETS) +(PARCOUR PARCOURS PARKOUR)' IN BOOLEAN MODE)",
-                                "MATCH(titres, auteurs) AGAINST('\\\"JEAN GENET PARCOURS\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"JEAN GENET PARCOURS\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_JEAN P_GENET P_PARCOURS') desc, MATCH(titres) AGAINST('P_JEAN P_GENET P_PARCOURS') desc, MATCH(titres) AGAINST('JEAN GENET PARCOURS') desc, MATCH(auteurs) AGAINST('JEAN GENET PARCOURS') desc, date_creation desc"),
+                                "MATCH(titres, auteurs) AGAINST('\"JEAN GENET PARCOURS\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"JEAN GENET PARCOURS\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_JEAN P_GENET P_PARCOURS') desc, MATCH(titres) AGAINST('P_JEAN P_GENET P_PARCOURS') desc, MATCH(titres) AGAINST('JEAN GENET PARCOURS') desc, MATCH(auteurs) AGAINST('JEAN GENET PARCOURS') desc, date_creation desc"),
              true,
              false)
       ->answers( [
@@ -975,11 +986,14 @@ class MoteurRecherchePhonetixCollisionTest extends MoteurRechercheTestCase {
 
 
 
+
 abstract class MoteurRechercheWithCatalogueTestCase extends MoteurRechercheTestCase {
+
   protected $request;
 
   public function setUp() {
     parent::setUp();
+
     Class_Exemplaire::beVolatile();
     Class_NoticeDomain::beVolatile();
     Class_Notice::beVolatile();
@@ -1001,7 +1015,9 @@ abstract class MoteurRechercheWithCatalogueTestCase extends MoteurRechercheTestC
 
 
 
+
 class MoteurRechercheWithCatalogueTest extends MoteurRechercheWithCatalogueTestCase {
+
   /** @test */
   public function requestShouldContainsProfilSettings() {
     Class_Profil::getCurrentProfil()->setSelAnnexe('2;4;1');
@@ -1030,7 +1046,9 @@ class MoteurRechercheWithCatalogueTest extends MoteurRechercheWithCatalogueTestC
 
 
 
-class MoteurRechercheWithCatalogueAndParamsTest extends MoteurRechercheWithCatalogueTestCase {
+class MoteurRechercheWithCatalogueAndParamsTest
+  extends MoteurRechercheWithCatalogueTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1079,7 +1097,10 @@ class MoteurRechercheWithCatalogueAndParamsTest extends MoteurRechercheWithCatal
 
 
 
-class MoteurRechercheWithCatalogueAndUrlParamsTest extends MoteurRechercheWithCatalogueTestCase {
+
+class MoteurRechercheWithCatalogueAndUrlParamsTest
+  extends MoteurRechercheWithCatalogueTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1119,9 +1140,13 @@ class MoteurRechercheWithCatalogueAndUrlParamsTest extends MoteurRechercheWithCa
 
 
 
-class MoteurRechercheWithCatalogueWithNoSettingsAndUrlParamsTest extends MoteurRechercheWithCatalogueTestCase {
+
+class MoteurRechercheWithCatalogueWithNoSettingsAndUrlParamsTest
+  extends MoteurRechercheWithCatalogueTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_Profil::getCurrentProfil()->setSelAnnexe('');
     Class_MoteurRecherche::setTimeSource(new TimeSourceForTest('2014-12-23 09:00:00'));
 
@@ -1166,11 +1191,14 @@ class MoteurRechercheWithCatalogueWithNoSettingsAndUrlParamsTest extends MoteurR
 
 
 
+
 class MoteurRechercheExtendingTest extends MoteurRechercheTestCase {
+
   protected $_engine, $_extension_sql;
 
   public function setUp() {
     parent::setUp();
+
     $this->mock_sql
       ->whenCalled('fetchOne')
       ->answers(0)
@@ -1180,7 +1208,7 @@ class MoteurRechercheExtendingTest extends MoteurRechercheTestCase {
 
       ->whenCalled('fetchAll')
       ->with($this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(VIE VIES) +(GEEK GEEKS JEK)' IN BOOLEAN MODE)",
-                                "MATCH(titres, auteurs) AGAINST('\\\"LA VIE DES GEEKS\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"LA VIE DES GEEKS\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('VIE GEEKS') desc, MATCH(auteurs) AGAINST('VIE GEEKS') desc, date_creation desc"),
+                                "MATCH(titres, auteurs) AGAINST('\"LA VIE DES GEEKS\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"LA VIE DES GEEKS\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('VIE GEEKS') desc, MATCH(auteurs) AGAINST('VIE GEEKS') desc, date_creation desc"),
              true,
              false)
       ->answers([])
@@ -1195,7 +1223,7 @@ class MoteurRechercheExtendingTest extends MoteurRechercheTestCase {
     $this->mock_sql
       ->whenCalled('fetchAll')
       ->with($this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('(VIE VIES)  (GEEK GEEKS JEK)')",
-                                "MATCH(titres, auteurs) AGAINST('\\\"LA VIE DES GEEKS\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"LA VIE DES GEEKS\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('VIE GEEKS') desc, MATCH(auteurs) AGAINST('VIE GEEKS') desc, date_creation desc"),
+                                "MATCH(titres, auteurs) AGAINST('\"LA VIE DES GEEKS\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"LA VIE DES GEEKS\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('P_VIE P_GEEKS') desc, MATCH(titres) AGAINST('VIE GEEKS') desc, MATCH(auteurs) AGAINST('VIE GEEKS') desc, date_creation desc"),
              true,
              false)
       ->answers([
@@ -1216,7 +1244,7 @@ class MoteurRechercheExtendingTest extends MoteurRechercheTestCase {
   public function exactsearchWithoutResultShouldNotExtend() {
     $this->mock_sql
       ->whenCalled('fetchAll')
-      ->with($this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\\\"LA VIE DES GEEKS\\\"' IN BOOLEAN MODE)",
+      ->with($this->listSqlWith("MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+\"LA VIE DES GEEKS\"' IN BOOLEAN MODE)",
                                 "MATCH(auteurs) AGAINST('P_LA P_VIE P_DES P_GEEKS') desc, MATCH(titres) AGAINST('P_LA P_VIE P_DES P_GEEKS') desc, MATCH(titres) AGAINST('LA VIE DES GEEKS') desc, MATCH(auteurs) AGAINST('LA VIE DES GEEKS') desc, date_creation desc"),
              true,
              false)
diff --git a/tests/library/Class/Multimedia/LocationTest.php b/tests/library/Class/Multimedia/LocationTest.php
index 88e7de94c7c8fa55ff12a1e402f0bf00d1022ee7..5218e36021fc55516db8a97c82de314cfce4fd88 100644
--- a/tests/library/Class/Multimedia/LocationTest.php
+++ b/tests/library/Class/Multimedia/LocationTest.php
@@ -22,11 +22,13 @@
 
 
 abstract class Multimedia_LocationTestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile=true;
+
   protected $_location;
   protected $_time_source;
 
   public function setUp() {
+    parent::setUp();
+
     $antibe = $this->fixture('Class_Bib',
                              ['id' => 3,
                               'libelle' => 'Bibliothèque Antibes']);
@@ -121,7 +123,9 @@ abstract class Multimedia_LocationTestCase extends ModelTestCase {
 
 
 
+
 class Multimedia_LocationWinterValidityTest extends Multimedia_LocationTestCase {
+
   /** @test */
   public function inWinterMinTimeFor27_10_2016ShouldBe14() {
     $this->assertTimeEquals(strtotime('2016-10-27 14:00:00'),
@@ -145,7 +149,9 @@ class Multimedia_LocationWinterValidityTest extends Multimedia_LocationTestCase
 
 
 
+
 class Multimedia_LocationSimpleTest extends Multimedia_LocationTestCase {
+
   /** @test */
   public function ouvertureMercrediShouldBelongsToBibAntibes() {
     $this->assertEquals('Bibliothèque Antibes',
@@ -191,7 +197,6 @@ class Multimedia_LocationSimpleTest extends Multimedia_LocationTestCase {
   }
 
 
-
   /** @test */
   public function getStartTimesFor8AugAt8Aug15h45ShouldReturnAllHalfHoursFrom_1600_to_1730() {
     $this->_time_source->setTime(strtotime('2012-08-08 15:45'));
@@ -236,4 +241,4 @@ class Multimedia_LocationSimpleTest extends Multimedia_LocationTestCase {
                          '2012-10-03', '2012-10-04'],
                         $this->_location->getHoldableDays());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/NewsletterDispatchTest.php b/tests/library/Class/NewsletterDispatchTest.php
index 1bfc7fbec8fed1afc8104894091c4b496afd8ff0..c72ec975114b4718ef133d4f8e062a3787f2329f 100644
--- a/tests/library/Class/NewsletterDispatchTest.php
+++ b/tests/library/Class/NewsletterDispatchTest.php
@@ -20,11 +20,16 @@
  */
 
 abstract class Class_NewsletterDispatchFixturesTestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchAllByColumn')
+                       ->with('select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null')
+                       ->answers([]));
+
     Class_Systeme_TimeLimit::setInstance(
                                          $this->mock()
                                          ->whenCalled('set')->with(30)->answers(null)
@@ -199,7 +204,7 @@ class Class_NewsletterDispatchWithDisabledUserForNewNewsLetterTest extends Class
 
     $mock_sql = $this->mock()
                      ->whenCalled('fetchAllByColumn')
-                     ->with("select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>\"\" and mail is not null;")
+                     ->with("select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>\"\" and mail is not null")
                      ->answers(['pat@server.com'])
                      ->beStrict();
 
diff --git a/tests/library/Class/NewsletterMailingTest.php b/tests/library/Class/NewsletterMailingTest.php
index ff409e73b5a10a8f933c3379786c1e7926807761..ae0b7e2bd42efbc34826a53e5d1f47aa699ce45a 100644
--- a/tests/library/Class/NewsletterMailingTest.php
+++ b/tests/library/Class/NewsletterMailingTest.php
@@ -25,6 +25,12 @@ abstract class NewsletterMailingTestCase extends ModelTestCase {
   public function setup() {
     parent::setup();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchAllByColumn')
+                       ->with('select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null')
+                       ->answers([]));
+
     $time_source = new TimeSourceForTest('2014-05-23 14:30:00');
     Class_Newsletter::setTimeSource($time_source);
 
@@ -280,30 +286,24 @@ class NewsletterMailingAnimationsSendMailTest extends NewsletterMailingTestCase
 
 
 
-class NewsletterMailingAnimationsSendWithProfilMailTest extends NewsletterMailingTestCase {
+
+class NewsletterMailingWithProfilUnsubscribeLinkTest extends NewsletterMailingTestCase {
   protected function _prepareFixtures() {
-    $this->fixture('Class_AdminVar',
-                   ['id' => 'NEWSLETTER_ID_PROFIL',
-                    'valeur' => '45']);
+    Class_AdminVar::set('NEWSLETTER_ID_PROFIL', '45');
   }
 
 
   /** @test */
   public function bodyTextShouldContainsUnsubscribeLinks() {
-    $this->assertContains('/newsletter/unsubscribe/newsletter/1/id_profil/45/user/2/hash/'
-                          . Class_Newsletter_Template::hashForUser(1,Class_Users::find(2)->getMail()),
+    $this->assertContains('/newsletter/unsubscribe/newsletter/1/id_profil/45/user/2',
                           quoted_printable_decode($this->mails[0]->getBodyText(true)));
-
   }
 
 
   /** @test */
   public function bodyHTMLShouldContainsUnsubscribeLinks() {
-    $this->assertContains(Class_Url::absolute('/newsletter/unsubscribe/newsletter/1/id_profil/45/user/2/hash/'
-                          . Class_Newsletter_Template::hashForUser(1,
-                                                                   Class_Users::find(2)->getMail())),
+    $this->assertContains('/newsletter/unsubscribe/newsletter/1/id_profil/45/user/2',
                           quoted_printable_decode($this->mails[0]->getBodyHTML(true)));
-
   }
 }
 
@@ -431,13 +431,18 @@ class NewsletterMailingConcertsPanierHtmlTest extends NewsletterMailingTestCase
 /** @see http://forge.afi-sa.fr/issues/18661 */
 class NewsletterMailingDedupTest extends ModelTestCase {
   protected
-    $_storm_default_to_volatile = true,
     $_fetch_users_calls = 0,
     $_letter;
 
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchAllByColumn')
+                       ->with('select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null')
+                       ->answers([]));
+
     $this->mock_transport = new MockMailTransport();
     Zend_Mail::setDefaultTransport($this->mock_transport);
 
@@ -450,19 +455,19 @@ class NewsletterMailingDedupTest extends ModelTestCase {
                                          ->beStrict());
     Class_UserGroup::setMemoryCleaner(function() {});
 
-    $this->alcor = $this->fixture('Class_Users',
+    $this->alcor = $this->fixture(Class_Users::class,
                                   ['id' => 120,
                                    'login' => 'alc',
                                    'password' => 'or',
                                    'mail' => 'procyon@centre-de-recherche.fr']);
 
-    $this->actarus = $this->fixture('Class_Users',
+    $this->actarus = $this->fixture(Class_Users::class,
                                     ['id' => 121,
                                      'login' => 'acta',
                                      'password' => 'rus',
                                      'mail' => 'procyon@centre-de-recherche.fr']);
 
-    $this->_letter = $this->fixture('Class_Newsletter',
+    $this->_letter = $this->fixture(Class_Newsletter::class,
                                     ['id' => 23,
                                      'titre' => 'Alerte vega',
                                      'mail_subject' => 'Attention',
@@ -546,6 +551,12 @@ class NewsletterMailingRecordAbsoluteUrlTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchAllByColumn')
+                       ->with('select distinct(bib_admin_users.mail) from bib_admin_users where disable_newsletter=1 and mail<>"" and mail is not null')
+                       ->answers([]));
+
     $this->_xpath = new Storm_Test_XPath();
 
     $time_source = new TimeSourceForTest('2014-05-23 14:30:00');
diff --git a/tests/library/Class/Notice/ClefAlphaTest.php b/tests/library/Class/Notice/ClefAlphaTest.php
index a71e9665abd037da4a410f239df81edbbd550bfe..083a116b0101ad8c2deaf64d5cfa3aca506522ac 100644
--- a/tests/library/Class/Notice/ClefAlphaTest.php
+++ b/tests/library/Class/Notice/ClefAlphaTest.php
@@ -55,6 +55,9 @@ class Notice_ClefAlphaFromStringTest extends ModelTestCase {
 
 
 class Notice_ClefAlphaOnPseudoNoticeTest extends ModelTestCase {
+
+  protected bool $_storm_mock_zend_adapter = false;
+
   public function expectedAlphaKeysForModels() {
     return
       [
diff --git a/tests/library/Class/PanierNoticeTest.php b/tests/library/Class/PanierNoticeTest.php
index 26c56eafb2e05d46f40798566b8359485fbfe5f4..899ca31085f7a7e321e2fec349bf2696ecf97eb7 100644
--- a/tests/library/Class/PanierNoticeTest.php
+++ b/tests/library/Class/PanierNoticeTest.php
@@ -20,8 +20,8 @@
  */
 
 class PanierNoticeLoaderTestFindAllBelongsToAdmin extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = false;
+  protected $_storm_default_to_volatile = false;
+  protected bool $_storm_mock_zend_adapter = false;
 
   public function setUp() {
     parent::setUp();
diff --git a/tests/library/Class/ProfilI18nStringExtractorTest.php b/tests/library/Class/ProfilI18nStringExtractorTest.php
index c8f45687864a24ad1b47ec46f3289866af6d9618..4b6ec06bf52b4b89826c0dbb5c66385fe57a872f 100644
--- a/tests/library/Class/ProfilI18nStringExtractorTest.php
+++ b/tests/library/Class/ProfilI18nStringExtractorTest.php
@@ -18,8 +18,8 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
+
 abstract class I18nStringExtractorTestCase extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
   /** @var Class_Profil_I18nStringExtractor */
   protected $_extractor;
 
@@ -27,15 +27,20 @@ abstract class I18nStringExtractorTestCase extends ModelTestCase {
   protected $_profil;
 
   protected function setUp() {
+    parent::setUp();
     $this->_extractor = new Class_Profil_I18nStringExtractor();
 
     $this->_profil = Class_Profil::getLoader()
       ->newInstanceWithId(5)
       ->setLibelle('Chatenay');
-  }
 
+    $this->_profil->beCurrentProfil();
+  }
 }
 
+
+
+
 class EmptyI18nStringExtractorTest extends I18nStringExtractorTestCase {
   /**
    * @test
@@ -43,12 +48,12 @@ class EmptyI18nStringExtractorTest extends I18nStringExtractorTestCase {
    */
   public function withNoModelShouldRaiseException() {
     $this->_extractor->extract();
-
   }
-
 }
 
 
+
+
 class ChatenayAccueilI18nStringExtractorTest extends I18nStringExtractorTestCase {
   protected function setUp() {
     parent::setUp();
@@ -56,64 +61,77 @@ class ChatenayAccueilI18nStringExtractorTest extends I18nStringExtractorTestCase
     $this->_extractor->setModel($this->_profil);
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteNewsTitrePourVenir() {
     $this->assertContains('Pour venir', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteSitoTitreSitotheque() {
     $this->assertContains('Sitothèque', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteSitoTitreSitothequeOnce() {
     $actual = $this->_extractor->extract();
     $this->assertEquals(1, count(array_keys($actual, 'Sitothèque')));
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteRechercheTitreRechercher() {
     $this->assertContains('Rechercher', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteRechercheMessagePourTrouverEtc() {
     $this->assertContains('Pour trouver des résultats, saisissez des termes', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteRechercheExemple() {
     $this->assertContains('par exemple : toto à la plage, pomme, harry potter', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteCarteZonesTitreRechercherUneBib() {
     $this->assertContains('Rechercher une bibliothèque', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteCarteZoneMessageMessageSousLaCarte() {
     $this->assertContains('Message sous la carte', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteLoginTitreSeConnecter() {
     $this->assertContains('Se connecter', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteLoginIdentifiantVotreIdentifiant() {
     $this->assertContains('Votre identifiant', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsBoiteLoginMotDePasseVotreMotDePasse() {
     $this->assertContains('Votre mot de passe', $this->_extractor->extract());
   }
-
 }
 
+
+
+
 class ChatenayMenusI18nStringExtractorTest extends I18nStringExtractorTestCase {
   protected function setUp() {
     parent::setUp();
@@ -122,15 +140,12 @@ class ChatenayMenusI18nStringExtractorTest extends I18nStringExtractorTestCase {
   }
 
 
-
-
   protected function tearDown() {
     $this->_profil->setTranslator(null);
     parent::tearDown();
   }
 
 
-
   /** @test */
   public function withAnotherTranslatorExtractShouldGetOriginalText() {
     $englishTranslator = $this->createMock('MockTranslator', array('translate'));
@@ -148,113 +163,136 @@ class ChatenayMenusI18nStringExtractorTest extends I18nStringExtractorTestCase {
     $this->assertContains('Accueil', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalMenuLibelleAnimations() {
     $this->assertContains('Animations', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalMenuLibelleLienVersUnSite() {
     $this->assertContains('Lien vers un site', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalMenuLibelleInfosPratiques() {
     $this->assertContains('Infos pratiques', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalSubmenuLibelleDernieresCritiques() {
     $this->assertContains('Dernières critiques', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalSubmenuLibelleDerniersArticles() {
     $this->assertContains('Derniers articles', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsHorizontalSubmenuLibelleAlbumPhoto() {
     $this->assertContains('Album photo', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsMenuLibelleQuoiDeNeuf() {
     $this->assertContains('Quoi de neuf ?', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsMenuLibelleLivresAdultes() {
     $this->assertContains('Livres adultes', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsSubmenuLibelleRomans() {
     $this->assertContains('Romans', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsSubmenuPreferenceTitreNosNouveautesRomansAdultes() {
     $this->assertContains('Nos nouveautés romans adultes', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsSubmenuLibellePolar() {
     $this->assertContains('Polar', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsSubmenuPreferenceTitreNosNouveautesEnPolar() {
     $this->assertContains('Nos nouveautés en polar', $this->_extractor->extract());
   }
-
 }
 
+
+
+
 class ChatenayModulesI18nStringExtractorTest extends I18nStringExtractorTestCase {
   protected function setUp() {
     parent::setUp();
+
     $this->_profil->setCfgModules(I18nStringExtractorTestFixtures::createChatenayModulesConfiguration());
     $this->_extractor->setModel($this->_profil);
-
   }
 
+
   /** @test */
   public function extractShouldNotContainsEmptyString() {
     $this->assertNotContains('', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsRechercheFacetteMessageAffiner() {
     $this->assertContains('Affiner le résultat', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsRechercheTagsMessageElargir() {
     $this->assertContains('Elargir la recherche', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsViewnoticeOngletTitreNoticeDetaillee() {
     $this->assertContains('Notice détaillée', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsViewnoticeOngletTitreAvis() {
     $this->assertContains('Avis', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsCmsFilArianeCalendrierAriane() {
     $this->assertContains('Calendrier ariane', $this->_extractor->extract());
   }
 
+
   /** @test */
   public function extractShouldContainsCmsFilArianeArticleRecentsAriane() {
     $this->assertContains('Articles récents ariane', $this->_extractor->extract());
   }
-
 }
 
+
+
+
 class I18nStringExtractorTestFixtures {
   public static function createChatenayModulesConfiguration() {
     return array(
@@ -503,7 +541,4 @@ class I18nStringExtractorTestFixtures {
         )
     );
   }
-
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/ProfilTest.php b/tests/library/Class/ProfilTest.php
index a7c7306ff7d3a9186a83117b9e61d7fc34f420ed..fcd10659bbc17a00e9a214dc77e990efd364b8ac 100644
--- a/tests/library/Class/ProfilTest.php
+++ b/tests/library/Class/ProfilTest.php
@@ -20,7 +20,6 @@
  */
 
 class ProfilVideTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setup();
@@ -52,15 +51,15 @@ class ProfilVideTest extends ModelTestCase {
 
   /** @test */
   public function getModuleAccueilShouldReturnEmptyArray() {
-      $this->assertEmpty($this->profil_vide->getCfgAccueilAsArray()['modules']);
+    $this->assertEmpty($this->profil_vide->getCfgAccueilAsArray()['modules']);
   }
 
 
   /** @test */
   public function profilZonesTitreShouldReturn200_E_H_I() {
     $this->assertEquals(
-      ['200$e', '200$h', '200$i'],
-      $this->profil_vide->getZonesTitre());
+                        ['200$e', '200$h', '200$i'],
+                        $this->profil_vide->getZonesTitre());
   }
 
 
@@ -72,9 +71,8 @@ class ProfilVideTest extends ModelTestCase {
 
 
 
+
 class ProfilJeunesseAstrolabeTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -84,7 +82,7 @@ class ProfilJeunesseAstrolabeTest extends ModelTestCase {
                                           'preferences' => []]],
                     'options' => []];
 
-    $this->profil_astro = $this->fixture('Class_Profil',
+    $this->profil_astro = $this->fixture(Class_Profil::class,
                                          ['id' => 7,
                                           'id_site' => 12,
                                           'libelle' => 'Jeunesse',
@@ -93,11 +91,13 @@ class ProfilJeunesseAstrolabeTest extends ModelTestCase {
                                           'header_css' => 'afi-opac3/userfiles/jeunesse.css',
                                           'cfg_accueil' => $cfg_accueil]);
 
-    $this->bib_melun = $this->fixture('Class_Bib',
+    $this->bib_melun = $this->fixture(Class_Bib::class,
                                       ['id' => 12,
                                        'libelle' => 'Melun']);
 
-    $this->onLoaderOfModel('Class_Profil')
+    Class_Profil::setCurrentProfil($this->profil_astro);
+
+    $this->onLoaderOfModel(Class_Profil::class)
          ->whenCalled('findAllBy')
          ->answers([]);
 
@@ -310,7 +310,7 @@ class ProfilJeunesseAstrolabeTest extends ModelTestCase {
 
 
 class PageBdAstrolabeTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
+
   protected $page_bd;
   protected $profil_astro;
   protected $bib_melun;
@@ -345,6 +345,7 @@ class PageBdAstrolabeTest extends ModelTestCase {
          ->answers([]);
 
     Class_Profil::setFileWriter($this->mock()->whenCalled('fileExists')->answers(true));
+    Class_Profil::setCurrentProfil($this->profil_astro);
 
     $this->page_bd = $this->fixture('Class_Profil',
                                     ['id' => 6,
@@ -363,21 +364,25 @@ class PageBdAstrolabeTest extends ModelTestCase {
     $this->assertEquals($this->page_bd->getParentProfil()->getHeaderCss(),$this->profil_astro->getHeaderCss());
   }
 
+
   /** @test **/
   public function pageCssBDShouldBeBdJeunnesseCSS () {
     $this->assertEquals($this->page_bd->getPageCss(), 'afi-opac3/userfiles/bd_jeunesse.css');
   }
 
+
   /** @test **/
   public function useParentCssShouldReturnTrue() {
     $this->assertTrue($this->page_bd->getUseParentCss()==1);
   }
 
+
   /** @test **/
   public function useParentCssShouldBeInCfgAccueil() {
     $this->assertEquals($this->page_bd->getUseParentCss(), $this->page_bd->getCfgAccueilAsArray()['use_parent_css']);
   }
 
+
   /** @test **/
   public function pageCssShouldBeInCfgAccueil() {
     $this->assertEquals($this->page_bd->getPageCss(), $this->page_bd->getCfgAccueilAsArray()['page_css']);
@@ -396,12 +401,13 @@ class PageBdAstrolabeTest extends ModelTestCase {
     $this->assertEquals('Connection',
                         $this->page_bd->getModuleAccueilPreferencesByType('LOGIN')['titre']);
   }
-
 }
 
 
 
+
 abstract class ProfilAdulteChatenayTestCase extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
     $cfg_accueil = array('modules' => array('1' => array('division' => '4',
@@ -437,6 +443,7 @@ abstract class ProfilAdulteChatenayTestCase extends ModelTestCase {
 
 
 class ProfilAdulteChatenayTest extends ProfilAdulteChatenayTestCase  {
+
   public function setUp() {
     parent::setUp();
 
@@ -446,10 +453,13 @@ class ProfilAdulteChatenayTest extends ProfilAdulteChatenayTestCase  {
                     'ville' => 'chatenay',
                     'rewrite_url' => 'chatenay']);
 
-    $this->fixture('Class_Profil',
-                   ['id' => 1,
-                    'parent_id' => null,
-                    'libelle' => 'Portail']);
+    $current_profil = $this->fixture(Class_Profil::class,
+                                     ['id' => 1]);
+    Class_Profil::setCurrentProfil($current_profil);
+
+    $current_profil
+      ->setParentId(null)
+      ->setLibelle('Portail');
 
     $cfg_accueil_histoire = array('modules' => array(
                                                      '4' => array('division' => '1',
@@ -491,6 +501,7 @@ class ProfilAdulteChatenayTest extends ProfilAdulteChatenayTestCase  {
     $this->assertEquals('/public/opac/skins/original/',$this->page_politique->getPathTheme());
   }
 
+
   /** @test */
   public function hasSubPofilsShouldReturnsTrue() {
     $this->assertTrue($this->profil->hasSubProfils());
@@ -768,7 +779,6 @@ class ProfilAdulteChatenayTest extends ProfilAdulteChatenayTestCase  {
   }
 
 
-
   /** @test */
   public function twoPagesWithParentProfilWithoutRewriteUrlAndSameUrlShouldNotBeValid() {
     $this->fixture('Class_Profil', ['id' => 345,
@@ -904,7 +914,9 @@ class ProfilAdulteChatenayTest extends ProfilAdulteChatenayTestCase  {
 
 
 
-class ProfilAdulteChatenayMoveModuleMoveNEWSFromDiv1PosZeroToDivFourPositionOneTest extends ProfilAdulteChatenayTestCase {
+class ProfilAdulteChatenayMoveModuleMoveNEWSFromDiv1PosZeroToDivFourPositionOneTest
+  extends ProfilAdulteChatenayTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->profil->moveModuleOldDivPosNewDivPos(1, 0, 4, 1);
@@ -933,7 +945,9 @@ class ProfilAdulteChatenayMoveModuleMoveNEWSFromDiv1PosZeroToDivFourPositionOneT
 
 
 
-class ProfilAdulteChatenayMoveModuleLOGINToFirstPosInDivFourTest extends ProfilAdulteChatenayTestCase {
+class ProfilAdulteChatenayMoveModuleLOGINToFirstPosInDivFourTest
+  extends ProfilAdulteChatenayTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->profil->moveModuleOldDivPosNewDivPos(4, 1, 4, 0);
@@ -962,7 +976,9 @@ class ProfilAdulteChatenayMoveModuleLOGINToFirstPosInDivFourTest extends ProfilA
 
 
 
-class ProfilAdulteChatenayMoveModuleRECH_SIMPLEToSecondPosInDivFourTest extends ProfilAdulteChatenayTestCase {
+class ProfilAdulteChatenayMoveModuleRECH_SIMPLEToSecondPosInDivFourTest
+  extends ProfilAdulteChatenayTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->profil->moveModuleOldDivPosNewDivPos(4, 0, 4, 1);
@@ -991,7 +1007,9 @@ class ProfilAdulteChatenayMoveModuleRECH_SIMPLEToSecondPosInDivFourTest extends
 
 
 
-class ProfilAdulteChatenayMoveModuleLOGINToLastPosInDivOneTest extends ProfilAdulteChatenayTestCase {
+class ProfilAdulteChatenayMoveModuleLOGINToLastPosInDivOneTest
+  extends ProfilAdulteChatenayTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->profil->moveModuleOldDivPosNewDivPos(4, 1, 1, 1);
@@ -1026,7 +1044,10 @@ class ProfilEvenementsTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
 
-    $this->profil = new Class_Profil();
+    $this->profil = $this->fixture(Class_Profil::class,
+                                   ['id' => 23]);
+
+    Class_Profil::setCurrentProfil($this->profil);
 
     $this->profil
       ->setTitreSite(null)
@@ -1098,14 +1119,15 @@ class ProfilEvenementsTest extends ModelTestCase {
 }
 
 
+
+
 class ProfilPesseyValandryTranslatedTest extends ModelTestCase {
+
   /**
    * @var Class_Profil
    */
   private $_profil;
 
-  protected $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setup();
 
@@ -1128,9 +1150,9 @@ class ProfilPesseyValandryTranslatedTest extends ModelTestCase {
   public function getCfgMenusAsArrayShouldCallTranslator() {
     $mockTranslator = $this->_getMockTranslator();
     $mockTranslator->expects($this->once())
-                  ->method('translate')
-                  ->with(ProfilPesseyValandryFixtures::createMenusConfiguration(), 'Menus')
-                  ;
+                   ->method('translate')
+                   ->with(ProfilPesseyValandryFixtures::createMenusConfiguration(), 'Menus')
+      ;
 
     $this->_profil->setTranslator($mockTranslator);
     $this->_profil->getCfgMenusAsArray();
@@ -1155,9 +1177,9 @@ class ProfilPesseyValandryTranslatedTest extends ModelTestCase {
   public function getCfgAccueilAsArrayShouldCallTranslator() {
     $mockTranslator = $this->_getMockTranslator();
     $mockTranslator->expects($this->once())
-                        ->method('translate')
-                        ->with(ProfilPesseyValandryFixtures::createAccueilConfiguration(), 'Accueil')
-                        ;
+                   ->method('translate')
+                   ->with(ProfilPesseyValandryFixtures::createAccueilConfiguration(), 'Accueil')
+      ;
 
     $this->_profil->setTranslator($mockTranslator);
     $this->_profil->getCfgAccueilAsArray();
@@ -1181,9 +1203,9 @@ class ProfilPesseyValandryTranslatedTest extends ModelTestCase {
   public function getCfgModulesAsArrayShouldCallTranslator() {
     $mockTranslator = $this->_getMockTranslator();
     $mockTranslator->expects($this->once())
-                        ->method('translate')
-                        ->with(ProfilPesseyValandryFixtures::createModulesConfiguration(), 'Modules')
-                        ;
+                   ->method('translate')
+                   ->with(ProfilPesseyValandryFixtures::createModulesConfiguration(), 'Modules')
+      ;
 
     $this->_profil->setTranslator($mockTranslator);
     $this->_profil->getCfgModulesAsArray();
@@ -1199,9 +1221,11 @@ class ProfilPesseyValandryTranslatedTest extends ModelTestCase {
                 ->getMock()
       ;
   }
-
 }
 
+
+
+
 class ProfilPesseyValandryFixtures {
 
   public static function createModulesConfiguration() {
@@ -1214,12 +1238,12 @@ class ProfilPesseyValandryFixtures {
 
   public static function createMenusConfiguration() {
     return array(
-      'H' => array(
-        'libelle' => 'Menu horizontal',
-        'picto' => 'vide.gif',
-        'menus' => array(
-        ),
-      ),
+                 'H' => array(
+                              'libelle' => 'Menu horizontal',
+                              'picto' => 'vide.gif',
+                              'menus' => array(
+                              ),
+                 ),
     );
 
   }
@@ -1230,8 +1254,8 @@ class ProfilPesseyValandryFixtures {
 
   public static function createAccueilConfiguration() {
     return [ 'page_css' => null,
-             'use_parent_css' => true,
-             'dummy_accueil' => ['all' => 'the configurations']];
+            'use_parent_css' => true,
+            'dummy_accueil' => ['all' => 'the configurations']];
   }
 }
 
@@ -1239,15 +1263,13 @@ class ProfilPesseyValandryFixtures {
 
 
 class ProfilPortailTest extends ModelTestCase {
+
   /** @var Class_Profil */
   protected $_profil;
 
   /** @var Storm_Test_ObjectWrapper */
   protected $_wrapper;
 
-  protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
@@ -1282,9 +1304,8 @@ class ProfilPortailTest extends ModelTestCase {
 
 
 class ProfilWithPagesCopyTest extends ModelTestCase {
-  protected
-    $_clone,
-    $_storm_default_to_volatile = true;
+
+  protected $_clone;
 
   public function setUp() {
     parent::setUp();
@@ -1399,16 +1420,16 @@ class ProfilWithPagesCopyTest extends ModelTestCase {
 
 
 
+
 class ProfilHeaderImgAccessTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
 
     $this->file_system = $this->mock()
-      ->whenCalled('opendir')->answers(null)
-      ->whenCalled('readdir')->answers(false)
-      ->whenCalled('closedir')->answers(null);
+                              ->whenCalled('opendir')->answers(null)
+                              ->whenCalled('readdir')->answers(false)
+                              ->whenCalled('closedir')->answers(null);
 
     Class_Profil::setFileSystem($this->file_system);
     $this->profil = $this->fixture('Class_Profil',
@@ -1450,16 +1471,21 @@ class ProfilHeaderImgAccessTest extends ModelTestCase {
 
 
 
-abstract class ProfilUpdateConfigAccueilOnModuleInBannerTestCase extends ModelTestCase {
-  protected
-    $_profil,
-    $_storm_default_to_volatile = true;
+
+abstract class ProfilUpdateConfigAccueilOnModuleInBannerTestCase
+  extends ModelTestCase {
+
+  protected $_profil;
 
   public function setUp() {
     parent::setUp();
 
-    $this->_profil = $this->fixture('Class_Profil', ['id' => 1])
-      ->setBoiteLoginInBanniere(true);
+    $this->_profil = $this->fixture(Class_Profil::class,
+                                    ['id' => 1]);
+
+    Class_Profil::setCurrentProfil($this->_profil);
+
+    $this->_profil->setBoiteLoginInBanniere(true);
 
     $this->prepareProfile();
 
@@ -1483,19 +1509,22 @@ abstract class ProfilUpdateConfigAccueilOnModuleInBannerTestCase extends ModelTe
 
 
 class ProfilUpdateConfigAccueilOnModuleInBannerTest
-extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
+  extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
+
   /** @test */
   public function profilRedirectShouldBeUpdated() {
     $this->assertEquals(
-      123,
-      $this->getPreferenceOfModule($this->_profil, 1, 'LOGIN', 'profil_redirect'));
+                        123,
+                        $this->getPreferenceOfModule($this->_profil, 1, 'LOGIN', 'profil_redirect'));
   }
 }
 
 
 
+
 class ProfilUpdateConfigAccueilOnModuleInBannerWithParentTest
-extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
+  extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
+
   protected function prepareProfile() {
     $this->_profil->setParentProfil($this->fixture('Class_Profil', ['id' => 2])
                                     ->setBoiteLoginInBanniere(true));
@@ -1505,25 +1534,30 @@ extends ProfilUpdateConfigAccueilOnModuleInBannerTestCase {
   /** @test */
   public function profilRedirectShouldBeUpdatedInParent() {
     $this->assertEquals(
-      123,
-      $this->getPreferenceOfModule($this->_profil->getParentProfil(), 1, 'LOGIN', 'profil_redirect'));
+                        123,
+                        $this->getPreferenceOfModule($this->_profil->getParentProfil(), 1, 'LOGIN', 'profil_redirect'));
   }
 }
 
 
 
+
 class ProfilGetModuleAccueilConfigTest extends ModelTestCase {
+
   protected
     $_profil,
     $_parent,
-    $_module_config,
-    $_storm_default_to_volatile = true;
+    $_module_config;
 
   public function setUp() {
     parent::setUp();
 
-    $this->_parent = $this->fixture('Class_Profil', ['id' => 1])
-      ->setBoiteLoginInBanniere(true);
+    $this->_parent = $this->fixture(Class_Profil::class,
+                                    ['id' => 1]);
+
+    Class_Profil::setCurrentProfil($this->_parent);
+
+    $this->_parent->setBoiteLoginInBanniere(true);
 
     $this->_profil = $this->fixture('Class_Profil', ['id' => 2,
                                                      'parent_profil' => $this->_parent]);
@@ -1546,8 +1580,8 @@ class ProfilGetModuleAccueilConfigTest extends ModelTestCase {
 
 
 
+
 class ProfilPreferenceAuthRegisterTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -1590,8 +1624,8 @@ class ProfilPreferenceAuthRegisterTest extends ModelTestCase {
 
 
 
+
 class ProfilIsPortalTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   /** @test */
   public function profilWithIdOneIntShouldBePortal() {
@@ -1615,4 +1649,4 @@ class ProfilIsPortalTest extends ModelTestCase {
   public function profilWithIdSevenStringShouldNotBePortal() {
     $this->assertFalse($this->fixture('Class_Profil', ['id' => '7'])->isPortail());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/ScriptLoaderTest.php b/tests/library/Class/ScriptLoaderTest.php
index d2f6d457e9fbb6069fa773c685824c90ac9acba3..597b3b776609fdc4d9dfbbe432479b11345ec12f 100644
--- a/tests/library/Class/ScriptLoaderTest.php
+++ b/tests/library/Class/ScriptLoaderTest.php
@@ -19,24 +19,36 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
-abstract class AbstractScriptLoaderTestCase extends PHPUnit_Framework_TestCase {
+
+abstract class AbstractScriptLoaderTestCase extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->_old_cfg = Zend_Registry::get('cfg');
     $this->cfg = new Zend_Config($this->_old_cfg->toArray(), true);
     Zend_Registry::set('cfg', $this->cfg);
     Class_ScriptLoader::resetInstance();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
   }
 
 
   public function tearDown() {
     Zend_Registry::set('cfg', $this->_old_cfg);
+    parent::tearDown();
   }
 }
 
 
+
+
 class ScriptLoaderAmberTest extends AbstractScriptLoaderTestCase {
+
   /** @test */
-  function withoutConfigAmberShouldLoadDeploy() {
+  public function withoutConfigAmberShouldLoadDeploy() {
     $this->cfg->amber = null;
     Class_ScriptLoader::getInstance()->loadAmber();
     $this->assertContains('"deploy":true',
@@ -45,7 +57,7 @@ class ScriptLoaderAmberTest extends AbstractScriptLoaderTestCase {
 
 
   /** @test */
-  function callingLoadAmberTwiceShouldResultInOneLoad() {
+  public function callingLoadAmberTwiceShouldResultInOneLoad() {
     $this->cfg->amber = null;
     Class_ScriptLoader::getInstance()->loadAmber()->loadAmber();
     $this->assertEquals(1, substr_count(Class_ScriptLoader::getInstance()->html(), 'amber.js'));
@@ -53,8 +65,8 @@ class ScriptLoaderAmberTest extends AbstractScriptLoaderTestCase {
 
 
   /** @test */
-  function withConfigDeployFalseShouldLoadDevelopment() {
-    foreach (array(false, 'false', 0, '0') as $value) {
+  public function withConfigDeployFalseShouldLoadDevelopment() {
+    foreach ([false, 'false', 0, '0'] as $value) {
       $this->cfg->amber = new Zend_Config(array('deploy' => $value));
 
       Class_ScriptLoader::resetInstance();
@@ -68,8 +80,8 @@ class ScriptLoaderAmberTest extends AbstractScriptLoaderTestCase {
 
 
   /** @test */
-  function withConfigDeployTrueShouldLoadDeploy() {
-    foreach (array(true, 'true', 1, 'zork') as $value) {
+  public function withConfigDeployTrueShouldLoadDeploy() {
+    foreach ([true, 'true', 1, 'zork'] as $value) {
       $this->cfg->amber = new Zend_Config(array('deploy' => $value));
 
       Class_ScriptLoader::resetInstance();
@@ -83,32 +95,33 @@ class ScriptLoaderAmberTest extends AbstractScriptLoaderTestCase {
 
 
   /** @test */
-  function withoutCallingLoadAmberShouldNotLoadIt() {
-      $this->assertNotContains('loadAmber',
-                               Class_ScriptLoader::getInstance()->html());
+  public function withoutCallingLoadAmberShouldNotLoadIt() {
+    $this->assertNotContains('loadAmber',
+                             Class_ScriptLoader::getInstance()->html());
   }
 }
 
 
 
+
 class ScriptLoaderAmberDevelopmentModeTest extends AbstractScriptLoaderTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->cfg->amber = new Zend_Config(array('deploy' => false));
-    Class_ScriptLoader::resetInstance();
     Class_ScriptLoader::getInstance()->loadAmber();
   }
 
 
   /** @test */
-  function commitPathJsShouldBeAmberCommitJs() {
+  public function commitPathJsShouldBeAmberCommitJs() {
     $this->assertContains('"' . BASE_URL . '/admin/amber/commitJs"',
                           Class_ScriptLoader::getInstance()->html());
   }
 
 
   /** @test */
-  function commitPathStShouldBeAmberCommitSt() {
+  public function commitPathStShouldBeAmberCommitSt() {
     $this->assertContains('"' . BASE_URL . '/admin/amber/commitSt"',
                           Class_ScriptLoader::getInstance()->html());
   }
@@ -116,16 +129,19 @@ class ScriptLoaderAmberDevelopmentModeTest extends AbstractScriptLoaderTestCase
 
 
 
+
 class ScriptLoaderJsAndCssTest extends PHPUnit_Framework_TestCase {
+
   protected $html;
 
   public function setUp() {
     Class_ScriptLoader::resetInstance();
     $this->html = Class_ScriptLoader::getInstance()
-      ->addOPACStyleSheet('blanc_sur_noir', array('rel' => 'alternate stylesheet',
-                                                  'title' => 'Blanc sur noir'))
+      ->addOPACStyleSheet('blanc_sur_noir',
+                          ['rel' => 'alternate stylesheet',
+                           'title' => 'Blanc sur noir'])
       ->addAdminScript('toolbar')
-      ->addOPACStyleSheets(array('global', 'print'))
+      ->addOPACStyleSheets(['global', 'print'])
       ->addInlineStyle('body {font-size: 10px}')
       ->addStyleSheet('public/css/nuages.css')
       ->addScript('opac/cycle.min')
@@ -135,64 +151,65 @@ class ScriptLoaderJsAndCssTest extends PHPUnit_Framework_TestCase {
   }
 
 
-  public function assertXpath($path, $message = '') {
+  public function assertXpath($path) {
     $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
-    if (!$constraint->evaluate($this->html, __FUNCTION__)) {
-            $constraint->fail($path, $message);
-    }
+    if (!$constraint->evaluate($this->html, __FUNCTION__))
+      $constraint->fail($path, $this->html);
   }
 
 
   /** @test */
-  function shouldContainCSSBlancSurNoir() {
+  public function shouldContainCSSBlancSurNoir() {
     $this->assertXPath('//link[@type="text/css"][contains(@href, "public/opac/css/blanc_sur_noir.css")][@rel="alternate stylesheet"]');
   }
 
 
   /** @test */
-  function shouldContainCSSGlobal() {
+  public function shouldContainCSSGlobal() {
     $this->assertXPath('//link[@type="text/css"][contains(@href, "public/opac/css/global.css")][@rel="stylesheet"]');
   }
 
 
   /** @test */
-  function shouldNotContainNuagesCssCss() {
-    $this->assertXPath('//link[@type="text/css"][contains(@href, "public/css/nuages.css")]', $this->html);
+  public function shouldNotContainNuagesCssCss() {
+    $this->assertXPath('//link[@type="text/css"][contains(@href, "public/css/nuages.css")]');
   }
 
 
   /** @test */
-  function shouldContainInlineStyle() {
-    $this->assertContains('<style type="text/css">body {font-size: 10px}</style>', $this->html);
+  public function shouldContainInlineStyle() {
+    $this->assertContains('<style type="text/css">body {font-size: 10px}</style>',
+                          $this->html);
   }
 
 
   /** @test */
-  function javascriptsShouldBeAfterCss() {
-    $this->assertContains('<style type="text/css">body {font-size: 10px}</style>', $this->html);
+  public function javascriptsShouldBeAfterCss() {
+    $this->assertContains('<style type="text/css">body {font-size: 10px}</style>',
+                          $this->html);
   }
 
 
   /** @test */
-  function jsShouldContainsCylcleDotJs() {
+  public function jsShouldContainsCylcleDotJs() {
     $this->assertContains('opac/cycle.min.js', $this->html);
   }
 
 
   /** @test */
-  function jsShouldContainsSlidesDotJs() {
+  public function jsShouldContainsSlidesDotJs() {
     $this->assertContains('opac/slides.min.js', $this->html);
   }
 
 
   /** @test */
-  function jsShouldContainsAlertInJQueryReady() {
+  public function jsShouldContainsAlertInJQueryReady() {
     $this->assertContains('$(function(){alert()});', $this->html);
   }
 
 
   /** @test */
-  function inAjaxModeReadyScriptsShouldBeInSetTimeoutFunction() {
+  public function inAjaxModeReadyScriptsShouldBeInSetTimeoutFunction() {
     $this->html = Class_ScriptLoader::getInstance()->beAjax()->html();
     $this->assertContains('setTimeout(function(){alert()}, 5);', $this->html);
   }
@@ -202,6 +219,7 @@ class ScriptLoaderJsAndCssTest extends PHPUnit_Framework_TestCase {
 
 
 class ScriptLoaderVersionHashTest extends PHPUnit_Framework_TestCase {
+
   protected $_html;
   protected $_versionHash;
 
@@ -240,19 +258,32 @@ class ScriptLoaderVersionHashTest extends PHPUnit_Framework_TestCase {
 
 
 
+
 class ScriptLoaderNotificationsBarTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
+    Class_Profil::setCurrentProfil($this->fixture(Class_Profil::class,
+                                                  ['id' => 23]));
+
     Class_ScriptLoader::resetInstance();
-    $messenger = new ZendAfi_Controller_Action_Helper_FlashMessenger();
-    $messenger->addNotification('First message');
-    $messenger->addNotification('Second message');
-    $messenger->addNotification('Third message', ['display' => 'popup']);
-    $messenger->addNotification('Fourth\'message', ['display' => 'popup']);
-    $messenger->addNotification('Fith\'message', ['display' => 'popup',
-                                                  'actions' => ['/do/this' => 'Do this']]);
+
+    (new ZendAfi_Controller_Action_Helper_FlashMessenger())
+      ->addNotification('First message')
+      ->addNotification('Second message')
+      ->addNotification('Third message',
+                        ['display' => 'popup'])
+      ->addNotification('Fourth\'message',
+                        ['display' => 'popup'])
+      ->addNotification('Fith\'message',
+                        ['display' => 'popup',
+                         'actions' => ['/do/this' => 'Do this']]);
 
     ZendAfi_Controller_Action_Helper_FlashMessenger::reset();
-    $this->_html = Class_ScriptLoader::getInstance()->showNotifications()->html();
+    $this->_html = Class_ScriptLoader::getInstance()
+      ->showNotifications()
+      ->html();
   }
 
 
@@ -276,5 +307,3 @@ class ScriptLoaderNotificationsBarTest extends ModelTestCase {
                           $this->_html);
   }
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/SitothequeTest.php b/tests/library/Class/SitothequeTest.php
index 686b80aa3cf375f96d83f879b800f61fdacbd832..9467e3234d785cc4cb47ed8d4d295c24ff32398f 100644
--- a/tests/library/Class/SitothequeTest.php
+++ b/tests/library/Class/SitothequeTest.php
@@ -41,12 +41,15 @@ class SitothequeSitesFromIdsAndCategoriesTest extends ModelTestCase {
 
 
 class SitothequeIndexAllTest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('query')
+                       ->with('update notices set facettes = clean_spaces(REGEXP_REPLACE(facettes, "\\\\bHCCCC0001\\\\b", "")) where type_doc not in ("8", "9", "10") and type=1 and match(facettes) against("+HCCCC0001" in boolean mode)')
+                       ->answers(0));
+
     $this->fixture('Class_Catalogue',
                    ['id' => 1,
                     'libelle' => 'My domain']);
@@ -118,6 +121,7 @@ class SitothequeIndexAllTest extends ModelTestCase {
 
 
 
+
 class SitothequeUnindexTest extends ModelTestCase {
   protected $_storm_default_to_volatile = true;
 
@@ -150,4 +154,4 @@ class SitothequeUnindexTest extends ModelTestCase {
   public function sitoRecordShouldNotBeLinkedToMyDomainNews() {
     $this->assertNull(Class_NoticeDomain::findFirstBy(['domain_id' => 2]));
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/Systeme/ModulesAccueilTest.php b/tests/library/Class/Systeme/ModulesAccueilTest.php
index 3edcca196a39192735d08e2842f90081e8dc87e4..48fa70d567009a37ca23e44aacd022b2531abb78 100644
--- a/tests/library/Class/Systeme/ModulesAccueilTest.php
+++ b/tests/library/Class/Systeme/ModulesAccueilTest.php
@@ -16,42 +16,48 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
-class ModulesAccueilTest extends PHPUnit_Framework_TestCase {
-  /** @var Class_Systeme_ModulesAccueil */
-  private $_systemeModulesAccueil;
+
+
+class ModulesAccueilTest extends ModelTestCase {
+  private Class_Systeme_ModulesAccueil $_module;
 
 
   public function setUp() {
-    $this->_systemeModulesAccueil = new Class_Systeme_ModulesAccueil;
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class, ['id' => 1])
+         ->beCurrentProfil();
+
+    $this->_module = new Class_Systeme_ModulesAccueil;
   }
 
 
   /** @test */
   public function getValeursParDefautForUnknownTypeShouldReturnArrayWithEmtyTitreAndBoite() {
-    $this->assertEquals(array('boite' => null,
-                              'titre' => ''),
-                        $this->_systemeModulesAccueil->getValeursParDefaut(null));
+    $this->assertEquals(['boite' => null, 'titre' => ''],
+                        $this->_module->getValeursParDefaut(null));
   }
 
 
   /** @test */
   public function getValeursParDefautForKnownTypeShouldReturnArray() {
-    $this->assertTrue(is_array($this->_systemeModulesAccueil->getValeursParDefaut('NEWS')));
+    $this->assertTrue(is_array($this->_module->getValeursParDefaut('NEWS')));
   }
 
 
   /** @test */
   public function getModuleByCodeOfNonExistingShouldReturnNullObject() {
-    $this->assertInstanceOf('Class_Systeme_ModulesAccueil_Null', 
-                            $this->_systemeModulesAccueil->getModuleByCode('666'));
+    $this->assertInstanceOf(Class_Systeme_ModulesAccueil_Null::class,
+                            $this->_module->getModuleByCode('666'));
   }
 
 
   /** @test */
   public function getModuleByCodeOfBibNumeriqueShouldReturnBibNumeriqueObject() {
-    $this->assertInstanceOf('Class_Systeme_ModulesAccueil_BibliothequeNumerique',
-                            $this->_systemeModulesAccueil->getModuleByCode('BIB_NUMERIQUE'));
+    $expected = Class_Systeme_ModulesAccueil_BibliothequeNumerique::class;
+    $this->assertInstanceOf($expected,
+                            $this->_module->getModuleByCode('BIB_NUMERIQUE'));
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/Systeme/ModulesAppliTest.php b/tests/library/Class/Systeme/ModulesAppliTest.php
index 743317ea024eb6f57297904fa1a04f0df5e15b5e..560603c6d780d8634a8ad3ed104c68a15992f892 100644
--- a/tests/library/Class/Systeme/ModulesAppliTest.php
+++ b/tests/library/Class/Systeme/ModulesAppliTest.php
@@ -23,12 +23,14 @@
  * Tests de non-régression onglets invisibles sur iPhone
  */
 class ModulesAppliValeursParDefautTest extends ModelTestCase {
-  protected $_storm_default_to_volatile=true;
 
   public function setUp() {
+    parent::setUp();
+
     $this->modules_appli = new Class_Systeme_ModulesAppli();
   }
 
+
   /**
    * @test
    */
@@ -58,8 +60,4 @@ class ModulesAppliValeursParDefautTest extends ModelTestCase {
     $def_val = $this->modules_appli->getValeursParDefaut("auth", "login");
     $this->assertEquals("Connexion", $def_val["barre_nav"]);
   }
-
 }
-
-
-?>
\ No newline at end of file
diff --git a/tests/library/Class/Systeme/ModulesMenuTest.php b/tests/library/Class/Systeme/ModulesMenuTest.php
index d4f87e4123c7333ecb97f4a0bca8ec5b5b86ceee..a06527274a7f0a5969866e0f9f4a095ad5cd070b 100644
--- a/tests/library/Class/Systeme/ModulesMenuTest.php
+++ b/tests/library/Class/Systeme/ModulesMenuTest.php
@@ -39,9 +39,13 @@ abstract class ModulesMenuBibNumeriqueTestCase extends ModelTestCase {
 
 
 
-class ModulesMenuBibNumeriqueActivatedComboTest extends ModulesMenuBibNumeriqueTestCase {
+
+class ModulesMenuBibNumeriqueActivatedComboTest
+  extends ModulesMenuBibNumeriqueTestCase {
+
   public function setUp() {
     parent::setUp();
+
     RessourcesNumeriquesFixtures::activate();
     $this->html = (new Class_Systeme_ModulesMenu())->getComboFonctions(0, false, '');
   }
@@ -58,9 +62,13 @@ class ModulesMenuBibNumeriqueActivatedComboTest extends ModulesMenuBibNumeriqueT
 
 
 
-class ModulesMenuBibNumeriqueActivatedUrlsTest extends ModulesMenuBibNumeriqueTestCase {
+
+class ModulesMenuBibNumeriqueActivatedUrlsTest
+  extends ModulesMenuBibNumeriqueTestCase {
+
   public function setUp() {
     parent::setUp();
+
     RessourcesNumeriquesFixtures::activate();
     ZendAfi_Auth::getInstance()->clearIdentity();
     $this->module_menu = new Class_Systeme_ModulesMenu();
@@ -91,9 +99,13 @@ class ModulesMenuBibNumeriqueActivatedUrlsTest extends ModulesMenuBibNumeriqueTe
 
 
 
-class ModulesMenuBibNumeriqueDeactivatedComboTest extends ModulesMenuBibNumeriqueTestCase {
+
+class ModulesMenuBibNumeriqueDeactivatedComboTest
+  extends ModulesMenuBibNumeriqueTestCase {
+
   public function setUp() {
     parent::setUp();
+
     RessourcesNumeriquesFixtures::deactivate();
     $this->html = (new Class_Systeme_ModulesMenu())->getComboFonctions(0, false, '');
   }
@@ -110,9 +122,16 @@ class ModulesMenuBibNumeriqueDeactivatedComboTest extends ModulesMenuBibNumeriqu
 
 
 
+
 class ModulesMenuTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     Zend_Controller_Front::getInstance()
       ->getRouter()
       ->route(new Zend_Controller_Request_Http('http://localhost/'));
@@ -150,4 +169,3 @@ class ModulesMenuTest extends ModelTestCase {
     $this->assertcontains('/abonne/suggestion-achat', $url);
   }
 }
-?>
\ No newline at end of file
diff --git a/tests/library/Class/WebService/FnacTest.php b/tests/library/Class/WebService/FnacTest.php
index 60fd00648a41de9ca977f35c8277d374ce4b7f30..599537fcdb6e215891525e4c44ffb1a9410e3097 100644
--- a/tests/library/Class/WebService/FnacTest.php
+++ b/tests/library/Class/WebService/FnacTest.php
@@ -21,10 +21,13 @@
 
 
 abstract class FnacTestCase extends ModelTestCase {
+
   protected $_fnac;
   protected $_http_client;
 
   public function setUp() {
+    parent::setUp();
+
     $this->_fnac = new Class_WebService_Fnac();
 
     $this->_http_client = $this->mock()->beStrict();
@@ -41,6 +44,7 @@ abstract class FnacTestCase extends ModelTestCase {
     return $this;
   }
 
+
   protected function _fixtureFileContent($file) {
     return file_get_contents(__DIR__ . '/../../../fixtures/' . $file);
   }
@@ -56,6 +60,7 @@ abstract class FnacTestCase extends ModelTestCase {
 
 
 class FnacHarryPotterTest extends FnacTestCase {
+
   /** @test */
   public function getResumeShouldFetchItFromPotterSuite() {
     $this->_openUrlWillAnswer('http://recherche.fnac.com/r/2070572676',
@@ -74,6 +79,7 @@ class FnacHarryPotterTest extends FnacTestCase {
 
 
 class FnacMilleniumTest extends FnacTestCase {
+
   /** @test */
   public function getResumeShouldFetchItFromMilleniumSuite() {
     $this->_openUrlWillAnswer('http://recherche.fnac.com/r/9782742765010',
@@ -96,6 +102,7 @@ class FnacMilleniumTest extends FnacTestCase {
 
 
 class FnactNoLinkFoundTest extends FnacTestCase {
+
   /** @test */
   public function getResumeShourdReturnEmptyString() {
     $this->_openUrlWillAnswer('http://recherche.fnac.com/r/2070572676', 'bla bla bla');
diff --git a/tests/library/Class/WebService/OAI/ResumptionTokenTest.php b/tests/library/Class/WebService/OAI/ResumptionTokenTest.php
index 801a2999d6fd192f5b179a2a2429b339e2559f02..5c06a68ec10f1aa3811ee144042bbb28cdaf6a66 100644
--- a/tests/library/Class/WebService/OAI/ResumptionTokenTest.php
+++ b/tests/library/Class/WebService/OAI/ResumptionTokenTest.php
@@ -21,6 +21,7 @@
 
 
 class ResumptionTokenTest extends ModelTestCase {
+
   protected
     $_token,
     $_request_params,
@@ -28,6 +29,8 @@ class ResumptionTokenTest extends ModelTestCase {
     $_builder;
 
   public function setUp() {
+    parent::setUp();
+
     $this->_request_params = ['from' => '2011-12-25',
                               'until' => '',
                               'metadataPrefix' => 'oai_dc',
diff --git a/tests/library/Class/WebService/SIGB/BiblixNetTest.php b/tests/library/Class/WebService/SIGB/BiblixNetTest.php
index 908fbda5dea3cad5175e09398df75ddcf09e657f..c4d8eab387d1d01131d9b376a7206ba88c81c64a 100644
--- a/tests/library/Class/WebService/SIGB/BiblixNetTest.php
+++ b/tests/library/Class/WebService/SIGB/BiblixNetTest.php
@@ -22,10 +22,12 @@
 require_once('BiblixNetFixtures.php');
 
 class BiblixNetGetServiceTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_WebService_SIGB_BiblixNet::reset();
-    $this->service = Class_WebService_SIGB_BiblixNet::getService(array('url_serveur' => 'http://mediathequewormhout.biblixnet.com/exporte_afi/'));
+    $this->service = Class_WebService_SIGB_BiblixNet::getService(['url_serveur' => 'http://mediathequewormhout.biblixnet.com/exporte_afi/']);
   }
 
 
@@ -47,6 +49,7 @@ class BiblixNetGetServiceTest extends ModelTestCase {
 
 
 abstract class BiblixNetTestCase extends ModelTestCase {
+
   /** @var PHPUnit_Framework_MockObject_MockObject */
   protected $_mock_web_client;
 
@@ -55,6 +58,7 @@ abstract class BiblixNetTestCase extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->_mock_web_client = Storm_Test_ObjectWrapper::mock();
     Class_WebService_SIGB_BiblixNet::setService(null);
     $this->_service = Class_WebService_SIGB_BiblixNet
@@ -67,6 +71,7 @@ abstract class BiblixNetTestCase extends ModelTestCase {
 
 
 class BiblixNetGetRecordsLaCenseAuxAlouettesTest extends BiblixNetTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -143,7 +148,6 @@ class BiblixNetGetRecordsLaCenseAuxAlouettesTest extends BiblixNetTestCase {
   public function thirdExemplaireDateRetourShouldBe19_04_2012() {
     $this->assertEquals('19/04/2012', $this->_notice->getExemplaires()[2]->getDateRetour());
   }
-
 }
 
 
@@ -151,6 +155,7 @@ class BiblixNetGetRecordsLaCenseAuxAlouettesTest extends BiblixNetTestCase {
 
 
 class BiblixNetGetPatronInfoJustinTicou extends BiblixNetTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -164,7 +169,6 @@ class BiblixNetGetPatronInfoJustinTicou extends BiblixNetTestCase {
       ->getEmprunteur(Class_Users::getLoader()
                       ->newInstance()
                       ->setIdSigb(34));
-
   }
 
 
@@ -255,6 +259,7 @@ class BiblixNetGetPatronInfoJustinTicou extends BiblixNetTestCase {
 
 
 class BiblixNetOperationsTest extends BiblixNetTestCase {
+
   /** @test */
   public function reserverExemplairesWithoutErrorShouldReturnSuccess() {
     $this->_mock_web_client
@@ -264,7 +269,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->beStrict();
 
 
-    $this->assertEquals(array('statut' => true, 'erreur' => ''),
+    $this->assertEquals(['statut' => true, 'erreur' => ''],
                         $this->_service->reserverExemplaire(
                                                             Class_Users::getLoader()->newInstance()->setIdSigb('34'),
                                                             Class_Exemplaire::getLoader()->newInstance()->setIdOrigine('1432'),
@@ -282,7 +287,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->beStrict();
 
 
-    $this->assertEquals(array('statut' => false, 'erreur' => 'Réservation impossible'),
+    $this->assertEquals(['statut' => false, 'erreur' => 'Réservation impossible'],
                         $this->_service->reserverExemplaire(
                                                             Class_Users::getLoader()->newInstance()->setIdSigb('34'),
                                                             Class_Exemplaire::getLoader()->newInstance()->setIdOrigine('1432'),
@@ -291,7 +296,6 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
   }
 
 
-
   /** @test */
   public function supprimerReservationWithoutErrorShouldReturnSuccess() {
     $this->_mock_web_client
@@ -300,7 +304,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->answers(BiblixNetFixtures::xmlCancelHoldSuccess())
       ->beStrict();
 
-    $this->assertEquals(array('statut' => true, 'erreur' => ''),
+    $this->assertEquals(['statut' => true, 'erreur' => ''],
                         $this->_service->supprimerReservation(
                                                               Class_Users::getLoader()->newInstance()->setIdSigb('1'),
                                                               '987'
@@ -316,7 +320,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->answers(BiblixNetFixtures::xmlCancelHoldError())
       ->beStrict();
 
-    $this->assertEquals(array('statut' => false, 'erreur' => 'Annulation impossible'),
+    $this->assertEquals(['statut' => false, 'erreur' => 'Annulation impossible'],
                         $this->_service->supprimerReservation(
                                                               Class_Users::getLoader()->newInstance()->setIdSigb('1'),
                                                               '987'
@@ -332,7 +336,7 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->answers(BiblixNetFixtures::xmlRenewLoanSuccess())
       ->beStrict();
 
-    $this->assertEquals(array('statut' => true, 'erreur' => ''),
+    $this->assertEquals(['statut' => true, 'erreur' => ''],
                         $this->_service->prolongerPret(
                                                        Class_Users::getLoader()->newInstance()->setIdSigb('4'),
                                                        '987'
@@ -348,20 +352,26 @@ class BiblixNetOperationsTest extends BiblixNetTestCase {
       ->answers(BiblixNetFixtures::xmlRenewLoanError())
       ->beStrict();
 
-    $this->assertEquals(array('statut' => false, 'erreur' => 'Prolongation impossible'),
+    $this->assertEquals(['statut' => false, 'erreur' => 'Prolongation impossible'],
                         $this->_service->prolongerPret(
                                                        Class_Users::getLoader()->newInstance()->setIdSigb('4'),
                                                        '987'
                         ));
   }
-
 }
 
 
 
+
 class BiblixAuthenticateTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     Class_WebService_SIGB_BiblixNet::reset();
     $mock = $this
       ->mock()
@@ -375,7 +385,6 @@ class BiblixAuthenticateTest extends ModelTestCase {
 
     $service->setWebClient($mock);
 
-
     $this->fixture('Class_Users',
                    ['id' => 12,
                     'login' => '10102003',
@@ -428,4 +437,4 @@ class BiblixAuthenticateTest extends ModelTestCase {
     ZendAfi_Auth::getInstance()->authenticateLoginPassword('10102003', 'oups');
     $this->assertEmpty(Class_Users::getIdentity());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/DynixTest.php b/tests/library/Class/WebService/SIGB/DynixTest.php
index 881d6393ae164281e767af3ee902e77be94dd44d..c58d63f0d87120022e89430b70169908166ac101 100644
--- a/tests/library/Class/WebService/SIGB/DynixTest.php
+++ b/tests/library/Class/WebService/SIGB/DynixTest.php
@@ -22,9 +22,12 @@
 require('DynixFixtures.php');
 
 class DynixGetServiceTest extends ModelTestCase {
+
   protected $_service;
 
   public function setUp() {
+    parent::setUp();
+
     Class_WebService_SIGB_Dynix::reset();
     $this->_service = Class_WebService_SIGB_Dynix::getService(['url_serveur' => 'http://www.infocom94.fr:8080/capcvm/',
                                                                'client_id' => 'myid',
@@ -43,6 +46,7 @@ class DynixGetServiceTest extends ModelTestCase {
 
 
 abstract class DynixTestCase extends ModelTestCase {
+
   protected $_mock_web_client;
 
   protected $_service;
@@ -80,6 +84,7 @@ abstract class DynixTestCase extends ModelTestCase {
 
 
 class DynixCurrentLocationAsStatus extends DynixTestCase {
+
   protected $_notice;
 
   public function setUp() {
@@ -112,6 +117,7 @@ class DynixCurrentLocationAsStatus extends DynixTestCase {
 
 
 class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
+
   protected $_notice;
 
   public function setUp() {
@@ -185,7 +191,7 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
   /** @test */
   public function secondExemplairDisponibiliteShouldBeEnTransit() {
     $this->assertEquals(Class_WebService_SIGB_Exemplaire::newInstance()->message('DISPO_TRANSIT'),
-                                                                                 $this->_notice->exemplaireAt(1)->getDisponibilite());
+                        $this->_notice->exemplaireAt(1)->getDisponibilite());
   }
 
 
@@ -224,6 +230,7 @@ class DynixGetNoticeLeCombatOrdinaire extends DynixTestCase {
 
 
 class DynixGetNoticeHarryPotter extends DynixTestCase {
+
   protected $_notice;
 
   public function setUp() {
@@ -258,6 +265,7 @@ class DynixGetNoticeHarryPotter extends DynixTestCase {
 
 
 class DynixGetEmprunteurManuLarcinetTest extends DynixTestCase {
+
   protected $_manu;
 
   public function setUp() {
@@ -392,6 +400,7 @@ class DynixGetEmprunteurManuLarcinetTest extends DynixTestCase {
 
 
 abstract class DynixOperationsTestCase extends DynixTestCase {
+
   protected $_manu;
 
   public function setUp() {
@@ -422,7 +431,9 @@ abstract class DynixOperationsTestCase extends DynixTestCase {
 
 
 
+
 class DynixOperationsTest extends DynixOperationsTestCase {
+
   /** @test */
   public function successfulReservationShouldReturnStatutTrue() {
     $this->_mock_web_client
@@ -487,7 +498,6 @@ class DynixOperationsTest extends DynixOperationsTestCase {
   }
 
 
-
   /** @test */
   public function successfulProlongerPretShouldReturnStatutTrue() {
     $this->_mock_web_client
@@ -500,7 +510,6 @@ class DynixOperationsTest extends DynixOperationsTestCase {
   }
 
 
-
   /** @test */
   public function errorProlongerPretShouldReturnStatutFalseWithErrorMessage() {
     $this->_mock_web_client
@@ -517,6 +526,7 @@ class DynixOperationsTest extends DynixOperationsTestCase {
 
 
 class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -530,7 +540,6 @@ class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase
       ->with('http://www.infocom94.fr:8080/capcvm/rest/patron/createMyHold?clientID=SymWS&sessionToken=497e6380-69fb-4850-b552-40dede41f0b5&titleKey=233823&pickupLibraryID=ALFMEDA')
       ->never();
 
-
     $this->mock_transport = new MockMailTransport();
     Zend_Mail::setDefaultTransport($this->mock_transport);
 
@@ -542,7 +551,7 @@ class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase
 
     $bib_creteil = Class_Bib::newInstanceWithId(2,
                                                 ['int_bib' => Class_IntBib::newInstanceWithId(2,
-                                                                                          ['mail' => 'creteil@plaine.fr'])]);
+                                                                                              ['mail' => 'creteil@plaine.fr'])]);
 
     $exemplaire->setBib($bib_creteil)->setAnnexe('ALFMEDA');
 
@@ -551,7 +560,7 @@ class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase
 
     $bib_limeil = Class_Bib::newInstanceWithId(4,
                                                ['int_bib' => Class_IntBib::newInstanceWithId(4,
-                                                                                         ['mail' => 'limeil@plaine.fr'])]);
+                                                                                             ['mail' => 'limeil@plaine.fr'])]);
 
     $this->fixture('Class_CodifAnnexe',
                    ['id' => 4,
@@ -602,7 +611,7 @@ class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase
   }
 
 
-    /** @test */
+  /** @test */
   public function mailContentShouldContainsExmplaireInfo() {
     $content = quoted_printable_decode($this->mail->getBodyText()->getContent());
     $this->assertContains('Titre : Le combat ordinaire', $content);
@@ -615,6 +624,7 @@ class DynixReservationByMailForAvailableDocTest extends DynixOperationsTestCase
 
 
 class DynixAuthenticateManuLarcinetTest extends DynixTestCase {
+
   protected $_manu;
 
   public function setUp() {
@@ -659,4 +669,4 @@ class DynixAuthenticateManuLarcinetTest extends DynixTestCase {
       return $this->fail();
     $this->assertEquals('0917036', $manu->getLogin());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/KohaTest.php b/tests/library/Class/WebService/SIGB/KohaTest.php
index e2cadfe8d9b9655144e6823fbb560533f127b57c..bede5c150ff37e48f6180a60dfc4f7f8540ccfbb 100644
--- a/tests/library/Class/WebService/SIGB/KohaTest.php
+++ b/tests/library/Class/WebService/SIGB/KohaTest.php
@@ -22,8 +22,10 @@
 require_once 'tests/fixtures/KohaFixtures.php';
 
 class KohaGetServiceTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_WebService_SIGB_Koha::reset();
     Class_AdminVar::newInstanceWithId('KOHA_MULTI_SITES', ['valeur' => '' ]);
     $this->service = Class_WebService_SIGB_Koha::getService(['url_serveur' => 'http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl']);
@@ -121,8 +123,10 @@ abstract class KohaTestCase extends ModelTestCase {
 
 
 class KohaServiceTestCommunicationStatusTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('getHttpClient')->answers($this->mock_web_client)
       ->whenCalled('open_url')
@@ -144,7 +148,6 @@ class KohaServiceTestCommunicationStatusTest extends KohaTestCase {
   }
 
 
-
   /** @test */
   public function withNoXmlResponseCommunicationStatusShouldAnswersError() {
     $this->mock_web_client
@@ -162,6 +165,7 @@ class KohaServiceTestCommunicationStatusTest extends KohaTestCase {
 
 
 class KohaServiceGetNoticeJardinEnfantTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -213,8 +217,9 @@ class KohaServiceGetNoticeJardinEnfantTest extends KohaTestCase {
 
 
 
+class KohaServiceGetNoticeJardinEnfantWithInconsistantBiblioitemnumberTest
+  extends KohaTestCase {
 
-class KohaServiceGetNoticeJardinEnfantWithInconsistantBiblioitemnumberTest extends KohaTestCase {
   public function setUp() {
     parent::setUp();
 
@@ -237,8 +242,10 @@ class KohaServiceGetNoticeJardinEnfantWithInconsistantBiblioitemnumberTest exten
 
 
 abstract class KohaServiceGetNoticeHarryPotterTestCase extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('open_url')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=GetRecords&id=33233')
@@ -249,7 +256,9 @@ abstract class KohaServiceGetNoticeHarryPotterTestCase extends KohaTestCase {
 
 
 
-class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotterTestCase {
+class KohaServiceGetNoticeHarryPotterTest
+  extends KohaServiceGetNoticeHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -432,7 +441,7 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
   /** @test */
   public function eleventhExemplaireDisponibiliteShouldBeFaitPartieDuneMalle() {
-   $this->assertEquals('Fait partie d\'une malle',
+    $this->assertEquals('Fait partie d\'une malle',
                         $this->potter->exemplaireAt(10)->getDisponibilite());
   }
 
@@ -480,7 +489,9 @@ class KohaServiceGetNoticeHarryPotterTest extends KohaServiceGetNoticeHarryPotte
 
 
 
-class KohaServiceGetNoticeHarryPotterAltenativeCodifDisponibiliteTest extends KohaServiceGetNoticeHarryPotterTestCase {
+class KohaServiceGetNoticeHarryPotterAltenativeCodifDisponibiliteTest
+  extends KohaServiceGetNoticeHarryPotterTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -514,6 +525,7 @@ class KohaServiceGetNoticeHarryPotterAltenativeCodifDisponibiliteTest extends Ko
 
 
 class KohaGetEmprunteurErrorTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -538,6 +550,7 @@ class KohaGetEmprunteurErrorTest extends KohaTestCase {
 
 
 class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
+
   protected $_group;
 
   public function setUp() {
@@ -726,6 +739,7 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
     $this->assertEquals(2, $this->laurent->getReservationAt(0)->getRang());
   }
 
+
   /** @test */
   function firstReservationBibliothequeShouldBeBiblioMeuse() {
     $this->assertEquals('Biblio Meuse', $this->laurent->getReservationAt(0)->getBibliotheque());
@@ -812,6 +826,7 @@ class KohaGetEmprunteurLaureAfondTest extends KohaTestCase {
 
 
 abstract class KohaGetEmprunteurLisianneWithIdSIGBTestCase extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -841,9 +856,12 @@ abstract class KohaGetEmprunteurLisianneWithIdSIGBTestCase extends KohaTestCase
 
 
 
-class KohaGetEmprunteurLisianneWithUserAdminTest extends KohaGetEmprunteurLisianneWithIdSIGBTestCase {
+class KohaGetEmprunteurLisianneWithUserAdminTest
+  extends KohaGetEmprunteurLisianneWithIdSIGBTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->lisianne_user
       ->setPassword('')
       ->setIdSigb(16186)
@@ -861,6 +879,7 @@ class KohaGetEmprunteurLisianneWithUserAdminTest extends KohaGetEmprunteurLisian
       ->getEmprunteur($this->lisianne_user);
   }
 
+
   /** @test */
   public function nbReservationsShouldReturnFive() {
     $this->assertEquals(5, $this->lisianne->getNbReservations());
@@ -870,7 +889,9 @@ class KohaGetEmprunteurLisianneWithUserAdminTest extends KohaGetEmprunteurLisian
 
 
 
-class KohaGetEmprunteurLisianneWithIdSIGBTest extends KohaGetEmprunteurLisianneWithIdSIGBTestCase {
+class KohaGetEmprunteurLisianneWithIdSIGBTest
+  extends KohaGetEmprunteurLisianneWithIdSIGBTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -914,10 +935,12 @@ class KohaGetEmprunteurLisianneWithIdSIGBTest extends KohaGetEmprunteurLisianneW
 
 
 
+
 class KohaGetEmprunteurDebarredWithIdSIGBTest extends KohaTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('postData')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl',
@@ -953,6 +976,7 @@ class KohaGetEmprunteurDebarredDateWithIdSIGBTest extends KohaTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('postData')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl',
@@ -963,10 +987,9 @@ class KohaGetEmprunteurDebarredDateWithIdSIGBTest extends KohaTestCase {
       ->whenCalled('open_url')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=GetPatronInfo&patron_id=420&show_contact=1&show_loans=0&show_holds=1')
       ->answers(KohaFixtures::xmlGetPatronInfoDebarredWithDate());
-
-
   }
 
+
   protected function _setTimeSourceAndgetEmprunteur($date){
     Class_WebService_SIGB_Koha_PatronInfoReader::setTimeSource(new TimeSourceForTest($date));
 
@@ -983,6 +1006,7 @@ class KohaGetEmprunteurDebarredDateWithIdSIGBTest extends KohaTestCase {
 
   public function tearDown() {
     Class_WebService_SIGB_Koha_PatronInfoReader::setTimeSource(null);
+    parent::tearDown();
   }
 
 
@@ -1045,7 +1069,6 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
   }
 
 
-
   /** @test */
   public function jeanShouldNotBeBlocked() {
     $this->assertFalse($this->jean->isBlocked());
@@ -1131,6 +1154,7 @@ class KohaGetEmprunteurJeanAndreWithIdSIGBTest extends KohaTestCase {
 
 
 class KohaGetRecordElementaireMonCherPolarTest extends KohaTestCase {
+
   protected
     $_user,
     $_item,
@@ -1206,15 +1230,15 @@ class KohaGetRecordElementaireMonCherPolarTest extends KohaTestCase {
 
     $this->mock_web_client
       ->whenCalled('open_url')
-        ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=HoldItem&patron_id=007&bib_id=1&item_id=123&start_date=2020-01-19&expiry_date=2020-02-25&pickup_location=007')
-        ->answers("<HoldTitle>
+      ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=HoldItem&patron_id=007&bib_id=1&item_id=123&start_date=2020-01-19&expiry_date=2020-02-25&pickup_location=007')
+      ->answers("<HoldTitle>
                       <title>Elementaire mon cher Polar</title>
                       <pickup_location>007</pickup_location>
                    </HoldTitle>");
 
-      $ret = $this->service->reserverExemplaire($this->_user, $exemplaire, '007', '2020-01-19', '2020-02-25');
+    $ret = $this->service->reserverExemplaire($this->_user, $exemplaire, '007', '2020-01-19', '2020-02-25');
 
-      $this->assertEquals(['statut' => true, 'erreur' => ''], $ret);
+    $this->assertEquals(['statut' => true, 'erreur' => ''], $ret);
   }
 
 
@@ -1248,6 +1272,7 @@ class KohaGetRecordElementaireMonCherPolarTest extends KohaTestCase {
 
 
 class KohaGetEmprunteurJamesBondWithGroupedHoldsTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1312,6 +1337,7 @@ class KohaGetEmprunteurJamesBondWithGroupedHoldsTest extends KohaTestCase {
 
 
 class KohaOperationsTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1423,7 +1449,6 @@ class KohaOperationsTest extends KohaTestCase {
   }
 
 
-
   /** @test */
   function prolongerPretShouldReturnSuccessIfNoErrors() {
     $this->mock_web_client
@@ -1442,7 +1467,6 @@ class KohaOperationsTest extends KohaTestCase {
   }
 
 
-
   /** @test */
   function prolongerPretWithKohaCG55VersionShouldReturnSuccessIfNoErrors() {
     $this->mock_web_client
@@ -1464,7 +1488,6 @@ class KohaOperationsTest extends KohaTestCase {
   }
 
 
-
   /** @test */
   function reserverExemplaireShouldReturnSuccessIfNoErrors() {
     $this->mock_web_client
@@ -1481,9 +1504,6 @@ class KohaOperationsTest extends KohaTestCase {
   }
 
 
-
-
-
   /** @test */
   function reserverExemplaireShouldSendPickupLocationIfGiven() {
     $this->fixture('Class_CodifAnnexe',
@@ -1507,9 +1527,6 @@ class KohaOperationsTest extends KohaTestCase {
   }
 
 
-
-
-
   /** @test */
   function reserverExemplaireShouldReturnErrorIfFail() {
     $this->mock_web_client
@@ -1574,9 +1591,12 @@ class KohaOperationsTest extends KohaTestCase {
 
 
 
-class KohaTestMultiSites extends KohaTestCase{
+
+class KohaTestMultiSites extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_AdminVar',
                    ['id' => 'KOHA_MULTI_SITES',
                     'valeur' => '1']);
@@ -1628,11 +1648,10 @@ class KohaTestMultiSites extends KohaTestCase{
 
 
 
+
 class KohaServiceGetNoticeHarryPotterWithRestrictionTest
   extends ModelTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
@@ -1676,7 +1695,9 @@ class KohaServiceGetNoticeHarryPotterWithRestrictionTest
 
 
 
+
 class KohaServiceGetNoticeJardinEnfantWithItemOnTopTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1697,7 +1718,9 @@ class KohaServiceGetNoticeJardinEnfantWithItemOnTopTest extends KohaTestCase {
 
 
 
+
 class KohaServiceGetNoticeJardinEnfantWithTransfertTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1713,7 +1736,7 @@ class KohaServiceGetNoticeJardinEnfantWithTransfertTest extends KohaTestCase {
   /** @test */
   public function itemShouldNotBeAvailable() {
     $this->assertContains('En transfert',
-                           $this->record->exemplaireAt(0)->getDisponibilite());
+                          $this->record->exemplaireAt(0)->getDisponibilite());
   }
 }
 
@@ -1721,6 +1744,7 @@ class KohaServiceGetNoticeJardinEnfantWithTransfertTest extends KohaTestCase {
 
 
 class KohaServiceGetNoticeJardinEnfanceWithOnLoanTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1743,7 +1767,7 @@ class KohaServiceGetNoticeJardinEnfanceWithOnLoanTest extends KohaTestCase {
   /** @test */
   public function itemShouldNotBeAvailable() {
     $this->assertContains('En prêt',
-                           $this->record->exemplaireAt(0)->getDisponibilite());
+                          $this->record->exemplaireAt(0)->getDisponibilite());
   }
 
 
@@ -1751,15 +1775,16 @@ class KohaServiceGetNoticeJardinEnfanceWithOnLoanTest extends KohaTestCase {
   public function itemWithOnLoanDateShouldHaveReturnDate20180821() {
     $this->assertEquals('21/08/2011', $this->record->exemplaireAt(0)->getDateRetour());
   }
-
 }
 
 
 
 
 class KohaServicePatroninfoReaderWithNoLibTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('open_url')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=LookupPatron&id=012345&id_type=cardnumber')
@@ -1785,8 +1810,11 @@ class KohaServicePatroninfoReaderWithNoLibTest extends KohaTestCase {
 }
 
 
+
+
 /** @see http://forge.afi-sa.fr/issues/33948 */
 class KohaServiceGetRecordPikolocoTest extends KohaTestCase {
+
   protected $record;
 
   public function setUp() {
@@ -1810,9 +1838,12 @@ class KohaServiceGetRecordPikolocoTest extends KohaTestCase {
 
 
 
+
 class KohaAuthenticateWSTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->mock_web_client
       ->whenCalled('postData')
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl',
@@ -1840,11 +1871,11 @@ class KohaAuthenticateWSTest extends KohaTestCase {
                                                  'id_site' => 3]);
 
     $this->user_lost = $this->fixture('Class_Users', ['id' => 11,
-                                                 'login' => 'gilles',
-                                                 'password' => '1984',
-                                                 'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
-                                                 'idabon' => 'gilles',
-                                                 'id_site' => 3]);
+                                                      'login' => 'gilles',
+                                                      'password' => '1984',
+                                                      'role_level' => ZendAfi_Acl_AdminControllerRoles::ABONNE_SIGB,
+                                                      'idabon' => 'gilles',
+                                                      'id_site' => 3]);
 
 
     $this->emprunteur = $this->service->getEmprunteur($this->user);
@@ -1854,6 +1885,7 @@ class KohaAuthenticateWSTest extends KohaTestCase {
     $this->emprunteur_lost->updateUser($this->user_lost);
   }
 
+
   public function expectedUser() {
     return [['nom', 'DUPONT'],
             ['prenom' ,'Jean'],
@@ -1865,6 +1897,7 @@ class KohaAuthenticateWSTest extends KohaTestCase {
     ];
   }
 
+
   /**
    * @dataProvider expectedUser
    * @test
@@ -1873,6 +1906,7 @@ class KohaAuthenticateWSTest extends KohaTestCase {
     $this->assertEquals($value,$this->user->callGetterByAttributeName($name));
   }
 
+
   /** @test */
   public function withRightUsernameAndPasswordUserShouldAuthenticate() {
     $this->assertTrue($this->emprunteur->isValid());
@@ -1897,8 +1931,10 @@ class KohaAuthenticateWSTest extends KohaTestCase {
 
 
 class KohaErrorMessagesOperationTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_lafond = $this->fixture('Class_Users',
                                     ['id' => 67,
                                      'login' => 'lafond',
@@ -1987,7 +2023,9 @@ class KohaErrorMessagesOperationTest extends KohaTestCase {
 
 
 
+
 class KohaServiceLookupPatronByLoginTest extends KohaTestCase {
+
   /** @test */
   public function serviceShouldProvideLookupPatronByLogin() {
     $this->assertTrue($this->service->providesLookupPatronByLogin());
@@ -2028,6 +2066,7 @@ class KohaServiceLookupPatronByLoginTest extends KohaTestCase {
 
 
 class KohaGetEmprunteurLisianneWithPagedLoansAndIdSIGBTest extends KohaTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2084,6 +2123,7 @@ class KohaGetEmprunteurLisianneWithPagedLoansAndIdSIGBTest extends KohaTestCase
 
 
 abstract class KohaAuthenticationGroupsTestCase extends ModelTestCase {
+
   protected $_comm_params = ['url_serveur' => 'http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl',
                              'id_bib' => 74,
                              'type' => Class_IntBib::COM_KOHA,
@@ -2120,13 +2160,14 @@ abstract class KohaAuthenticationGroupsTestCase extends ModelTestCase {
       ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=GetPatronInfo&patron_id=572&show_contact=0&show_loans=1&show_holds=0')
       ->answers(KohaFixtures::xmlGetPatronInfoLaureLoans())
       ->beStrict();
-    }
+  }
 }
 
 
 
 
 class KohaAuthenticationGroupsNewUserTest extends KohaAuthenticationGroupsTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2175,7 +2216,9 @@ class KohaAuthenticationGroupsNewUserTest extends KohaAuthenticationGroupsTestCa
 
 
 
-class KohaAuthenticationGroupsExistingUserTest extends KohaAuthenticationGroupsTestCase {
+class KohaAuthenticationGroupsExistingUserTest
+  extends KohaAuthenticationGroupsTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2233,14 +2276,12 @@ class KohaAuthenticationGroupsExistingUserTest extends KohaAuthenticationGroupsT
 
 
 class KohaAuthenticationNoGroupsTestCase extends KohaAuthenticationGroupsTestCase {
+
   protected $_comm_params = ['url_serveur' => 'http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl',
                              'id_bib' => 74,
                              'type' => Class_IntBib::COM_KOHA,
                              'create_category_usergroup' => 0];
 
-  protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
@@ -2366,4 +2407,4 @@ class KohaServicePatronIdTest extends ModelTestCase {
     $emprunteur = $this->_service->getEmprunteur($user);
     $this->assertEquals(Class_WebService_SIGB_Emprunteur::nullInstance(), $emprunteur);
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/NanookTest.php b/tests/library/Class/WebService/SIGB/NanookTest.php
index 388932c9081e79d8fe341803bea4a49043e1ebf9..8a3002ac10f48bacb24ac975045ceee12a95e3fc 100644
--- a/tests/library/Class/WebService/SIGB/NanookTest.php
+++ b/tests/library/Class/WebService/SIGB/NanookTest.php
@@ -22,7 +22,10 @@
 include_once 'tests/fixtures/NanookFixtures.php';
 
 class NanookGetServiceTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     Class_WebService_SIGB_Nanook::reset();
     $this->service = Class_WebService_SIGB_Nanook::getService(array('url_serveur' => 'http://localhost:8080/afi_Nanook/ilsdi/'));
   }
@@ -41,6 +44,7 @@ class NanookGetServiceTest extends ModelTestCase {
                         $this->service->getServerRoot());
   }
 
+
   /** @test */
   public function getServiceWithoutSchemeShouldAddHttpScheme() {
     Class_WebService_SIGB_Nanook::reset();
@@ -61,7 +65,9 @@ class NanookGetServiceTest extends ModelTestCase {
 
 
 
+
 abstract class NanookTestCase extends ModelTestCase {
+
   /** @var PHPUnit_Framework_MockObject_MockObject */
   protected $_mock_web_client;
 
@@ -113,8 +119,10 @@ abstract class NanookTestCase extends ModelTestCase {
 
 
 class NanookServiceTestCommunicationStatusTest extends NanookTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_mock_web_client
       ->whenCalled('getHttpClient')->answers($this->_mock_web_client);
   }
@@ -133,7 +141,6 @@ class NanookServiceTestCommunicationStatusTest extends NanookTestCase {
   }
 
 
-
   /** @test */
   public function withNoXmlResponseCommunicationStatusShouldAnswersError() {
     $this->_mock_web_client
@@ -151,6 +158,7 @@ class NanookServiceTestCommunicationStatusTest extends NanookTestCase {
 
 
 class NanookServiceErrorTestCase extends NanookTestCase {
+
   /** @test */
   public function reserverExemplaireShouldReturnFailure() {
     $this->assertEquals(
@@ -190,6 +198,7 @@ class NanookServiceErrorTestCase extends NanookTestCase {
 
 
 class NanookNoConnectionTest extends NanookServiceErrorTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -205,6 +214,7 @@ class NanookNoConnectionTest extends NanookServiceErrorTestCase {
 
 
 class NanookHtmlResponseErrorTest extends NanookServiceErrorTestCase {
+
   protected $_emprunteur;
 
   public function setUp() {
@@ -254,12 +264,13 @@ class NanookHtmlResponseErrorTest extends NanookServiceErrorTestCase {
 
 
 class NanookGetNoticeLiliGrisbiAndCoTest extends NanookTestCase {
+
   /** @var Class_WebService_SIGB_Notice */
   protected $_notice;
 
-
   public function setUp() {
     parent::setUp();
+
     //Pour avoir les textes de prets par defaut
     Class_Profil::setCurrentProfil($this->fixture('Class_Profil',
                                                   ['id' => 1,
@@ -298,6 +309,7 @@ class NanookGetNoticeLiliGrisbiAndCoTest extends NanookTestCase {
     $this->assertEquals('10713', $this->_notice->exemplaireAt(0)->getId());
   }
 
+
   /** @test */
   public function firstExemplaireNbReservationsShouldBe0() {
     $this->assertEquals(0, $this->_notice->exemplaireAt(0)->getNbReservations());
@@ -417,6 +429,7 @@ class NanookGetNoticeLiliGrisbiAndCoTest extends NanookTestCase {
 
 
 class NanookGetNoticeWithErrorTest extends NanookTestCase {
+
   /** @test */
   public function noticeShouldBeNull() {
     $this->_mock_web_client
@@ -429,9 +442,17 @@ class NanookGetNoticeWithErrorTest extends NanookTestCase {
 }
 
 
+
+
 class NanookGetUserAnnexeTest extends NanookTestCase {
+
   public function setUp() {
     parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
+
     $this->_chrystel = Class_Users::newInstance(['id_sigb' => 1,
                                                  'login' => 8765,
                                                  'password' => 2002,
@@ -443,21 +464,21 @@ class NanookGetUserAnnexeTest extends NanookTestCase {
 
   }
 
+
   /** @test */
   public function getUserAnnexeShouldMatchUserGetIdSite() {
     $this->assertEquals($this->_service->getUserAnnexe($this->_chrystel), $this->_chrystel->getUserIdSite());
   }
-
 }
 
 
 
 
 abstract class NanookGetEmprunteurChristelDelpeyrouxTestCase extends NanookTestCase {
+
   /** @var Class_WebService_SIGB_Emprunteur */
   protected $_emprunteur;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -481,9 +502,12 @@ abstract class NanookGetEmprunteurChristelDelpeyrouxTestCase extends NanookTestC
 
 
 
-class NanookGetEmprunteurChristelDelpeyrouxAsAdminTest extends NanookGetEmprunteurChristelDelpeyrouxTestCase {
+class NanookGetEmprunteurChristelDelpeyrouxAsAdminTest
+  extends NanookGetEmprunteurChristelDelpeyrouxTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_chrystel->setPassword('');
     Class_AdminVar::set('LOGIN_THROUGH_SIGB_ONLY',1);
     $admin = $this->fixture('Class_Users',
@@ -497,6 +521,7 @@ class NanookGetEmprunteurChristelDelpeyrouxAsAdminTest extends NanookGetEmprunte
     $this->_emprunteur = $this->_service->getEmprunteur($this->_chrystel);
   }
 
+
   /** @test */
   public function nbReservationsShouldBeFour() {
     $this->assertEquals(4, $this->_emprunteur->getNbReservations());
@@ -506,9 +531,12 @@ class NanookGetEmprunteurChristelDelpeyrouxAsAdminTest extends NanookGetEmprunte
 
 
 
-class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookGetEmprunteurChristelDelpeyrouxTestCase {
+class NanookGetEmprunteurChristelDelpeyrouxTest
+  extends NanookGetEmprunteurChristelDelpeyrouxTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_mock_web_client
             ->whenCalled('open_url')
             ->with('http://localhost:8080/afi_Nanook/ilsdi/service/AuthenticatePatron/username/8765/password/2002')
@@ -840,10 +868,10 @@ class NanookGetEmprunteurChristelDelpeyrouxTest extends NanookGetEmprunteurChris
 
 
 class NanookGetEmprunteurFrancoisMorelTest extends NanookTestCase {
+
   /** @var Class_WebService_SIGB_Emprunteur */
   protected $_emprunteur;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -891,6 +919,7 @@ class NanookGetEmprunteurFrancoisMorelTest extends NanookTestCase {
 
 
 class NanookGetEmprunteurWithErrorTest extends NanookTestCase {
+
   /** @test */
   public function emprunteurShouldBeEmpty() {
     $this->_mock_web_client
@@ -912,7 +941,9 @@ class NanookGetEmprunteurWithErrorTest extends NanookTestCase {
 
 
 
+
 class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
+
   /** @test */
   public function withRightUsernameAndPasswordUserShouldAuthenticateButNotBeValid() {
     $this->_mock_web_client
@@ -934,7 +965,6 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
   }
 
 
-
   /** @test */
   public function withWrongPasswordEmprunteurShouldNotBeValid() {
     $this->_mock_web_client
@@ -958,7 +988,6 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
   }
 
 
-
   /** @test */
   public function withLoginThroughSigbOnlyAndAlreadyLoggedShouldNotAuthenticatePatron() {
     $this->_mock_web_client
@@ -990,11 +1019,11 @@ class NanookGetEmprunteurAuthenticateTest extends NanookTestCase {
 
 
 
+
 class NanookGetEmprunteurPBTest extends NanookTestCase {
-  /** @var Class_WebService_SIGB_Emprunteur */
-  protected $_emprunteur,
-    $_storm_default_to_volatile = true;
 
+  /** @var Class_WebService_SIGB_Emprunteur */
+  protected $_emprunteur;
 
   public function setUp() {
     parent::setUp();
@@ -1038,12 +1067,13 @@ class NanookGetEmprunteurPBTest extends NanookTestCase {
   public function idAbonShouldBeLogin() {
     $this->assertEquals("77777", $this->_emprunteur->getIdAbon());
   }
-
 }
 
 
 
+
 class NanookOperationsTest extends NanookTestCase {
+
   /** @test */
   public function prolongerPretShouldReturnSuccessIfNoErrors() {
     $this->_mock_web_client
@@ -1231,7 +1261,9 @@ class NanookOperationsTest extends NanookTestCase {
 
 
 
+
 class NanookBuildQueryTest extends NanookTestCase {
+
   /** @test */
   public function spaceInLoginUrlShouldBeReplacedByPercentTwenty() {
     $this->assertEquals('http://localhost:8080/afi_Nanook/ilsdi/username/9999%201234',
@@ -1240,10 +1272,13 @@ class NanookBuildQueryTest extends NanookTestCase {
 }
 
 
+
+
 class NanookSaveEmprunteurPostTest extends NanookTestCase {
 
   public function setup() {
     parent::setup();
+
     $this->_mock_web_client
       ->whenCalled('postData')
       ->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
@@ -1261,34 +1296,39 @@ class NanookSaveEmprunteurPostTest extends NanookTestCase {
     $this->_emprunteur = $this->_service->saveEmprunteur($this->_crystel);
   }
 
+
   /** @test **/
   public function christelDelPeyrouxShoudlHaveGloasAsEmail() {
     $this->assertEquals('gloas@afi-sa.fr', $this->_emprunteur->getEmail());
   }
 
+
    /** @test **/
   public function christelDelPeyrouxShoudlHave0123456789AsTelpehone() {
     $this->assertEquals('0123456789', $this->_emprunteur->getTelephone());
   }
 
-     /** @test **/
+
+  /** @test **/
   public function christelDelPeyrouxShoudlHave987654AfiSaFrAsPassword() {
     $this->assertEquals('987654@afi-sa.fr', $this->_emprunteur->getPassword());
   }
 
+
   /** @test **/
   public function crystelShouldBeValid() {
     $this->assertTrue($this->_emprunteur->isValid());
   }
-
 }
 
 
 
+
 class NanookSaveEmprunteurRecordNotFoundTest extends NanookTestCase {
 
   public function setup() {
     parent::setup();
+
     $this->_mock_web_client
       ->whenCalled('postData')
       ->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
@@ -1311,14 +1351,16 @@ class NanookSaveEmprunteurRecordNotFoundTest extends NanookTestCase {
   public function christelDelPeyrouxShoudlNotBeValidWithRecordNotFoundError() {
     $this->assertFalse($this->_emprunteur->isValid());
   }
-
 }
 
 
 
+
 class NanookSaveEmprunteurUpdatePatronErrorTest extends NanookTestCase {
+
   public function setup() {
     parent::setup();
+
     $this->_mock_web_client
       ->whenCalled('postData')
       ->with('http://localhost:8080/afi_Nanook/ilsdi/service/UpdatePatronInfo/patronId/1',
@@ -1345,7 +1387,9 @@ class NanookSaveEmprunteurUpdatePatronErrorTest extends NanookTestCase {
 
 
 
+
 class NanookPickupLocationsInactiveTest extends NanookTestCase {
+
   /** @test */
   public function shouldNotProvidePickupLocations() {
     $this->assertFalse($this->_service->providesPickupLocations());
@@ -1354,9 +1398,12 @@ class NanookPickupLocationsInactiveTest extends NanookTestCase {
 
 
 
+
 class NanookPickupLocationsActiveWithoutSiteIdTest extends NanookTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $map =
       [// API with siteId answers errors
        '/bibId/0/patronId/0/siteId/0' => NanookFixtures::htmlTomcatError(),
@@ -1412,8 +1459,10 @@ class NanookPickupLocationsActiveWithoutSiteIdTest extends NanookTestCase {
 
 
 class NanookPickupLocationsActiveWithSiteIdTest extends NanookTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_mock_web_client
       ->whenCalled('open_url')
       ->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetPickupLocation/bibId/0/patronId/0/siteId/0')
@@ -1464,13 +1513,15 @@ class NanookPickupLocationsActiveWithSiteIdTest extends NanookTestCase {
 
 
 class NanookLoanHistoryTest extends NanookTestCase {
+
   protected
     $loans_history,
     $emprunteur;
 
   public function setUp() {
     parent::setUp();
-     $this->_mock_web_client
+
+    $this->_mock_web_client
       ->whenCalled('open_url')
       ->with('http://localhost:8080/afi_Nanook/ilsdi/service/GetLoanHistory/patronId/34?pageNumber=1')
       ->answers(NanookFixtures::xmlGetLoanHistoryPageOne())
@@ -1568,4 +1619,4 @@ class NanookLoanHistoryTest extends NanookTestCase {
 
     $this->assertFalse($this->_service->providesLoansHistory());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/OpsysServiceTest.php b/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
index 5a15ec7f7107a606701bb95d8ac362d380eaf7cc..0b9fe305f6ab9fd956d6138d085c90a39a7a99d0 100644
--- a/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
+++ b/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
@@ -22,6 +22,7 @@
 include_once('Class/WebService/SIGB/Opsys/Service.php');
 
 class StubSoapClient {
+
   public function OuvrirSession($ouvrir_session) {
     $result = new OuvrirSessionResponse();
     $result->OuvrirSessionResult = new RspOuvrirSession;
@@ -29,6 +30,7 @@ class StubSoapClient {
     return $result;
   }
 
+
   public function __call($method, $args) {
 
   }
@@ -48,9 +50,12 @@ class StubSoapClient {
 
 
 abstract class OpsysServiceFactoryWithCatalogueWebTestCase extends ModelTestCase {
+
   protected $_service;
 
   public function setUp() {
+    parent::setUp();
+
     Class_WebService_SIGB_Opsys::reset();
     Class_WebService_SIGB_Opsys_ServiceFactory::setSoapClientClass('StubSoapClient');
   }
@@ -59,9 +64,12 @@ abstract class OpsysServiceFactoryWithCatalogueWebTestCase extends ModelTestCase
 
 
 
-class OpsysServiceFactoryWithCatalogueWebTest extends OpsysServiceFactoryWithCatalogueWebTestCase {
+class OpsysServiceFactoryWithCatalogueWebTest
+  extends OpsysServiceFactoryWithCatalogueWebTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_service = Class_WebService_SIGB_Opsys::getService(['url_serveur' => "http://localhost:8088/mockServiceRechercheSoap?WSDL",
                                                                'catalogue_web' => '1']);
   }
@@ -88,9 +96,12 @@ class OpsysServiceFactoryWithCatalogueWebTest extends OpsysServiceFactoryWithCat
 
 
 
-class OpsysServiceFactoryWithoutCatalogueWebTest extends OpsysServiceFactoryWithCatalogueWebTestCase {
+class OpsysServiceFactoryWithoutCatalogueWebTest
+  extends OpsysServiceFactoryWithCatalogueWebTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_service = Class_WebService_SIGB_Opsys::getService(['url_serveur' => "http://localhost:8088/mockServiceRechercheSoap?WSDL",
                                                                'catalogue_web' => '0',
                                                                'reserver_retrait_bib_abonne' => '1']);
@@ -102,6 +113,7 @@ class OpsysServiceFactoryWithoutCatalogueWebTest extends OpsysServiceFactoryWith
     $this->assertInstanceOf('NullCatalogSoapClient', $this->_service->getCatalogClient());
   }
 
+
   /** @test */
   public function optionReserverRetraitBibAbonneShouldBeTrue() {
     $this->assertTrue($this->_service->isReserverRetraitBibAbonne());
@@ -111,9 +123,12 @@ class OpsysServiceFactoryWithoutCatalogueWebTest extends OpsysServiceFactoryWith
 
 
 
-class OpsysServiceFactoryWithoutParamCatalogueWebTest extends OpsysServiceFactoryWithCatalogueWebTestCase {
+class OpsysServiceFactoryWithoutParamCatalogueWebTest
+  extends OpsysServiceFactoryWithCatalogueWebTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->_service = Class_WebService_SIGB_Opsys::getService(array('url_serveur' => "http://localhost:8088/mockServiceRechercheSoap?WSDL"));
   }
 
@@ -128,29 +143,32 @@ class OpsysServiceFactoryWithoutParamCatalogueWebTest extends OpsysServiceFactor
 
 
 class OpsysServiceTestAutoConnect extends ModelTestCase {
+
   private $ouvre_session_res;
   private $client;
 
-  public function setUp(){
+  public function setUp() {
+    parent::setUp();
+
     $this->ouvre_session_res = $this->createMock(
-                                              'OuvreSessionResponseMock',
-                                              array('getGUID'));
+                                                 'OuvreSessionResponseMock',
+                                                 array('getGUID'));
     $this->ouvre_session_res
       ->expects($this->any())
       ->method('getGUID')
       ->will($this->returnValue("12345"));
 
     $this->ouvre_session_error = $this->createMock(
-                                    'OuvreSessionResponseMock',
-                                    array('getGUID'));
+                                                   'OuvreSessionResponseMock',
+                                                   array('getGUID'));
     $this->ouvre_session_error
       ->expects($this->any())
       ->method('getGUID')
       ->will($this->returnValue(""));
 
     $this->search_client = $this->createMock(
-                                   'MappedSoapClientMock',
-                                   array('OuvrirSession', 'FermerSession'));
+                                             'MappedSoapClientMock',
+                                             array('OuvrirSession', 'FermerSession'));
   }
 
 
@@ -185,10 +203,14 @@ class OpsysServiceTestAutoConnect extends ModelTestCase {
 
 
 class OpsysServiceFactoryTestUrls extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     $this->factory = new Class_WebService_SIGB_Opsys_ServiceFactory();
   }
 
+
   public function testWithFullUrl() {
     $full_url = 'http://81.80.216.130/websrvaloes/servicerecherche.asmx?WSDL';
     $this->assertEquals('http://81.80.216.130/websrvaloes/servicerecherche.asmx?WSDL',
@@ -197,6 +219,7 @@ class OpsysServiceFactoryTestUrls extends ModelTestCase {
                         $this->factory->getWsdlCatalogURL($full_url));
   }
 
+
   public function testWithRootUrl() {
     $root_url = 'http://10.0.0.1/websrvaloes/';
     $this->assertEquals('http://10.0.0.1/websrvaloes/servicerecherche.asmx?WSDL',
@@ -221,13 +244,12 @@ class OpsysServiceFactoryTestUrls extends ModelTestCase {
 
 class OpsysServiceTestProxy extends ModelTestCase {
 
-  protected $_storm_default_to_volatile = true,
-    $factory,
+  protected $factory,
     $_opsys_service;
 
-
   public function setUp() {
     parent::setUp();
+
     $this->factory = $this->mock();
     $this->factory->beStrict();
     $this->_opsys_service = (new Class_WebService_SIGB_Opsys)->setServiceFactory($this->factory);
@@ -282,6 +304,7 @@ class OpsysServiceTestProxy extends ModelTestCase {
 
 
 class OpsysServiceNoticeTestDispoExemplaire extends ModelTestCase {
+
   public function testPopDisponibiliteOnEmptyNoticeReturnsFalse(){
     $notice = new Class_WebService_SIGB_Notice('123');
     $this->assertFalse($notice->popDisponibilite());
@@ -308,7 +331,6 @@ class OpsysServiceNoticeCacheTestGetExemplaire extends ModelTestCase {
   private $notices;
   private $cache;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -416,14 +438,16 @@ class OpsysServiceNoticeCacheTestGetExemplaire extends ModelTestCase {
 
 
 abstract class OpsysServiceWithSessionTestCase extends ModelTestCase {
+
   protected $opsys;
 
-  public function setUp(){
+  public function setUp() {
+    parent::setUp();
+
     $this->ouvre_session_res = $this->mock();
     $this->search_client = $this->mock();
     $this->catalog_client = $this->mock();
 
-
     $this->ouvre_session_res
       ->whenCalled('getGUID')
       ->answers('guid_12345');
@@ -459,17 +483,18 @@ abstract class OpsysServiceWithSessionTestCase extends ModelTestCase {
 
 
 
-class OpsysServiceEmprAuthentifierErreurTestCreateEmprunteur extends OpsysServiceWithSessionTestCase {
+
+class OpsysServiceEmprAuthentifierErreurTestCreateEmprunteur
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
-
     $auth_response_error = new EmprAuthentifierResponse();
     $auth_response_error->EmprAuthentifierResult = new RspEmprAuthentifier();
     $auth_response_error->ErreurService = new WebSrvErreur();
     $auth_response_error->ErreurService->CodeErreur = '1';
 
-
     $entite_infos_response_error = new EmprListerEntiteResponse();
     $entite_infos_response_error->EmprListerEntiteResult = new RspEmprListerEntite();
     $entite_infos_response_error->EmprListerEntiteResult->ErreurService = new WebSrvErreur();
@@ -480,9 +505,9 @@ class OpsysServiceEmprAuthentifierErreurTestCreateEmprunteur extends OpsysServic
       ->whenCalled('EmprListerEntite')->answers($entite_infos_response_error);
 
     $this->emprunteur = $this->opsys->getEmprunteur(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('tintin')
-                            ->setPassword('1234'));
+                                                    Class_Users::getLoader()->newInstance()
+                                                    ->setLogin('tintin')
+                                                    ->setPassword('1234'));
   }
 
 
@@ -494,7 +519,9 @@ class OpsysServiceEmprAuthentifierErreurTestCreateEmprunteur extends OpsysServic
 
 
 
-class OpsysServiceEmprAuthentifierNoCommunicationTest extends OpsysServiceWithSessionTestCase {
+class OpsysServiceEmprAuthentifierNoCommunicationTest
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -503,9 +530,9 @@ class OpsysServiceEmprAuthentifierNoCommunicationTest extends OpsysServiceWithSe
       ->willDo(function() {throw new SoapFault('Communication', 'error');});
 
     $this->emprunteur = $this->opsys->getEmprunteur(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('tintin')
-                            ->setPassword('1234'));
+                                                    Class_Users::getLoader()->newInstance()
+                                                    ->setLogin('tintin')
+                                                    ->setPassword('1234'));
   }
 
 
@@ -517,7 +544,9 @@ class OpsysServiceEmprAuthentifierNoCommunicationTest extends OpsysServiceWithSe
 
 
 
-class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithSessionTestCase {
+class OpsysServiceEmprAuthentifierTestCreateEmprunteur
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -527,9 +556,8 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
 
 
     $this->emprunteur = $this->opsys->getEmprunteur(
-      Class_Users::newInstanceWithId(123, ['login' => 'tintin',
-                                           'password' => '1234']));
-
+                                                    Class_Users::newInstanceWithId(123, ['login' => 'tintin',
+                                                                                         'password' => '1234']));
   }
 
 
@@ -636,6 +664,7 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
     $this->assertEquals(4, $this->emprunteur->getNbEmprunts());
   }
 
+
   public function testGetNbPretsRetardReturnsTwo() {
     $this->assertEquals(2, $this->emprunteur->getNbPretsEnRetard());
   }
@@ -643,11 +672,12 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
 
   public function testGetUserInformationsPopupUrlReturnsNull() {
     $this->assertEquals(null, $this->emprunteur->getUserInformationsPopupUrl(
-                                Class_Users::getLoader()->newInstance()
-                                  ->setLogin('tintin')
-                                  ->setPassword('1234')));
+                                                                             Class_Users::getLoader()->newInstance()
+                                                                             ->setLogin('tintin')
+                                                                             ->setPassword('1234')));
   }
 
+
   public function testGetEmpruntsOfTintin() {
     $liste_prets = new EmprListerEntiteResponse();
     $liste_prets->EmprListerEntiteResult = new RspEmprListerEntite();
@@ -656,13 +686,12 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
     $this->search_client
       ->whenCalled('EmprListerEntite')
       ->willDo(function() use ($liste_prets, $liste_retards) {
-          $this->search_client
-            ->whenCalled('EmprListerEntite')
-            ->answers($liste_retards);
-
-          return $liste_retards;
-        });
+        $this->search_client
+          ->whenCalled('EmprListerEntite')
+          ->answers($liste_retards);
 
+        return $liste_retards;
+      });
 
     $this->assertEquals(0, count($this->opsys->getEmpruntsOf($this->emprunteur)));;
   }
@@ -695,7 +724,7 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
         ->setFicheSIGB(['fiche' => $this->emprunteur])
         ->setIntBib(Class_IntBib::newInstanceWithId(2, ['comm_sigb' => Class_IntBib::COM_OPSYS,
                                                         'comm_params' => serialize([ 'url_serveur' => "http://localhost:8088/mockServiceRechercheSoap?WSDL",
-                                                                                     'catalogue_web' => '1'])]));
+                                                                                    'catalogue_web' => '1'])]));
       $this->emprunteur->updateFromUser($user)->save();
       $this->fail();
     } catch (Exception $e) {
@@ -706,7 +735,10 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
 
 
 
-class OpsysServiceGetExemplaireFromCacheTestDisponibilite extends OpsysServiceWithSessionTestCase {
+
+class OpsysServiceGetExemplaireFromCacheTestDisponibilite
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -743,6 +775,7 @@ class OpsysServiceGetExemplaireFromCacheTestDisponibilite extends OpsysServiceWi
     $this->assertTrue($exemplaire->isValid());
   }
 
+
   public function testSecondExemplaireDisponible(){
     $item = Class_Exemplaire::findFirstBy(['id_origine' => 'potter',
                                            'code_barres' => 1]);
@@ -752,6 +785,7 @@ class OpsysServiceGetExemplaireFromCacheTestDisponibilite extends OpsysServiceWi
     $this->assertTrue($exemplaire->isValid());
   }
 
+
   public function testThirdExemplaireDisponible(){
     $item = Class_Exemplaire::findFirstBy(['id_origine' => 'potter',
                                            'code_barres' => 2]);
@@ -778,12 +812,13 @@ class OpsysServiceGetExemplaireFromCacheTestDisponibilite extends OpsysServiceWi
     $this->assertEquals("2", $exemplaire->getNbReservations());
     $this->assertTrue($exemplaire->isValid());
   }
-
 }
 
 
 
+
 class OpsysServiceTestSupprimerReservation extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -793,12 +828,12 @@ class OpsysServiceTestSupprimerReservation extends OpsysServiceWithSessionTestCa
     $this->search_client
       ->whenCalled('EmprSupprResa')
       ->willDo(function($param) {
-          $this->assertEquals($param, new EmprSupprResa('guid_12345', 'res_2345'));
-          $this->search_client
-            ->whenCalled('EmprSupprResa')
-            ->willDo(function() {$this->fait('EmprSupprResa ne devrait être appelé qu\'une fois');});
-          return $this->resa_response;
-        });
+        $this->assertEquals($param, new EmprSupprResa('guid_12345', 'res_2345'));
+        $this->search_client
+          ->whenCalled('EmprSupprResa')
+          ->willDo(function() {$this->fait('EmprSupprResa ne devrait être appelé qu\'une fois');});
+        return $this->resa_response;
+      });
   }
 
 
@@ -806,11 +841,11 @@ class OpsysServiceTestSupprimerReservation extends OpsysServiceWithSessionTestCa
     $this->resa_response->EmprReserverResult->Reussite = "true";
 
     $result = $this->opsys->supprimerReservation(
-                Class_Users::getLoader()->newInstance()
-                  ->setLogin('tintin')
-                  ->setPassword('pass'),
-                'res_2345'
-              );
+                                                 Class_Users::getLoader()->newInstance()
+                                                 ->setLogin('tintin')
+                                                 ->setPassword('pass'),
+                                                 'res_2345'
+    );
 
     $this->assertEquals(array('statut' => 1, 'erreur' =>''), $result);
   }
@@ -822,18 +857,21 @@ class OpsysServiceTestSupprimerReservation extends OpsysServiceWithSessionTestCa
     $this->resa_response->EmprReserverResult->ErreurService->LibelleErreur = 'Document non trouvé';
 
     $result = $this->opsys->supprimerReservation(
-                Class_Users::getLoader()->newInstance()
-                  ->setLogin('tintin')
-                  ->setPassword('pass'),
-                'res_2345'
-              );
+                                                 Class_Users::getLoader()->newInstance()
+                                                 ->setLogin('tintin')
+                                                 ->setPassword('pass'),
+                                                 'res_2345'
+    );
 
     $this->assertEquals(array('statut' => 0, 'erreur' =>'Document non trouvé'), $result);
   }
 }
 
 
+
+
 class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -874,7 +912,6 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
     $champ_mail->Etiquette = '115';
     $champ_mail->SousChamps = array($sous_champ_email, $sous_champ_contact_email);
 
-
     $sous_champ_telephone = new ImportSousChamp();
     $sous_champ_telephone->Etiquette = '119$a';
     $sous_champ_telephone->_ = '01 23 45 67';
@@ -917,6 +954,7 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
       ->answers($this->ecrire_notice_response);
   }
 
+
   public function testSaveWihtNoErrorsDoNotRaiseErrors() {
     try {
       $this->florence->save();
@@ -926,6 +964,7 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
     }
   }
 
+
   public function testSaveWithErrorRaisesException() {
     $error = new WebSrvErreur();
     $error->CodeErreur = '10002';
@@ -945,7 +984,10 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
 }
 
 
+
+
 class OpsysServiceTestProlongerPret extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -964,14 +1006,15 @@ class OpsysServiceTestProlongerPret extends OpsysServiceWithSessionTestCase {
     $this->empr_response->EmprProlongResult->MessageRetour = '1 prolongation effectuée';
 
     $result = $this->opsys->prolongerPret(
-                              Class_Users::getLoader()->newInstance()
-                                ->setLogin('tintin')
-                                ->setPassword('pass'),
-                              'pret_12'
-                            );
+                                          Class_Users::getLoader()->newInstance()
+                                          ->setLogin('tintin')
+                                          ->setPassword('pass'),
+                                          'pret_12'
+    );
     $this->assertEquals(array('statut' => 1, 'erreur' => ''), $result);
   }
 
+
   public function prolongationErrorMessages() {
     return [
             [''],
@@ -990,33 +1033,39 @@ class OpsysServiceTestProlongerPret extends OpsysServiceWithSessionTestCase {
     $this->empr_response->EmprProlongResult->MessageRetour = $opsys_message;
 
     $result = $this->opsys->prolongerPret(
-                              Class_Users::getLoader()->newInstance()
-                                ->setLogin('tintin')
-                                ->setPassword('pass'),
-                              'pret_12'
-                            );
+                                          Class_Users::getLoader()->newInstance()
+                                          ->setLogin('tintin')
+                                          ->setPassword('pass'),
+                                          'pret_12'
+    );
     $this->assertEquals(array('statut' => 0,
                               'erreur' => 'La prolongation de ce document est impossible'),
                         $result);
   }
 
+
   public function testEmprProlongDataError() {
     $this->empr_response->EmprProlongResult->Reussite = "false";
     $this->empr_response->EmprProlongResult->ErreurService = new WebSrvErreur();
     $this->empr_response->EmprProlongResult->ErreurService->LibelleErreur = 'Prêt inexistant';
 
     $result = $this->opsys->prolongerPret(Class_Users::getLoader()->newInstance()
-                                ->setLogin('tintin')
-                                ->setPassword('pass'), 'pret_12');
+                                          ->setLogin('tintin')
+                                          ->setPassword('pass'), 'pret_12');
     $this->assertEquals(array('statut' => 0, 'erreur' => 'Prêt inexistant'), $result);
   }
 }
 
 
 
+
 abstract class OpsysServiceNoticeAbstractTest extends ModelTestCase {
+
   protected $response;
+
   public function setUp() {
+    parent::setUp();
+
     $emplacement_reserve = Class_CodifEmplacement::newInstanceWithId(3)
       ->setLibelle('Réserve')
       ->setRegles('995$u=RES');
@@ -1043,7 +1092,6 @@ abstract class OpsysServiceNoticeAbstractTest extends ModelTestCase {
     $piege_manquant->NomDonnee = "Piège";
     $piege_manquant->ValeurDonnee = "Manquant";
 
-
     $nb_resa = new DonneeFille();
     $nb_resa->NomDonnee = "Nb resas";
     $nb_resa->ValeurDonnee = "3";
@@ -1052,7 +1100,6 @@ abstract class OpsysServiceNoticeAbstractTest extends ModelTestCase {
     $edition->NomDonnee = "Edition";
     $edition->ValeurDonnee = "2012";
 
-
     $potter = new NoticeFille();
     $potter->NumFille = "potter";
     $potter->Reservable = "true";
@@ -1100,10 +1147,10 @@ abstract class OpsysServiceNoticeAbstractTest extends ModelTestCase {
 
 
 
-class OpsysServiceRecupererNoticeResponseTestCreateNotice extends OpsysServiceNoticeAbstractTest {
-  public function setUp() {
-    parent::setUp();
-  }
+
+class OpsysServiceRecupererNoticeResponseTestCreateNotice
+  extends OpsysServiceNoticeAbstractTest {
+
   public function testPotterNonDispo() {
     $notice = $this->response->createNotice();
     $potter = $notice->exemplaireAt(0);
@@ -1129,7 +1176,7 @@ class OpsysServiceRecupererNoticeResponseTestCreateNotice extends OpsysServiceNo
     $notice = $this->response->createNotice();
     $potter = $notice->exemplaireAt(0);
     $this->assertEquals(3, $potter->getNbReservations());
-    }
+  }
 
 
   public function testEditionShouldReturn2012() {
@@ -1159,7 +1206,10 @@ class OpsysServiceRecupererNoticeResponseTestCreateNotice extends OpsysServiceNo
 }
 
 
+
+
 class OpsysServicePiegesTest extends OpsysServiceNoticeAbstractTest{
+
   public function setUp() {
     parent::setUp();
 
@@ -1181,14 +1231,15 @@ class OpsysServicePiegesTest extends OpsysServiceNoticeAbstractTest{
 
     $notice = $this->response->createNotice();
     $this->scrap = $notice->exemplaireAt(1);
-
   }
 
+
   /** @test */
   public function scrapShouldDisplayConsultationSurPlace() {
     $this->assertEquals("Non disponible<span>(Consultation sur place)</span>", $this->scrap->getDisponibilite());
   }
 
+
   /** @test */
   public function scrapShouldNotBeReservable() {
     $this->assertFalse($this->scrap->isReservable());
@@ -1197,14 +1248,19 @@ class OpsysServicePiegesTest extends OpsysServiceNoticeAbstractTest{
 
 
 
+
 class OpsysServiceEmprReserverResponseTest extends ModelTestCase {
+
   private $default_rsp;
 
-  public function setUp(){
+  public function setUp() {
+    parent::setUp();
+
     $this->default_rsp = new EmprReserverResponse();
     $this->default_rsp->EmprReserverResult = new RspEmprAction();
   }
 
+
   public function testSuccessfulResponse(){
     $success = $this->default_rsp;
     $success->EmprReserverResult->Reussite = "true";
@@ -1213,6 +1269,7 @@ class OpsysServiceEmprReserverResponseTest extends ModelTestCase {
                         $success->getReussite());
   }
 
+
   public function testErrorResponse(){
     $error = $this->default_rsp;
     $error->EmprReserverResult->ErreurService = new WebSrvErreur();
@@ -1224,11 +1281,15 @@ class OpsysServiceEmprReserverResponseTest extends ModelTestCase {
 
 
 
+
 class OpsysServiceEmprunteurAttributesTest extends ModelTestCase {
-  public function setUp(){
+
+  public function setUp() {
+    parent::setUp();
+
     $this->opsys_service = $this->createMock('Mock_OpsysService',
-                                          array('getEmpruntsOf',
-                                                'getReservationsOf'));
+                                             array('getEmpruntsOf',
+                                                   'getReservationsOf'));
 
     $this->emprunteur = new Class_WebService_SIGB_Emprunteur('123', 'Jean');
     $this->emprunteur->setEmail('jean@gmail.com');
@@ -1236,10 +1297,12 @@ class OpsysServiceEmprunteurAttributesTest extends ModelTestCase {
     $this->emprunteur->setNbPretsEnRetard(5);
   }
 
+
   public function testID(){
     $this->assertEquals('123', $this->emprunteur->getId());
   }
 
+
   public function testEmail(){
     $this->assertEquals('jean@gmail.com', $this->emprunteur->getEmail());
   }
@@ -1300,22 +1363,29 @@ class OpsysServiceEmprunteurAttributesTest extends ModelTestCase {
 
 
 
+
 class OpsysServiceReservationEmittedTest extends ModelTestCase {
-  public function setUp(){
+
+  public function setUp() {
+    parent::setUp();
+
     $this->reservation = new Class_WebService_SIGB_Reservation('23', new Class_WebService_SIGB_Exemplaire('potter'));
     $this->reservation->parseExtraAttributes([
-                                             'Etat' => 'Réservation émise le 22/02/2014']);
+                                              'Etat' => 'Réservation émise le 22/02/2014']);
   }
 
+
   public function testRangDefaultToOne() {
     $this->assertEquals(1, $this->reservation->getRang());
   }
 
+
   public function testSetRang(){
     $this->reservation->setRang(3);
     $this->assertEquals(3, $this->reservation->getRang());
   }
 
+
   public function testEtat(){
     $this->assertEquals('Réservation émise le 22/02/2014', $this->reservation->getEtat());
   }
@@ -1331,7 +1401,10 @@ class OpsysServiceReservationEmittedTest extends ModelTestCase {
 
 
 class OpsysServiceReservationAvailableTest extends ModelTestCase {
-  public function setUp(){
+
+  public function setUp() {
+    parent::setUp();
+
     $this->reservation = new Class_WebService_SIGB_Opsys_Reservation('23',
                                                                      new Class_WebService_SIGB_Exemplaire('potter'));
     $this->reservation->parseExtraAttributes([
@@ -1352,7 +1425,9 @@ class OpsysServiceReservationAvailableTest extends ModelTestCase {
 
 
 
+
 class EmpruntFixtures {
+
   public static function potter(){
     $potter = new Class_WebService_SIGB_Emprunt('12', new Class_WebService_SIGB_Exemplaire(123));
     $potter->getExemplaire()->setTitre('Potter');
@@ -1365,6 +1440,7 @@ class EmpruntFixtures {
     return $potter;
   }
 
+
   public static function alice(){
     $alice = new Class_WebService_SIGB_Emprunt('13', new Class_WebService_SIGB_Exemplaire(456));
     $alice->getExemplaire()->setTitre('Alice');
@@ -1398,32 +1474,39 @@ class OpsysServiceEmpruntAttributesTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->emprunt = EmpruntFixtures::potter();
   }
 
+
   public function testDateRetour(){
     $this->assertEquals('29/10/2010', $this->emprunt->getDateRetour());
   }
 
+
   public function testBibliotheque(){
     $this->assertEquals('Astrolabe',
                         $this->emprunt->getExemplaire()->getBibliotheque());
   }
 
+
   public function testSection(){
     $this->assertEquals('Espace jeunesse',
                         $this->emprunt->getExemplaire()->getSection());
   }
 
+
   public function testAuteur(){
     $this->assertEquals('JK Rowling',
                         $this->emprunt->getExemplaire()->getAuteur());
   }
 
+
   public function testRetard(){
     $this->assertTrue($this->emprunt->enRetard());
   }
 
+
   public function testNoNotice() {
     $this->assertEquals('1234', $this->emprunt->getExemplaire()->getNoNotice());
   }
@@ -1434,9 +1517,9 @@ class OpsysServiceEmpruntAttributesTest extends ModelTestCase {
 
 class OpsysServiceEmpruntRetardAttributesTest extends ModelTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $this->emprunt = EmpruntFixtures::potter();
     $this->emprunt->setEnRetard(true);
   }
@@ -1446,21 +1529,25 @@ class OpsysServiceEmpruntRetardAttributesTest extends ModelTestCase {
     $this->assertEquals('29/10/2010', $this->emprunt->getDateRetour());
   }
 
+
   public function testBibliotheque(){
     $this->assertEquals('Astrolabe',
                         $this->emprunt->getExemplaire()->getBibliotheque());
   }
 
+
   public function testSection(){
     $this->assertEquals('Espace jeunesse',
                         $this->emprunt->getExemplaire()->getSection());
   }
 
+
   public function testAuteur(){
     $this->assertEquals('JK Rowling',
                         $this->emprunt->getExemplaire()->getAuteur());
   }
 
+
   public function testRetard(){
     $this->assertTrue($this->emprunt->enRetard());
   }
@@ -1473,6 +1560,7 @@ class OpsysServiceEmpruntTestSort extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->opsys_service = $this->createMock('Mock_OpsysService',
                                              ['getEmpruntsOf',
                                               'getReservationsOf']);
@@ -1501,11 +1589,13 @@ class OpsysServiceEmpruntTestSort extends ModelTestCase {
     $this->assertEquals($this->emprunteur->getEmpruntAt(2)->getTitre(), 'Potter');
   }
 
+
   /** @test */
   public function cendrillonBibliothequeShouldBeAstrolabe() {
     $this->assertEquals('Astrolabe', $this->emprunteur->getEmpruntAt(1)->getBibliotheque());
   }
 
+
   /** @test */
   public function aliceBibliothequeShouldBeAstrolabe() {
     $this->assertEquals('Astrolabe', $this->emprunteur->getEmpruntAt(0)->getBibliotheque());
@@ -1516,22 +1606,26 @@ class OpsysServiceEmpruntTestSort extends ModelTestCase {
 
 
 class OpsysServiceEmprunteurTestPretsEnRetard extends ModelTestCase {
+
   /** @var Class_WebService_SIGB_Emprunteur */
   protected $emprunteur;
 
   public function setUp() {
+    parent::setUp();
+
     $this->emprunteur = new Class_WebService_SIGB_Emprunteur('1234', 'Yoda');
     $this->emprunteur->empruntsAddAll(array(
-                        EmpruntFixtures::cendrillon(),
-                        EmpruntFixtures::alice(),
-                        EmpruntFixtures::potter()
-                      ));
+                                            EmpruntFixtures::cendrillon(),
+                                            EmpruntFixtures::alice(),
+                                            EmpruntFixtures::potter()
+                                            ));
   }
 
+
   public function testNbPretsEnRetard() {
     $this->assertEquals(3, $this->emprunteur->getNbPretsEnRetard());
     $this->emprunteur->setNbPretsEnRetard(null)
-                      ->getEmpruntAt(1)->setEnRetard(false);
+                     ->getEmpruntAt(1)->setEnRetard(false);
     $this->assertEquals(2, $this->emprunteur->getNbPretsEnRetard());
 
   }
@@ -1540,9 +1634,12 @@ class OpsysServiceEmprunteurTestPretsEnRetard extends ModelTestCase {
 
 
 
-class OpsysServiceTestReserverExemplaireTest extends OpsysServiceWithSessionTestCase {
+class OpsysServiceTestReserverExemplaireTest
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $reserverResponse = new EmprReserverResponse();
     $reserverResponse->EmprReserverResult = new RspEmprAction();
     $reserverResponse->EmprReserverResult->Reussite = "true";
@@ -1553,8 +1650,8 @@ class OpsysServiceTestReserverExemplaireTest extends OpsysServiceWithSessionTest
       ->answers($reserverResponse);
 
     $notice_sigb = (new Class_WebService_SIGB_Notice('ido344'))
-                    ->addExemplaire((new Class_WebService_SIGB_Exemplaire('id_ex_344'))
-                                    ->setCodeBarre('cb344'));
+      ->addExemplaire((new Class_WebService_SIGB_Exemplaire('id_ex_344'))
+                      ->setCodeBarre('cb344'));
 
     $this->opsys->getNoticeCache()->cache($notice_sigb);
   }
@@ -1562,9 +1659,9 @@ class OpsysServiceTestReserverExemplaireTest extends OpsysServiceWithSessionTest
 
   public function testReserverSuccessful() {
     $result = $this->opsys->reserverExemplaire(
-      Class_Users::newInstance(['login' => 'tintin', 'password' => 'pass']),
-      Class_Exemplaire::newInstanceWithId(12, ['id_origine' => 'ido344', 'code_barres' => 'cb344']),
-      'melun');
+                                               Class_Users::newInstance(['login' => 'tintin', 'password' => 'pass']),
+                                               Class_Exemplaire::newInstanceWithId(12, ['id_origine' => 'ido344', 'code_barres' => 'cb344']),
+                                               'melun');
 
     $this->assertEquals(['statut' => 1, 'erreur' => ''], $result);
   }
@@ -1572,7 +1669,10 @@ class OpsysServiceTestReserverExemplaireTest extends OpsysServiceWithSessionTest
 
 
 
-class OpsysServiceTestReserverExemplaireWithOptionReserverRetraitBibAbonne extends OpsysServiceWithSessionTestCase {
+
+class OpsysServiceTestReserverExemplaireWithOptionReserverRetraitBibAbonne
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1590,8 +1690,8 @@ class OpsysServiceTestReserverExemplaireWithOptionReserverRetraitBibAbonne exten
       ->answers($reserverResponse);
 
     $notice_sigb = (new Class_WebService_SIGB_Notice('ido344'))
-                    ->addExemplaire((new Class_WebService_SIGB_Exemplaire('id_ex_344'))
-                                    ->setCodeBarre('cb344'));
+      ->addExemplaire((new Class_WebService_SIGB_Exemplaire('id_ex_344'))
+                      ->setCodeBarre('cb344'));
 
     $this->opsys->getNoticeCache()->cache($notice_sigb);
   }
@@ -1599,9 +1699,9 @@ class OpsysServiceTestReserverExemplaireWithOptionReserverRetraitBibAbonne exten
 
   public function testReserverSuccessful() {
     $result = $this->opsys->reserverExemplaire(
-      Class_Users::newInstance(['login' => 'tintin', 'password' => 'pass']),
-      Class_Exemplaire::newInstanceWithId(12, ['id_origine' => 'ido344', 'code_barres' => 'cb344']),
-      'melun');
+                                               Class_Users::newInstance(['login' => 'tintin', 'password' => 'pass']),
+                                               Class_Exemplaire::newInstanceWithId(12, ['id_origine' => 'ido344', 'code_barres' => 'cb344']),
+                                               'melun');
 
     $this->assertEquals(['statut' => 1, 'erreur' => ''], $result);
   }
@@ -1611,6 +1711,7 @@ class OpsysServiceTestReserverExemplaireWithOptionReserverRetraitBibAbonne exten
 
 
 class OpsysServiceTestEntiteEmprWithPret extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1663,27 +1764,27 @@ class OpsysServiceTestEntiteEmprWithPret extends ModelTestCase {
 
 
   /**
-  * @depends empruntsShouldHaveSizeOfOne
-  * @test
-  */
+   * @depends empruntsShouldHaveSizeOfOne
+   * @test
+   */
   public function titreShouldBePetitGrounch($emprunt) {
     $this->assertContains('Petit Grounch', $emprunt->getTitre());
   }
 
 
   /**
-  * @test
-  * @depends empruntsShouldHaveSizeOfOne
-  */
+   * @test
+   * @depends empruntsShouldHaveSizeOfOne
+   */
   public function dateRetourShouldBe27_06_2012($emprunt) {
     $this->assertEquals('27/06/2012', $emprunt->getDateRetour());
   }
 
 
   /**
-  * @test
-  * @depends empruntsShouldHaveSizeOfOne
-  */
+   * @test
+   * @depends empruntsShouldHaveSizeOfOne
+   */
   public function bibliothequeShouldBeAstro($emprunt) {
     $this->assertEquals('Astro', $emprunt->getBibliotheque());
   }
@@ -1692,27 +1793,30 @@ class OpsysServiceTestEntiteEmprWithPret extends ModelTestCase {
 
 
 
-class OpsysServiceEmprAuthentifierParamsTest extends OpsysServiceWithSessionTestCase {
+class OpsysServiceEmprAuthentifierParamsTest
+  extends OpsysServiceWithSessionTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->auth_response_dummy = new EmprAuthentifierResponse();
     $this->auth_response_dummy->EmprAuthentifierResult = new RspEmprAuthentifier();
 
     $this->search_client
       ->whenCalled('EmprAuthentifier')
       ->willDo(
-        function($auth_request) {
-          $this->auth_request = $auth_request;
-          return $this->auth_response_dummy;
-        });
+               function($auth_request) {
+                 $this->auth_request = $auth_request;
+                 return $this->auth_response_dummy;
+               });
   }
 
 
   /** @test */
   public function withLoginAndNoIdAbonAuthentifierShouldUseLogin() {
     $this->opsys->getEmprunteur(
-      Class_Users::newInstance(['login' => 'tintin',
-                                'password' => '1234']));
+                                Class_Users::newInstance(['login' => 'tintin',
+                                                          'password' => '1234']));
 
     $this->assertEquals('tintin', $this->auth_request->Param->IDEmprunteur);
   }
@@ -1721,9 +1825,9 @@ class OpsysServiceEmprAuthentifierParamsTest extends OpsysServiceWithSessionTest
   /** @test */
   public function withLoginAndIdAbonAuthentifierShouldUseLoginAlso() {
     $this->opsys->getEmprunteur(
-      Class_Users::newInstance(['login' => 'tintin',
-                                'password' => '1234',
-                                'idabon' => 'vol777']));
+                                Class_Users::newInstance(['login' => 'tintin',
+                                                          'password' => '1234',
+                                                          'idabon' => 'vol777']));
 
     $this->assertEquals('tintin', $this->auth_request->Param->IDEmprunteur);
   }
@@ -1733,6 +1837,7 @@ class OpsysServiceEmprAuthentifierParamsTest extends OpsysServiceWithSessionTest
 
 
 class OpsysServiceDisconnectTest extends OpsysServiceWithSessionTestCase {
+
   protected $_fermer_session;
 
   public function setUp() {
@@ -1741,9 +1846,9 @@ class OpsysServiceDisconnectTest extends OpsysServiceWithSessionTestCase {
     $this->search_client
       ->whenCalled('FermerSession')
       ->willDo(
-        function($fs) {
-          $this->_fermer_session = $fs;
-        });
+               function($fs) {
+                 $this->_fermer_session = $fs;
+               });
 
     $this->opsys->disconnect();
   }
@@ -1772,6 +1877,7 @@ class OpsysServiceDisconnectTest extends OpsysServiceWithSessionTestCase {
 
 // see http://forge.afi-sa.fr/issues/100763
 class OpsysServiceGetEmpruntsOfWithInvalidXmlTest extends ModelTestCase {
+
   /**
    * @test
    * @expectedException SoapFault
@@ -1785,9 +1891,9 @@ class OpsysServiceGetEmpruntsOfWithInvalidXmlTest extends ModelTestCase {
 
                    ->whenCalled('EmprListerEntite')
                    ->willDo(function()
-                            {
-                              throw new SoapFault('1512', 'Character reference "&#x1E" is an invalid XML character');
-                            });
+                   {
+                     throw new SoapFault('1512', 'Character reference "&#x1E" is an invalid XML character');
+                   });
 
     (new Class_WebService_SIGB_Opsys_Service($client))->getEmpruntsOf($this->mock());
   }
diff --git a/tests/library/Class/WebService/SIGB/VSmartAuthenticateTest.php b/tests/library/Class/WebService/SIGB/VSmartAuthenticateTest.php
index 1157f310d64ecafd1e9360a251220a6b0d5fd621..791b47a446469ee64903ada23d2acf893e85265d 100644
--- a/tests/library/Class/WebService/SIGB/VSmartAuthenticateTest.php
+++ b/tests/library/Class/WebService/SIGB/VSmartAuthenticateTest.php
@@ -69,17 +69,24 @@ class MockSoapClientForVSmart {
 }
 
 
+
+
 class DefaultVSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
   /** @test */
-  function getSoapClientClassShouldReturnMappedSoapClient() {
-    $this->assertEquals('Class_WebService_MappedSoapClient',
+  public function getSoapClientClassShouldReturnMappedSoapClient() {
+    $this->assertEquals(Class_WebService_MappedSoapClient::class,
                         Class_WebService_SIGB_VSmart_Service::getSoapClientClass());
   }
 }
 
 
-class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
+
+
+class VSmartAuthenticateServiceTest extends ModelTestCase {
+
   public function setUp() {
+    parent::setUp();
+
     Class_WebService_SIGB_VSmart_Service::setSoapClientClass('MockSoapClientForVSmart');
     $this->service = Class_WebService_SIGB_VSmart_Service::getService('http://12.34.56.78/moulins');
     $this->soap_client = $this->service->getSoapClient();
@@ -87,36 +94,38 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
 
 
   /** @test */
-  function getSoapClientShouldBeAnInstanceOfMockSoapClient() {
-    $this->assertInstanceOf('MockSoapClientForVSmart', $this->soap_client);
+  public function getSoapClientShouldBeAnInstanceOfMockSoapClient() {
+    $this->assertInstanceOf(MockSoapClientForVSmart::class, $this->soap_client);
   }
 
 
   /** @test */
-  function soapClientWsdlAdressShouldBeSSO_Authenticate_CLS_WSDL_1() {
-    $this->assertEquals('http://12.34.56.78/moulins/SSO.Authenticate.CLS?WSDL=1', $this->soap_client->getWSDL());
-
+  public function soapClientWsdlAdressShouldBeSSO_Authenticate_CLS_WSDL_1() {
+    $this->assertEquals('http://12.34.56.78/moulins/SSO.Authenticate.CLS?WSDL=1',
+                        $this->soap_client->getWSDL());
   }
 
 
   /** @test */
-  function soapClientOptionsShouldContainsCacheWSDL() {
-    $this->assertEquals(array('cache_wsdl' => WSDL_CACHE_BOTH),
+  public function soapClientOptionsShouldContainsCacheWSDL() {
+    $this->assertEquals(['cache_wsdl' => WSDL_CACHE_BOTH],
                         $this->soap_client->getOptions());
   }
 
 
   /** @test */
-  function getAuthenticateTokenForUserShouldAnswerDEC157D9C0DA11AFABCE58C56300C30B() {
+  public function getAuthenticateTokenForUserShouldAnswerDEC157D9C0DA11AFABCE58C56300C30B() {
     $response = new UserResponse;
     $response->UserResult = 'DEC157D9C0DA11AFABCE58C56300C30B';
     $this->soap_client->setUserResponse($response);
 
+    $auth_user = Class_Users::newInstance(['login' => 'manon',
+                                           'password' => '21-07-2010']);
+
     $this->assertEquals('DEC157D9C0DA11AFABCE58C56300C30B',
-                        $this->service->getAuthenticateTokenForUser(
-                            Class_Users::getLoader()->newInstance()
-                              ->setLogin('manon')
-                              ->setPassword('21-07-2010')));
+                        $this->service
+                        ->getAuthenticateTokenForUser($auth_user));
+
     return $this->soap_client->getUserParams();
   }
 
@@ -140,7 +149,7 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
 
 
   /** @test */
-  function withUserMario() {
+  public function withUserMario() {
     $response = new UserResponse;
     $response->UserResult = 'ABCD';
     $this->soap_client->setUserResponse($response);
@@ -152,17 +161,17 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
    * @depends withUserMario
    * @test
    */
-  function popupUrlForReservationShouldBeFunctionReservationWithToken($service) {
+  public function popupUrlForReservationShouldBeFunctionReservationWithToken($service) {
     $expected_url = sprintf('http://%s/LoginWebSso.csp?Token=ABCD&Function=Reservation&RecordNumber=%s',
                             Class_WebService_SIGB_VSmart_Service::MOULINS_POPUP_SERVER,
                             urlencode('2:01234'));
 
+    $auth_user = Class_Users::newInstance(['login' => 'mario',
+                                           'password' => 'password']);
+
     $this->assertEquals($expected_url,
-                        $service->getPopupUrlForReservation(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password'),
-                          '2/01234'));
+                        $service->getPopupUrlForReservation($auth_user,
+                                                            '2/01234'));
   }
 
 
@@ -170,21 +179,20 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
    * @depends withUserMario
    * @test
    */
-  function reserverExemplaireShouldReturnArrayWithPopup($service) {
-    $expected_response = array('popup' => sprintf('http://%s/LoginWebSso.csp?Token=ABCD&Function=Reservation&RecordNumber=%s',
-                                                  Class_WebService_SIGB_VSmart_Service::MOULINS_POPUP_SERVER,
-                                                  urlencode('2:01234')));
-    $this->assertEquals($expected_response,
-                        $service->reserverExemplaire(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password'),
+  public function reserverExemplaireShouldReturnArrayWithPopup($service) {
+    $expected_response = ['popup' => sprintf('http://%s/LoginWebSso.csp?Token=ABCD&Function=Reservation&RecordNumber=%s',
+                                             Class_WebService_SIGB_VSmart_Service::MOULINS_POPUP_SERVER,
+                                             urlencode('2:01234'))];
+
+    $auth_user = Class_Users::newInstance(['login' => 'mario',
+                                           'password' => 'password']);
 
-                          Class_Exemplaire::getLoader()
-                          ->newInstanceWithId(234)
-                          ->setIdOrigine('2/01234'),
+    $item = $this->fixture(Class_Exemplaire::class,
+                           ['id' => 234,
+                            'id_origine' => '2/01234']);
 
-                          ''));
+    $this->assertEquals($expected_response,
+                        $service->reserverExemplaire($auth_user, $item, ''));
   }
 
 
@@ -192,19 +200,18 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
    * @depends withUserMario
    * @test
    */
-  function whenGetPopupRaiseErrorReserverExemplaireShouldReturnArrayWithErrorMessage($service) {
+  public function whenGetPopupRaiseErrorReserverExemplaireShouldReturnArrayWithErrorMessage($service) {
     $service->getSoapClient()->triggerErrorOnUser();
-    $this->assertEquals(array('erreur' => 'An error occured'),
-                        $service->reserverExemplaire(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password'),
 
-                          Class_Exemplaire::getLoader()
-                          ->newInstanceWithId(234)
-                          ->setIdOrigine('2/01234'),
+    $auth_user = Class_Users::newInstance(['login' => 'mario',
+                                           'password' => 'password']);
 
-                          ''));
+    $item = $this->fixture(Class_Exemplaire::class,
+                           ['id' => 234,
+                            'id_origine' => '2/01234']);
+
+    $this->assertEquals(['erreur' => 'An error occured'],
+                        $service->reserverExemplaire($auth_user, $item, ''));
   }
 
 
@@ -212,19 +219,19 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
    * @depends withUserMario
    * @test
    */
-  function popupUrlForUserInformationsShouldBeFunctionModuleADM($service) {
+  public function popupUrlForUserInformationsShouldBeFunctionModuleADM($service) {
     $expected_url = sprintf('http://%s/LoginWebSso.csp?Token=ABCD&Function=UserActivities&Module=ADM',
                             Class_WebService_SIGB_VSmart_Service::MOULINS_POPUP_SERVER);
+
+    $auth_user = Class_Users::newInstance(['login' => 'mario',
+                                           'password' => 'password']);
+
     $this->assertEquals($expected_url,
-                        $service->getPopupUrlForUserInformations(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password'),
-                          '2/01234'));
+                        $service->getPopupUrlForUserInformations($auth_user,
+                                                                 '2/01234'));
   }
 
 
-
   /**
    * @depends withUserMario
    * @test
@@ -242,53 +249,58 @@ class VSmartAuthenticateServiceTest extends PHPUnit_Framework_TestCase {
       ->will($this->returnValue(VSmartFixtures::xmlBorrowerEvelyne()));
 
     $service->setWebClient($mock_web_client);
+
+    $auth_user = Class_Users::newInstance(['login' => 'mario',
+                                           'password' => 'password']);
+
     $this->assertEquals($expected_url,
-                        $service->getEmprunteur(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password')
-                        )->getUserInformationsPopupUrl(
-                          Class_Users::getLoader()->newInstance()
-                            ->setLogin('mario')
-                            ->setPassword('password')));
+                        $service
+                        ->getEmprunteur($auth_user)
+                        ->getUserInformationsPopupUrl($auth_user));
   }
 }
 
 
 
-class VSmartAuthenticateTest extends ModelTestCase {
+
+class VSmartAuthenticateBasicTest extends ModelTestCase {
   public function setUp() {
     parent::setUp();
+
     Class_WebService_SIGB_VSmart::reset();
+
     $mock = $this->mock()
-      ->whenCalled('open_url')
-      ->with('http://www.moulins.fr/webservice/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=10102003')
-      ->answers(VSmartFixtures::xmlBorrowerEvelyne())
+                 ->whenCalled('open_url')
+                 ->with('http://www.moulins.fr/webservice/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=10102003')
+                 ->answers(VSmartFixtures::xmlBorrowerEvelyne())
 
-      ->beStrict();
+                 ->beStrict();
 
     $service = Class_WebService_SIGB_VSmart::getService(['url_serveur' => 'http://www.moulins.fr/webservice/VubisSmartHttpApi.csp']);
 
     $service->setWebClient($mock);
 
-    $this->fixture('Class_Users',
+    $this->fixture(Class_Users::class,
                    ['id' => 12,
                     'login' => '10102003',
                     'password' => 'secret',
                     'idabon' => '87364',
                     'id_sigb' => 28,
-                    'int_bib' =>     $this->fixture('Class_IntBib',
-                                                    ['id' => 94,
-                                                     'comm_sigb' => Class_IntBib::COM_VSMART,
-                                                     'comm_params' => ['url_serveur' => 'http://www.moulins.fr/webservice/VubisSmartHttpApi.csp']]),
-                    'bib' => $this->fixture('Class_Bib',
+                    'int_bib' => $this->fixture(Class_IntBib::class,
+                                                ['id' => 94,
+                                                 'comm_sigb' => Class_IntBib::COM_VSMART,
+                                                 'comm_params' => ['url_serveur' => 'http://www.moulins.fr/webservice/VubisSmartHttpApi.csp']]),
+                    'bib' => $this->fixture(Class_Bib::class,
                                             ['id' => 94,
                                              'id_site' => 94])])
          ->beAbonneSIGB()
          ->assertSave();
 
-
     ZendAfi_Auth::getInstance()->clearIdentity();
+
+    $this
+      ->fixture(Class_Profil::class, ['id' => 1])
+      ->beCurrentProfil();
   }
 
 
@@ -298,7 +310,6 @@ class VSmartAuthenticateTest extends ModelTestCase {
   }
 
 
-
   /** @test */
   public function withRightCredentialsEvelyneShouldBeLogged() {
     ZendAfi_Auth::getInstance()->authenticateLoginPassword('10102003', 'secret');
@@ -323,6 +334,6 @@ class VSmartAuthenticateTest extends ModelTestCase {
   /** @test */
   public function withWrongCredentialsJustinShouldNotBeLogged() {
     ZendAfi_Auth::getInstance()->authenticateLoginPassword('10102003', 'oups');
-    $this->assertEmpty(Class_Users::getIdentity());
+    $this->assertNull(Class_Users::getIdentity());
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/Class/WebService/SIGB/VSmartTest.php b/tests/library/Class/WebService/SIGB/VSmartTest.php
index 9f641935ffc6b4844115bfcc59289c28d1aadd61..3aa33fd75f96c2131ce6d445ca2369bffb8bbd75 100644
--- a/tests/library/Class/WebService/SIGB/VSmartTest.php
+++ b/tests/library/Class/WebService/SIGB/VSmartTest.php
@@ -20,7 +20,7 @@
  */
 include_once('VSmartFixtures.php');
 
-abstract class  VSmartServiceTestCase extends ModelTestCase {
+abstract class VSmartServiceTestCase extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -52,9 +52,9 @@ abstract class  VSmartServiceTestCase extends ModelTestCase {
 
 class VSmartServiceDummyFunctionsTest extends ModelTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $this->service = Class_WebService_SIGB_VSmart_Service::newInstance();
   }
 
@@ -70,6 +70,7 @@ class VSmartServiceDummyFunctionsTest extends ModelTestCase {
     $this->assertEmpty($this->service->saveEmprunteur(null));
   }
 
+
   /** @test */
   function defaultWebClientShouldBeAnInstanceOfSimbleWebClient() {
     $this->assertInstanceOf('Class_WebService_SimpleWebClient', $this->service->getWebClient());
@@ -78,11 +79,12 @@ class VSmartServiceDummyFunctionsTest extends ModelTestCase {
 
 
 
-class VSmartGetServiceTest extends ModelTestCase {
 
+class VSmartGetServiceTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_WebService_SIGB_VSmart::reset();
     $this->service = Class_WebService_SIGB_VSmart::getService(['url_serveur' => 'vpn.moulins.fr']);
   }
@@ -107,9 +109,9 @@ class VSmartGetServiceTest extends ModelTestCase {
 
 class VSmartServiceWithEmprunteurEvelyneTest extends VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=04051972')
@@ -285,11 +287,13 @@ class VSmartServiceWithEmprunteurEvelyneTest extends VSmartServiceTestCase {
 
 
 
-class VSmartServiceWithEmprunteurEvelyneResponseErrorTest extends VSmartServiceTestCase {
 
+class VSmartServiceWithEmprunteurEvelyneResponseErrorTest
+  extends VSmartServiceTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://86.64.58.38/formation/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=04051972')
@@ -315,9 +319,9 @@ class VSmartServiceWithEmprunteurEvelyneResponseErrorTest extends VSmartServiceT
 
 class VSmartServiceWithEmprunteurFranckTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=GetBorrower&MetaInstitution=RES&BorrowerId=30101964')
@@ -464,11 +468,12 @@ class VSmartServiceWithEmprunteurFranckTest extends  VSmartServiceTestCase {
 
 
 
-class VSmartServiceBibGetAnthologieLitteratureTest extends ModelTestCase {
 
+class VSmartServiceBibGetAnthologieLitteratureTest extends ModelTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $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')
@@ -510,9 +515,9 @@ class VSmartServiceBibGetAnthologieLitteratureTest extends ModelTestCase {
 
 class VSmartServiceBibGetConsultationTest extends ModelTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $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')
@@ -542,18 +547,16 @@ class VSmartServiceBibGetConsultationTest extends ModelTestCase {
   public function firstExemplaireCanBeAvailableForConsultation() {
     $this->assertTrue($this->montlucon->exemplaireAt(0)->isAvailableForConsultation());
   }
-
 }
 
 
 
 
 class VSmartServiceBibGetHarryPotterTest extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
+
     $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')
@@ -724,9 +727,9 @@ class VSmartServiceBibGetHarryPotterTest extends ModelTestCase {
 
 class VSmartServiceFunctionsTest extends ModelTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $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);
@@ -809,9 +812,9 @@ class VSmartServiceFunctionsTest extends ModelTestCase {
 
 class VSmartServiceAvailableItemsTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=GetASRItems&database=1&bibrecord=179920&language=fre')
@@ -845,9 +848,9 @@ class VSmartServiceAvailableItemsTest extends  VSmartServiceTestCase {
 
 class VSmartServiceServicePointsTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=GetASRServicePoints&language=fre')
@@ -877,9 +880,9 @@ class VSmartServiceServicePointsTest extends  VSmartServiceTestCase {
 
 class VSmartServiceSuccessPlaceRequestTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=ASRPlaceRequest&database=1&bibrecord=179920&itemid=MCP271095&servicepoint=Liv&borrowerid=MCA000063&allowreservation=1&language=fre&metainstitution=RES')
@@ -909,9 +912,9 @@ class VSmartServiceSuccessPlaceRequestTest extends  VSmartServiceTestCase {
 
 class VSmartServiceFailPlaceRequestTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=ASRPlaceRequest&database=1&bibrecord=179920&itemid=MCP271095&servicepoint=Liv&borrowerid=MCA000063&allowreservation=1&language=fre&metainstitution=RES')
@@ -938,11 +941,13 @@ class VSmartServiceFailPlaceRequestTest extends  VSmartServiceTestCase {
 }
 
 
-class VSmartServiceCancelRequestTest extends  VSmartServiceTestCase {
 
 
+class VSmartServiceCancelRequestTest extends  VSmartServiceTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=ASRCancelRequest&borrowerid=MCA000063&requestid=179920&language=fre&metainstitution=RES')
@@ -966,9 +971,9 @@ class VSmartServiceCancelRequestTest extends  VSmartServiceTestCase {
 
 class VSmartServiceCancelFailedRequestTest extends  VSmartServiceTestCase {
 
-
   public function setUp() {
     parent::setUp();
+
     $mock_web_client = $this->mock()
                             ->whenCalled('open_url')
                             ->with('http://46.20.169.8/production/VubisSmartHttpApi.csp?fu=ASRCancelRequest&borrowerid=MCA000063&requestid=179920&language=fre&metainstitution=RES')
@@ -984,7 +989,6 @@ class VSmartServiceCancelFailedRequestTest extends  VSmartServiceTestCase {
   public function statutShouldBeOne() {
     $this->assertEquals(1,$this->consultation['statut']);
   }
-
 }
 
 
@@ -994,6 +998,7 @@ class VSmartServiceGetConsultationRequestsTest extends  VSmartServiceTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $mock_web_client =
       $this->mock()
            ->whenCalled('open_url')
@@ -1021,6 +1026,7 @@ class VSmartServiceGetConsultationRequestsTest extends  VSmartServiceTestCase {
       ->getConsultationRequests('MCA000063');
   }
 
+
   /** @test */
   public function titleShouldContainsMoulin() {
     $this->assertEquals('A Moulins...le marché cou',
@@ -1033,6 +1039,7 @@ class VSmartServiceGetConsultationRequestsTest extends  VSmartServiceTestCase {
     $this->assertEquals('Annie Brossard',$this->consultation[0]->getRecord()->getAuteurs());
   }
 
+
   /** @test */
   public function withPATIMPCanConsultShouldReturnTrue() {
     $this->assertTrue($this->vsmart->canConsult('PATIMP'));
@@ -1047,10 +1054,14 @@ class VSmartServiceGetConsultationRequestsTest extends  VSmartServiceTestCase {
 
 
 
+
 class VSmartServiceBibGetMonPremierGruffaloTest extends ModelTestCase {
+
   protected $_gruffalo;
 
   public function setUp() {
+    parent::setUp();
+
     $mock_web_client = $this
       ->mock()
       ->beStrict()
diff --git a/tests/library/ZendAfi/Form/Decorator/DeleteButtonTest.php b/tests/library/ZendAfi/Form/Decorator/DeleteButtonTest.php
index 411be206da737e4dcf7279def4c3fdc5f29cbbfb..4dbea89f4badcb6fbf639b5e6da2eda41f16de32 100644
--- a/tests/library/ZendAfi/Form/Decorator/DeleteButtonTest.php
+++ b/tests/library/ZendAfi/Form/Decorator/DeleteButtonTest.php
@@ -16,27 +16,31 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 require_once realpath(dirname(__FILE__)) . '/DeleteButtonTesting.php';
 
-class ZendAfi_Form_Decorator_DeleteButtonTest extends PHPUnit_Framework_TestCase {
+class ZendAfi_Form_Decorator_DeleteButtonTest extends ModelTestCase {
+
   /** @var ZendAfi_Form_Decorator_DeleteButtonTesting */
   protected $_decorator;
 
-
   protected function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 1])
+         ->beCurrentProfil();
     $this->_decorator = new ZendAfi_Form_Decorator_DeleteButtonTesting();
   }
 
 
   /** @test */
   public function withoutActionUrlShouldRenderNothing() {
-    $this->_decorator->setElement(
-      Storm_Test_ObjectWrapper::on(new Zend_Form_Element('name'))
-        ->whenCalled('getActionUrl')->answers('')
-        ->whenCalled('getValue')->answers('xxx.pdf')->getWrapper()
-    );
+    $element = new ZendAfi_Form_Element_File('name',
+                                             ['ActionUrl' => '',
+                                              'Value' => 'xxx.pdf']);
+    $this->_decorator->setElement($element);
 
     $this->assertEquals('', $this->_decorator->render(''));
   }
@@ -44,11 +48,10 @@ class ZendAfi_Form_Decorator_DeleteButtonTest extends PHPUnit_Framework_TestCase
 
   /** @test */
   public function withoutValueShouldRenderNothing() {
-    $this->_decorator->setElement(
-      Storm_Test_ObjectWrapper::on(new Zend_Form_Element('name'))
-        ->whenCalled('getActionUrl')->answers('controlle/action')
-        ->whenCalled('getActionUrl')->answers('')->getWrapper()
-    );
+    $element = new ZendAfi_Form_Element_File('name',
+                                             ['ActionUrl' => 'controller/action',
+                                              'Value' => '']);
+    $this->_decorator->setElement($element);
 
     $this->assertEquals('', $this->_decorator->render(''));
   }
@@ -56,13 +59,12 @@ class ZendAfi_Form_Decorator_DeleteButtonTest extends PHPUnit_Framework_TestCase
 
   /** @test */
   public function withActionUrlShouldRenderDeleteLink() {
-    $this->_decorator->setElement(
-      Storm_Test_ObjectWrapper::on(new Zend_Form_Element('name'))
-        ->whenCalled('getActionUrl')->answers('/controller/delete/id/999')
-        ->whenCalled('getValue')->answers('xxx.pdf')
-        ->getWrapper()
-    );
+    $element = new ZendAfi_Form_Element_File('name',
+                                             ['ActionUrl' => '/controller/delete/id/999',
+                                              'Value' => 'xxx.pdf']);
+    $this->_decorator->setElement($element);
 
-    $this->assertRegExp('#<a href="/controller/delete/id/999"#', $this->_decorator->render(''));
+    $this->assertRegExp('#<a href="/controller/delete/id/999"#',
+                        $this->_decorator->render(''));
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
index d88f4113ceff7729c4f7b52949c8bceb03b7f97a..456505a3180155f4a0c95f3b6e377f43d92f6077 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
@@ -21,8 +21,6 @@
 
 
 class CritiquesAvisEmptyTest extends ViewHelperTestCase {
-  protected $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
@@ -52,7 +50,6 @@ class CritiquesAvisEmptyTest extends ViewHelperTestCase {
 
 abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
   protected
-    $_storm_default_to_volatile = true,
     $_helper,
     $_prefs = []; // subclass responsibility
 
@@ -316,6 +313,16 @@ class CritiquesHierarchicalByDomainViewTest extends CritiquesAvisTestCase {
   protected function _prepareFixtures() {
     parent::_prepareFixtures();
 
+    $sql = $this->mock();
+    foreach(range(1, 3) as $id) {
+      $facet = 'HCCCC000' . $id;
+      $sql->whenCalled('query')
+          ->with('update notices set facettes = clean_spaces(REGEXP_REPLACE(facettes, "\\\\b' . $facet . '\\\\b", "")) where type_doc not in ("8", "9", "10") and type=1 and match(facettes) against("+' . $facet . '" in boolean mode)')
+          ->answers(0);
+    }
+
+    Zend_Registry::set('sql', $sql);
+
     $this->fixture('Class_Catalogue',
                    ['id' => 180,
                     'libelle' => 'THEME',
@@ -342,4 +349,4 @@ class CritiquesHierarchicalByDomainViewTest extends CritiquesAvisTestCase {
                                       '//a[contains(@href, "/blog/hierarchical/id/1235/start_id/1235/truncate_at/20")]',
                                       'Litterature');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
index 3b7e097b1961622df503a2385cba830cfaaf42b9..f3b699269c421d96210a423df8517f84727e8c73 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/KiosqueTest.php
@@ -591,6 +591,12 @@ class ZendAfi_View_Helper_Accueil_KiosqueProfileRedirectTest
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchOne')
+                       ->with('select count(*) from notices Where (url_vignette > \'\' and url_vignette != \'NO\' ) and type=1')
+                       ->answers(0));
+
     defineConstant("PATH_SKIN", "./public/opac/skins/original/");
 
     $record = $this->fixture(Class_Notice::class,
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/NewslettersTest.php b/tests/library/ZendAfi/View/Helper/Accueil/NewslettersTest.php
index 46baa785dae86fb634ebdc14bd732cdd6d9360e2..5bfa76cf1882236de8243daec2d056d9cfb19d29 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/NewslettersTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/NewslettersTest.php
@@ -21,7 +21,6 @@
 
 abstract class NewslettersViewHelperTestCase extends ViewHelperTestCase {
   protected
-    $_storm_default_to_volatile = true,
     $_helper;
 
   public function setUp() {
@@ -42,37 +41,42 @@ class NewslettersWithConnectedUserTest extends NewslettersViewHelperTestCase {
   public function setUp() {
     parent::setUp();
 
+    $mock_sql = $this->mock()
+                     ->whenCalled('fetchAll')
+                     ->with('select user_id as id from user_group_memberships where user_group_id=1')
+                     ->answers([]);
+
+    Zend_Registry::set('sql', $mock_sql);
+
     $account = new StdClass();
     $account->ID_USER = '123456';
     ZendAfi_Auth::getInstance()->getStorage()->write($account);
 
-    $user = $this->fixture('Class_Users',
+    $user = $this->fixture(Class_Users::class,
                            ['id' => 123456,
                             'nom' => 'Estelle',
                             'login' => 'stl',
                             'password' => 'viv3 l3s manchots']);
 
-
-    $nouveautes_musique = $this->fixture('Class_Newsletter',
+    $nouveautes_musique = $this->fixture(Class_Newsletter::class,
                                          ['id' => 2,
                                           'mail_subject' => 'News',
                                           'titre' => 'Nouveautes Musique']);
 
     $user->setNewsletters([$nouveautes_musique]);
 
-    $this->fixture('Class_Newsletter', ['id' => 3,
-                                        'titre' => 'Animations',
-                                        'mail_subject' => 'Animations']);
-
-    $mock = $this->mock()
-                 ->whenCalled('fetchAll')
-                 ->with('select user_id as id from user_group_memberships where user_group_id=' . $nouveautes_musique->getDedicatedGroup()->getId())
-                 ->answers([ ['id' => $user->getId()] ])
+    $mock_sql->whenCalled('fetchAll')
+             ->with('select user_id as id from user_group_memberships where user_group_id='
+                    . $nouveautes_musique->getDedicatedGroup()->getId())
+             ->answers([ ['id' => $user->getId()] ])
 
-                 ->whenCalled('fetchAll')
-                 ->answers([]);
+             ->whenCalled('fetchAll')
+             ->answers([]);
 
-    Zend_Registry::set('sql', $mock);
+    $this->fixture(Class_Newsletter::class,
+                   ['id' => 3,
+                    'titre' => 'Animations',
+                    'mail_subject' => 'Animations']);
 
     $this->html = $this->_helper->getBoite();
   }
@@ -184,6 +188,11 @@ class NewslettersWithConnectedUserAndHiddenNewsletterTest
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql', $this->mock()
+                       ->whenCalled('fetchAll')
+                       ->with('select user_id as id from user_group_memberships where user_group_id=1')
+                       ->answers([]));
+
     $account = new StdClass();
     $account->ID_USER = '123456';
     ZendAfi_Auth::getInstance()->getStorage()->write($account);
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/PanierTest.php b/tests/library/ZendAfi/View/Helper/Accueil/PanierTest.php
index b2dd64bd019f1b2479902bf6c36da2047aa59eaa..e20b48d6ddab9f094166f7ed847454f6799392fd 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/PanierTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/PanierTest.php
@@ -20,12 +20,12 @@
  */
 
 abstract class AbstractPanierHelperTest extends ViewHelperTestCase {
-  protected
-    $_tom,
-    $_storm_default_to_volatile = true;
 
-  public function setup() {
-    parent:: setup();
+  protected $_tom;
+
+  public function setUp() {
+    parent::setUp();
+
     defineConstant("PATH_SKIN", "./public/opac/skins/original/");
     $this->_tom = Class_Users::newInstanceWithId(1789, ['login' => 'tom']);
 
@@ -38,15 +38,17 @@ abstract class AbstractPanierHelperTest extends ViewHelperTestCase {
                                               'preferences' => ['titre' => 'Panier']] );
 
     $this->_helper->setView(new ZendAfi_Controller_Action_Helper_View());
-
   }
 }
 
 
 
+
 class PanierTestWithConnectedUser extends AbstractPanierHelperTest {
+
   public function setUp() {
     parent::setUp();
+
     $this->_html = $this->_helper->getBoite();
   }
 
@@ -61,15 +63,16 @@ class PanierTestWithConnectedUser extends AbstractPanierHelperTest {
   public function boitePanierTitleShouldBeMonPanierCourant() {
     $this->assertXPathContentContains($this->_html,'//h1','Panier',$this->_html);
   }
-
 }
 
 
 
 
 abstract class PanierTestWithConnectedUserTestCase extends AbstractPanierHelperTest {
+
   public function setUp() {
     parent::setUp();
+
     $cuisiner_la_pomme = $this->fixture('Class_Notice',
                                         ['id' => 18,
                                          'titre_principal' => 'Cuisiner la pomme',
@@ -90,7 +93,6 @@ abstract class PanierTestWithConnectedUserTestCase extends AbstractPanierHelperT
       ->addNotice($cuisiner_la_poire)
       ->assertSave();
 
-
     $catalogue_adultes = $this->fixture('Class_Catalogue',
                                         ['id' => 6,
                                          'libelle' => 'Adultes']);
@@ -105,7 +107,9 @@ abstract class PanierTestWithConnectedUserTestCase extends AbstractPanierHelperT
 
 
 
-class PanierTestWithConnectedUserPanierNoticesFromUserAndNoCurrentPanier extends PanierTestWithConnectedUserTestCase {
+class PanierTestWithConnectedUserPanierNoticesFromUserAndNoCurrentPanier
+  extends PanierTestWithConnectedUserTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -123,12 +127,14 @@ class PanierTestWithConnectedUserPanierNoticesFromUserAndNoCurrentPanier extends
   public function actionBarShouldNotContainsDeleteAction() {
     $this->assertNotXPath($this->_html, '//div[@class="panier-action-bar"]/ul/li//a[contains(@href,"/panier/supprimerpanier")]',$this->_html);
   }
-
 }
 
 
 
-class PanierTestWithConnectedUserAndCurrentPanierWithNotice extends PanierTestWithConnectedUserTestCase {
+
+class PanierTestWithConnectedUserAndCurrentPanierWithNotice
+  extends PanierTestWithConnectedUserTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -177,4 +183,4 @@ class PanierTestWithConnectedUserAndCurrentPanierWithNotice extends PanierTestWi
   public function actionBarShouldContainsModifierPanierDeRechercheAction() {
     $this->assertXPath($this->_html, '//a[contains(@href,"/panier/switch")]',$this->_html);
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/SitoTest.php b/tests/library/ZendAfi/View/Helper/Accueil/SitoTest.php
index aeee070a69fcfba6c58adcc6a303736f1fa1e3ab..4bf444333911a48b4641581ea049291719806e55 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/SitoTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/SitoTest.php
@@ -1,27 +1,26 @@
 <?php
 /**
-n * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
- *
- * BOKEH is free software; you can redistribute it and/or modify
- * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
- * the Free Software Foundation.
- *
- * There are special exceptions to the terms and conditions of the AGPL as it
- * is applied to this software (see README file).
- *
- * BOKEH is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
- * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
- */
+  n * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
+  *
+  * BOKEH is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+  * the Free Software Foundation.
+  *
+  * There are special exceptions to the terms and conditions of the AGPL as it
+  * is applied to this software (see README file).
+  *
+  * BOKEH is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+  *
+  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+  * along with BOKEH; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+  */
 
 require_once 'library/ZendAfi/View/Helper/ViewHelperTestCase.php';
 
-
 abstract class SitoViewHelperTestCase extends ViewHelperTestCase {
 
   protected $html;
@@ -30,12 +29,8 @@ abstract class SitoViewHelperTestCase extends ViewHelperTestCase {
   protected $_france;
   protected $_creuse;
 
-  public function parentSetup() {
-    parent::setUp();
-  }
-
   public function setUp() {
-    $this->parentSetup();
+    parent::setUp();
 
     Storm_Cache::beVolatile();
     Storm_Cache::setSeed('local');
@@ -119,117 +114,121 @@ abstract class SitoViewHelperTestCase extends ViewHelperTestCase {
                     'description' => 'du vin du vin!',
                     'url' => 'http://www.rmll.info',
                     'categorie' => $this->_france]);
-
-
   }
 }
 
 
 
+
 class SitoViewHelperSelectItemsBySelectionOrderTest extends SitoViewHelperTestCase {
-    protected $_preferences = ['titre' => 'Ma sito',
-                               'type_aff' => 1,
-                               'id_items' => '12-15',
-                               'id_categorie' => '',
-                               'nb_aff' => 0,
-                               'rss' => 1,
-                               'display_order' => 'Selection'];
-
-    /** @test */
-    public function firstSiteShouldBeFOSDEM() {
-      $this->assertXPathContentContains($this->html,
-                                        '//div/div[1]//h2//a',
-                                        'FOSDEM');
-    }
 
+  protected $_preferences = ['titre' => 'Ma sito',
+                             'type_aff' => 1,
+                             'id_items' => '12-15',
+                             'id_categorie' => '',
+                             'nb_aff' => 0,
+                             'rss' => 1,
+                             'display_order' => 'Selection'];
 
-    /** @test */
-    public function secondSiteShouldBeRMLL() {
-      $this->assertXPathContentContains($this->html,
-                                        '//div/div[2]//h2//a',
-                                        'RMLL');
-    }
 
+  /** @test */
+  public function firstSiteShouldBeFOSDEM() {
+    $this->assertXPathContentContains($this->html,
+                                      '//div/div[1]//h2//a',
+                                      'FOSDEM');
+  }
 
-    /** @test */
-    public function rssLinkShouldBePresent() {
-      $this->assertXPath($this->html, '//a[contains(@href, "/sito/sito-rss")]/img');
-    }
+
+  /** @test */
+  public function secondSiteShouldBeRMLL() {
+    $this->assertXPathContentContains($this->html,
+                                      '//div/div[2]//h2//a',
+                                      'RMLL');
+  }
+
+
+  /** @test */
+  public function rssLinkShouldBePresent() {
+    $this->assertXPath($this->html, '//a[contains(@href, "/sito/sito-rss")]/img');
+  }
 }
 
 
 
 
-class SitoViewHelperSelectItemsBySelectionOrderPaginationTest extends SitoViewHelperTestCase {
-    protected $_preferences = ['titre' => 'Ma sito',
-                               'type_aff' => 1,
-                               'id_items' => '12-15',
-                               'id_categorie' => '',
-                               'nb_aff' => 1,
-                               'rss_avis' => 1,
-                               'display_order' => 'Selection'];
+class SitoViewHelperSelectItemsBySelectionOrderPaginationTest
+  extends SitoViewHelperTestCase {
 
+  protected $_preferences = ['titre' => 'Ma sito',
+                             'type_aff' => 1,
+                             'id_items' => '12-15',
+                             'id_categorie' => '',
+                             'nb_aff' => 1,
+                             'rss_avis' => 1,
+                             'display_order' => 'Selection'];
 
-    /** @test */
-    public function rssLinkShouldBePresent() {
-      $this->assertXPath($this->html, '//a[contains(@href, "/sito/sito-rss")]/img');
-    }
 
+  /** @test */
+  public function rssLinkShouldBePresent() {
+    $this->assertXPath($this->html, '//a[contains(@href, "/sito/sito-rss")]/img');
+  }
 
-    /** @test */
-    public function firstPageShoulNotContainsRMLL() {
-      $this->assertNotXPathContentContains($this->html,
-                                        '//div/div[1]//h2//a',
-                                        'RMLL');
-    }
 
+  /** @test */
+  public function firstPageShoulNotContainsRMLL() {
+    $this->assertNotXPathContentContains($this->html,
+                                         '//div/div[1]//h2//a',
+                                         'RMLL');
+  }
 
-    /** @test */
-    public function firstSiteShouldBeFOSDEM() {
-      $this->assertXPathContentContains($this->html,
-                                        '//div/div[1]//h2//a',
-                                        'FOSDEM');
-    }
 
+  /** @test */
+  public function firstSiteShouldBeFOSDEM() {
+    $this->assertXPathContentContains($this->html,
+                                      '//div/div[1]//h2//a',
+                                      'FOSDEM');
+  }
 
-    /** @test */
-    public function onSecondPageSiteShouldBeRMLL() {
-      $this->_helper->setPage(2);
-      $this->html = $this->_helper->getBoite();
-      $this->assertXPathContentContains($this->html,
-                                        '//div/div[1]//h2//a',
-                                        'RMLL');
-    }
 
+  /** @test */
+  public function onSecondPageSiteShouldBeRMLL() {
+    $this->_helper->setPage(2);
+    $this->html = $this->_helper->getBoite();
+    $this->assertXPathContentContains($this->html,
+                                      '//div/div[1]//h2//a',
+                                      'RMLL');
+  }
 
-    /** @test */
-    public function paginatorShouldBePresent() {
-      $this->assertXPath($this->html, '//div[@class="paginationControl"]');
-    }
 
+  /** @test */
+  public function paginatorShouldBePresent() {
+    $this->assertXPath($this->html, '//div[@class="paginationControl"]');
+  }
 
-    /** @test */
-    public function paginatorNextLinkShouldBeEnabled() {
-      $this->assertXPathContentContains($this->html, '//div[@class="paginationControl"]//a[contains(@href, "sito/widget-page/id_module/2/id_division/1/page/2")]', 'Suivant');
-    }
 
+  /** @test */
+  public function paginatorNextLinkShouldBeEnabled() {
+    $this->assertXPathContentContains($this->html, '//div[@class="paginationControl"]//a[contains(@href, "sito/widget-page/id_module/2/id_division/1/page/2")]', 'Suivant');
+  }
 
-    /** @test */
-    public function paginatorPreviousLinkShouldBeDisabled() {
-      $this->assertXPathContentContains($this->html, '//div[@class="paginationControl"]//span[@class="disabled"]', utf8_encode('Précédent'));
-    }
 
+  /** @test */
+  public function paginatorPreviousLinkShouldBeDisabled() {
+    $this->assertXPathContentContains($this->html, '//div[@class="paginationControl"]//span[@class="disabled"]', utf8_encode('Précédent'));
+  }
 
-    /** @test */
-    public function anchorsShouldHaveDataReloadModule() {
-      $this->assertXPathCount($this->html, '//div[@class="paginationControl"]//a[@data-ajax-reload="true"]', 2);
-    }
+
+  /** @test */
+  public function anchorsShouldHaveDataReloadModule() {
+    $this->assertXPathCount($this->html, '//div[@class="paginationControl"]//a[@data-ajax-reload="true"]', 2);
+  }
 }
 
 
 
 
 class SitoViewHelperWithoutCacheTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 1,
                              'id_items' => '12-15',
@@ -237,6 +236,7 @@ class SitoViewHelperWithoutCacheTest extends SitoViewHelperTestCase {
                              'nb_aff' => 1,
                              'display_order' => 'Selection'];
 
+
   /** @test */
   public function cacheShouldNotBeUse() {
     $value = (new Storm_Cache())->getCache()->load('132a93b63b7dc2b5ba0e1c9447bc133d');
@@ -248,6 +248,7 @@ class SitoViewHelperWithoutCacheTest extends SitoViewHelperTestCase {
 
 
 class SitoViewHelperCachedTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 2,
                              'id_items' => '12-15',
@@ -255,6 +256,7 @@ class SitoViewHelperCachedTest extends SitoViewHelperTestCase {
                              'nb_aff' => 1,
                              'display_order' => 'Selection'];
 
+
   /** @test */
   public function cacheShouldBeUse() {
     $value = (new Storm_Cache())->getCache()->load('real_seed_6421da151f69b65d9601ce3c3eb18656');
@@ -266,6 +268,7 @@ class SitoViewHelperCachedTest extends SitoViewHelperTestCase {
 
 
 class SitoViewHelperSelectItemsByRandomOrderTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 1,
                              'id_items' => '12-15',
@@ -294,7 +297,9 @@ class SitoViewHelperSelectItemsByRandomOrderTest extends SitoViewHelperTestCase
 
 
 
-class SitoViewHelperSelectItemsByRandomOrderWithOneSiteTest extends SitoViewHelperTestCase {
+class SitoViewHelperSelectItemsByRandomOrderWithOneSiteTest
+  extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 1,
                              'id_items' => '12-15',
@@ -311,7 +316,9 @@ class SitoViewHelperSelectItemsByRandomOrderWithOneSiteTest extends SitoViewHelp
 
 
 
+
 class SitoViewHelperSelectItemsAndCatsTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 1,
                              'id_items' => 12,
@@ -319,6 +326,7 @@ class SitoViewHelperSelectItemsAndCatsTest extends SitoViewHelperTestCase {
                              'nb_aff' => 2,
                              'display_order' => 'Random'];
 
+
   /** @test */
   public function titleShouldBeMaSito() {
     $this->assertXPathContentContains($this->html,
@@ -347,11 +355,13 @@ class SitoViewHelperSelectItemsAndCatsTest extends SitoViewHelperTestCase {
 
 
 class SitoViewHelperLastTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Derniers sites',
                              'type_aff' => 1,
                              'nb_aff' => 100,
                              'display_order' => 'Recent'];
 
+
   /** @test */
   public function titleShouldBeDerniersSites() {
     $this->assertXPathContentContains($this->html,
@@ -380,6 +390,8 @@ class SitoViewHelperLastTest extends SitoViewHelperTestCase {
 }
 
 
+
+
 class SitoViewHelperAdminTest extends SitoViewHelperTestCase {
 
   protected $_preferences = ['titre' => 'Ma sito',
@@ -390,7 +402,7 @@ class SitoViewHelperAdminTest extends SitoViewHelperTestCase {
                              'display_order' => 'Selection'];
 
   public function setUp() {
-    $this->parentSetup();
+    parent::setUp();
   }
 
 
@@ -426,9 +438,9 @@ class SitoViewHelperAdminTest extends SitoViewHelperTestCase {
 
   protected function logModoAllowed() {
     $group_sito = $this->fixture(Class_UserGroup::class,
-                                ['id' => 22,
-                                 'libelle' => 'Testing group',
-                                 'rights' => [Class_UserGroup::RIGHT_USER_SITOTHEQUE]]);
+                                 ['id' => 22,
+                                  'libelle' => 'Testing group',
+                                  'rights' => [Class_UserGroup::RIGHT_USER_SITOTHEQUE]]);
 
     $this->_logUserWithAttribs(['role_level' => ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL,
                                 'user_groups' => [$group_sito]]);
@@ -485,7 +497,9 @@ class SitoViewHelperAdminTest extends SitoViewHelperTestCase {
 
 
 
+
 class SitoViewHelperGroupByCategorieTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 2,
                              'display_order' => 'Recent',
@@ -523,7 +537,11 @@ class SitoViewHelperGroupByCategorieTest extends SitoViewHelperTestCase {
 }
 
 
-class SitoViewHelperGroupByCategorieOrderByNewestSitoTest extends SitoViewHelperTestCase {
+
+
+class SitoViewHelperGroupByCategorieOrderByNewestSitoTest
+  extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'Ma sito',
                              'type_aff' => 2,
                              'nb_aff' => 2,
@@ -538,7 +556,10 @@ class SitoViewHelperGroupByCategorieOrderByNewestSitoTest extends SitoViewHelper
 }
 
 
+
+
 class SitoViewHelperHierarchicalCategoryTest extends SitoViewHelperTestCase {
+
   protected $_preferences = ['titre' => 'My website library',
                              'type_aff' => '3',
                              'id_items' => '',
@@ -575,8 +596,8 @@ class SitoViewHelperHierarchicalCategoryTest extends SitoViewHelperTestCase {
   /** @test */
   public function fosdemShouldNotBeDisplayed() {
     $this->assertNotXPathContentContains($this->html,
-                                      '//ul[@class="sitotheque"]//li//a',
-                                      'FOSDEM');
+                                         '//ul[@class="sitotheque"]//li//a',
+                                         'FOSDEM');
 
   }
 
@@ -591,30 +612,32 @@ class SitoViewHelperHierarchicalCategoryTest extends SitoViewHelperTestCase {
 
 
 
+
 /* @ see hotline http://forge.afi-sa.fr/issues/74510 */
 class SitoViewHelperSelectItemsByRecentOrderTest extends SitoViewHelperTestCase {
-    protected $_preferences = ['titre' => 'Ma sito',
-                               'type_aff' => 1,
-                               'id_items' => '12-15',
-                               'id_categorie' => '',
-                               'nb_aff' => 6,
-                               'rss' => 1,
-                               'display_order' => 'Recent'];
-
-
-    protected function addFixturesSito() {
-      parent::addFixturesSito();
-      $this->onLoaderOfModel('Class_Sitotheque')
-           ->whenCalled('getSitesFromIdsAndCategories')
-           ->answers([]);
-    }
+
+  protected $_preferences = ['titre' => 'Ma sito',
+                             'type_aff' => 1,
+                             'id_items' => '12-15',
+                             'id_categorie' => '',
+                             'nb_aff' => 6,
+                             'rss' => 1,
+                             'display_order' => 'Recent'];
 
 
-    /** @test */
-    public function shouldFindWithItemSelection() {
-      $this->assertTrue(Class_Sitotheque::methodHasBeenCalledWithParams('getSitesFromIdsAndCategories',
-                                                                        [[12,15],
-                                                                         [''],
-                                                                         true]));
-    }
-}
\ No newline at end of file
+  protected function addFixturesSito() {
+    parent::addFixturesSito();
+    $this->onLoaderOfModel('Class_Sitotheque')
+         ->whenCalled('getSitesFromIdsAndCategories')
+         ->answers([]);
+  }
+
+
+  /** @test */
+  public function shouldFindWithItemSelection() {
+    $this->assertTrue(Class_Sitotheque::methodHasBeenCalledWithParams('getSitesFromIdsAndCategories',
+                                                                      [[12,15],
+                                                                       [''],
+                                                                       true]));
+  }
+}
diff --git a/tests/library/ZendAfi/View/Helper/AudioJSPlayerTest.php b/tests/library/ZendAfi/View/Helper/AudioJSPlayerTest.php
index e0b3eff3139b0b9014aa38b8ecad5cd683d09dc0..2d70e1e1b838b2aacbe4e812d68f18f3376289e5 100644
--- a/tests/library/ZendAfi/View/Helper/AudioJSPlayerTest.php
+++ b/tests/library/ZendAfi/View/Helper/AudioJSPlayerTest.php
@@ -16,10 +16,11 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 class ZendAfi_View_Helper_AudioJsPlayerTest extends ViewHelperTestCase {
+
   /**
    * @var ZendAfi_View_Helper_AudioJsPlayer
    */
@@ -27,15 +28,17 @@ class ZendAfi_View_Helper_AudioJsPlayerTest extends ViewHelperTestCase {
   private $_html;
 
   public function setUp() {
+    parent::setUp();
     Class_ScriptLoader::resetInstance();
     $this->_helper = new ZendAfi_View_Helper_AudioJsPlayer();
     $this->_helper->setView(new Zend_View());
     $this->_html = $this->_helper->audioJsPlayer('http://alter-l/si-veriash.mp3');
   }
 
+
   /** @test */
   public function scriptLoaderShouldContainsAudioJS() {
-    $this->assertContains('<script src="'.BASE_URL.'/public/admin/js/audiojs/audiojs/audio.min.js?', 
+    $this->assertContains('<script src="'.BASE_URL.'/public/admin/js/audiojs/audiojs/audio.min.js?',
                           Class_ScriptLoader::getInstance()->html());
   }
 
@@ -51,5 +54,3 @@ class ZendAfi_View_Helper_AudioJsPlayerTest extends ViewHelperTestCase {
     $this->assertXPath($this->_html, '//audio/source[@src="http://alter-l/si-veriash.mp3"]', $this->_html);
   }
 }
-
-?>
\ No newline at end of file
diff --git a/tests/library/ZendAfi/View/Helper/BiographieTest.php b/tests/library/ZendAfi/View/Helper/BiographieTest.php
index fbc62df31e815944375de23da1541fcc154a9fa9..03adab0a361c45116940217e40217892e70a2730 100644
--- a/tests/library/ZendAfi/View/Helper/BiographieTest.php
+++ b/tests/library/ZendAfi/View/Helper/BiographieTest.php
@@ -21,7 +21,6 @@
 
 
 abstract class ZendAfi_View_Helper_BiographieTestCase extends ViewHelperTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -34,20 +33,21 @@ abstract class ZendAfi_View_Helper_BiographieTestCase extends ViewHelperTestCase
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '23')
       ->zoneWithChildren('200', ['a' => 'Harry Potter',
-                                 'f' => 'J.K Rowling'])
+                                 'f' => 'J.K. Rowling'])
       ->zoneWithChildren('461', ['v' => '5'])
       ->zoneWithChildren('700', ['a' => 'Rowling', 'b' => 'J.K']);
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 12,
-                    'libelle' => 'J.K Rowling']);
+                    'libelle' => 'J.K. Rowling',
+                    'formes' => 'JxKxxROWLING']);
 
     $this->_helper = new ZendAfi_View_Helper_Biographie();
     $this->_helper->setView($this->view);
     $this->_html = $this->_helper
-      ->biographie($this->fixture('Class_Notice',
+      ->biographie($this->fixture(Class_Notice::class,
                                   ['id' => 23,
-                                   'auteur_principal' => 'J.K Rowling',
+                                   'auteur_principal' => 'J.K. Rowling',
                                    'unimarc' => $unimarc->render()]));
   }
 
@@ -62,7 +62,9 @@ abstract class ZendAfi_View_Helper_BiographieTestCase extends ViewHelperTestCase
 
 
 
-class ZendAfi_View_Helper_BiographieDefaultTest extends ZendAfi_View_Helper_BiographieTestCase {
+class ZendAfi_View_Helper_BiographieDefaultTest
+  extends ZendAfi_View_Helper_BiographieTestCase {
+
   /** @test */
   public function shouldContainsAHtmlBiographie() {
     $this->assertXpathContentContains($this->_html, '//p', 'A html biographie !');
@@ -78,7 +80,9 @@ class ZendAfi_View_Helper_BiographieDefaultTest extends ZendAfi_View_Helper_Biog
 
 
 
-class ZendAfi_View_Helper_BiographieEnabledTest extends ZendAfi_View_Helper_BiographieTestCase {
+class ZendAfi_View_Helper_BiographieEnabledTest
+  extends ZendAfi_View_Helper_BiographieTestCase {
+
   protected function _serviceResponse() {
     return array_merge(parent::_serviceResponse(),
                        ['biography_disabled' => 0]);
@@ -100,7 +104,9 @@ class ZendAfi_View_Helper_BiographieEnabledTest extends ZendAfi_View_Helper_Biog
 
 
 
-class ZendAfi_View_Helper_BiographieDisabledTest extends ZendAfi_View_Helper_BiographieTestCase {
+class ZendAfi_View_Helper_BiographieDisabledTest
+  extends ZendAfi_View_Helper_BiographieTestCase {
+
   protected function _serviceResponse() {
     return array_merge(parent::_serviceResponse(),
                        ['biography_disabled' => 1]);
diff --git a/tests/library/ZendAfi/View/Helper/ComboCodificationTest.php b/tests/library/ZendAfi/View/Helper/ComboCodificationTest.php
index 86ff33d49014bf6ed4dcd9bafc3487d930313c74..011af546e5c5fe3f4e2148db39f8c707abb58841 100644
--- a/tests/library/ZendAfi/View/Helper/ComboCodificationTest.php
+++ b/tests/library/ZendAfi/View/Helper/ComboCodificationTest.php
@@ -26,6 +26,12 @@ class ZendAfi_View_Helper_ComboCodificationTest extends ViewHelperTestCase {
   public function setUp() {
     parent::setUp();
 
+    Zend_Registry::set('sql',
+                       $this->mock()
+                       ->whenCalled('fetchAll')
+                       ->with('select distinct(type_doc) from notices')
+                       ->answers([ ['type_doc' => Class_TypeDoc::LIVRE] ]));
+
     $this->_helper = new ZendAfi_View_Helper_ComboCodification();
     $this->_helper->setView($this->view);
 
@@ -49,4 +55,4 @@ class ZendAfi_View_Helper_ComboCodificationTest extends ViewHelperTestCase {
   public function livreTypeShouldBePresent() {
     $this->assertXPath($this->_html, '//option[@value="' . Class_TypeDoc::LIVRE . '"]');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/ZendAfi/View/Helper/TagImgTest.php b/tests/library/ZendAfi/View/Helper/TagImgTest.php
index 09b12f5ba9db698bf47d58faccfd72866be3f98c..2ca963531b42bd9766f234958ba646c14377a80d 100644
--- a/tests/library/ZendAfi/View/Helper/TagImgTest.php
+++ b/tests/library/ZendAfi/View/Helper/TagImgTest.php
@@ -18,17 +18,22 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
-class ZendAfi_View_Helper_TagImgTest extends PHPUnit_Framework_TestCase {
+
+class ZendAfi_View_Helper_TagImgTest extends ViewHelperTestCase {
+
   /**
    * @var ZendAfi_View_Helper_TagImg
    */
   private $_helper;
 
-  protected function setUp() {
+  public function setUp() {
+    parent::setUp();
+
     $this->_helper = new ZendAfi_View_Helper_TagImg();
-    $this->_helper->setView(new ZendAfi_Controller_Action_Helper_View());
+    $this->_helper->setView($this->view);
   }
 
+
   /** @test */
   public function pathShouldAppearAsSrcAttribute() {
     $path = '/url/de/test.txt';
@@ -36,23 +41,24 @@ class ZendAfi_View_Helper_TagImgTest extends PHPUnit_Framework_TestCase {
     $html = $this->_helper->tagImg($path);
     $this->assertGreaterThan(0, preg_match('|src="([^"]*)"|ui', $html, $matches));
     $this->assertEquals($path, $matches[1]);
-
   }
 
+
   /** @test */
   public function pathShouldBeFirstAttribute() {
     $html = $this->_helper->tagImg('/url/de/test.txt');
     $this->assertTrue('<img src=' == substr($html, 0, 9), $html);
   }
 
+
   /** @test */
   public function noAltShouldCreateEmptyAlt() {
     $html = $this->_helper->tagImg('une url');
     $this->assertGreaterThan(0, preg_match('|alt="([^"]*)"|ui', $html, $matches));
     $this->assertEquals('', $matches[1]);
-
   }
 
+
   /** @test */
   public function arbitraryAttributeShouldAppearAsIs() {
     $html = $this->_helper->tagImg('une url', array('monAttrib' => 'any value'));
@@ -65,4 +71,4 @@ class ZendAfi_View_Helper_TagImgTest extends PHPUnit_Framework_TestCase {
   public function withNullCastAsStringUrlTagImageShouldReturnEmptyString() {
     $this->assertEquals('', $this->_helper->tagImg((string) null));
   }
-}
\ No newline at end of file
+}
diff --git a/tests/library/ZendAfi/View/Helper/ViewHelperTestCase.php b/tests/library/ZendAfi/View/Helper/ViewHelperTestCase.php
index 653f993ccb266d230f2a25e89f57411fa66c631d..8cfeb7c670a50314e82dbf3f5833f84f6feb89cc 100644
--- a/tests/library/ZendAfi/View/Helper/ViewHelperTestCase.php
+++ b/tests/library/ZendAfi/View/Helper/ViewHelperTestCase.php
@@ -136,13 +136,11 @@ abstract class ViewHelperTestCase extends ModelTestCase {
 
 
   protected function tearDown() {
-    if($this->_storm_default_to_volatile)
-      Storm_Model_Loader::defaultToDb();
-
-    Storm_Model_Abstract::unsetLoaders();
     (new Storm_Cache)->clean();
     $this->logout();
     Class_Systeme_Report_Portal::setIp(null);
+    if($this->_storm_default_to_volatile)
+      Storm_Model_Loader::defaultToDb();
 
     parent::tearDown();
   }
diff --git a/tests/scenarios/Activities/WidgetWithQuotasTest.php b/tests/scenarios/Activities/WidgetWithQuotasTest.php
index 7963fab1062f548f11a0a8fbe9f8e208d093e2e1..0d1357a65dc1a46e923a5ae96759904db72dded9 100644
--- a/tests/scenarios/Activities/WidgetWithQuotasTest.php
+++ b/tests/scenarios/Activities/WidgetWithQuotasTest.php
@@ -22,8 +22,6 @@
 
 class Activities_WidgetWithQuotasDisplayTest extends ViewHelperTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
   public function setup() {
     parent::setup();
     Class_AdminVar::set('ACTIVITY',1);
diff --git a/tests/scenarios/AlbumAudioRecord/AlbumAudioRecordTest.php b/tests/scenarios/AlbumAudioRecord/AlbumAudioRecordTest.php
index 290615cacbdd4889a0a1899f7a5e66ca046ee191..01966e9164d0040f45c5e7024d5563fd3b7dfce2 100644
--- a/tests/scenarios/AlbumAudioRecord/AlbumAudioRecordTest.php
+++ b/tests/scenarios/AlbumAudioRecord/AlbumAudioRecordTest.php
@@ -23,7 +23,6 @@
 abstract class AlbumAudioRecordTestCase extends AbstractControllerTestCase {
   protected
     $_notice,
-    $_codif_auteur_wrapper,
     $_tracks;
 
 
@@ -35,8 +34,6 @@ abstract class AlbumAudioRecordTestCase extends AbstractControllerTestCase {
 
     Class_Notice::setTimeSource(new TimeSourceForTest('2014-01-19 09:00:00'));
 
-    $this->_codif_auteur_wrapper = $this->onLoaderOfModel(Class_CodifAuteur::class);
-
     Class_CosmoVar::newInstanceWithId('black_list_856', ['valeur' => 'mabib']);
     Class_CosmoVar::newInstanceWithId('unimarc_zone_titre',
                                       ['valeur' => '200$a;200$e;200$d;200$i;327$a;464$a;461$t;464$t']);
@@ -104,10 +101,6 @@ abstract class AlbumAudioRecordTestCase extends AbstractControllerTestCase {
                                                'libelle' => $name]);
     $author->save();
 
-    $this->_codif_auteur_wrapper
-      ->whenCalled('findFirstBy')
-      ->with(['where' => "MATCH(formes) AGAINST('" . $code_alpha . "' IN BOOLEAN MODE)"])
-      ->answers($author);
     return $this;
   }
 }
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
index 7bf54ab5585191dbcf5cae9ee272df4e1ca4697a..d9af89e005a4bf319220259bf34e27892a56da6b 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsCalendarTest.php
@@ -20,9 +20,6 @@
  */
 
 abstract class ArticlesMultipleTimingsCalendarTestCase extends AbstractControllerTestCase {
-    protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
@@ -205,9 +202,7 @@ class ArticlesMultipleTimingsCalendarInHistoricTest
 
   /** @test */
   public function calendarShouldContainsThreeArticles() {
-    $this
-      ->assertXPathCount('//article',
-                         3);
+    $this->assertXPathCount('//article', 3);
   }
 
 
diff --git a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
index 91db60b3963ca97db1867f8971d0ea46dff91e76..6afc0e37514b494594e419b05080873afec49b8e 100644
--- a/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
+++ b/tests/scenarios/ArticlesMultipleTimings/ArticlesMultipleTimingsLoaderTest.php
@@ -21,7 +21,9 @@
 
 require_once(__DIR__ . '/../../library/Class/ArticleLoaderTest.php');
 
-class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPreferencesTestCase {
+class ArticlesMultipleTimingsLoaderSqlTest
+  extends ArticleLoaderGetArticlesByPreferencesTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_Article_SelectWithTimings::setTimeSource(new TimeSourceForTest('2011-10-20 10:00:00'));
@@ -35,23 +37,6 @@ class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPrefer
   }
 
 
-  protected function _articlesFixtures() {
-    return [
-            [
-             'ID_ARTICLE' => 23,
-             'ID_CAT' => 2,
-             'TITRE' => 'Fête de la pomme',
-             'DATE_CREATION' => '2011-04-02',
-             'DEBUT' => '2011-10-02',
-             'FIN' => '2011-10-22',
-             'EVENTS_DEBUT' => '',
-             'EVENTS_FIN' => '',
-             'START' => '2011-10-20',
-             'END' => '2011-10-21']
-    ];
-  }
-
-
   public function assertSelect($expected) {
     $this->assertEquals("SELECT `cms_article`.*, min(cms_article_timings.start) AS `start`, min(cms_article_timings.end) AS `end` FROM `cms_article` ".$expected,
                         str_replace("\n", "", $this->select->assemble()));
@@ -60,18 +45,18 @@ class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPrefer
 
   /** @test */
   public function withEventsOnlyShouldFilterOnEventsDates() {
-    $article = $this->getArticles(['events_only' => true]);
+    $this->getArticles(['events_only' => true]);
     $this->assertSelect(sprintf('LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_DEBUT IS NOT NULL OR START IS NOT NULL) AND (EVENTS_FIN IS NOT NULL OR (END IS NOT NULL AND END >= CURDATE())) AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC', self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
   public function withDayDateSqlShouldFilterEventsByDay() {
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'event_date' => '2011-03-15',
-                                    'id_bib' => 0]);
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'event_date' => '2011-03-15',
+                        'id_bib' => 0]);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_DEBUT IS NOT NULL OR START IS NOT NULL) AND (EVENTS_FIN IS NOT NULL OR END IS NOT NULL) AND (left(EVENTS_DEBUT,10) <= '2011-03-15' OR left(START,10) <= '2011-03-15') AND (left(EVENTS_FIN,10) >= '2011-03-15' OR left(END,10) >= '2011-03-15') AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -79,43 +64,31 @@ class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPrefer
 
   /** @test */
   public function withEventEndAfterSqlShouldFilterOnEventsFin() {
-    $articles = $this->getArticles(['event_end_after' => '2011-03-15']);
+    $this->getArticles(['event_end_after' => '2011-03-15']);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_FIN IS NOT NULL OR END IS NOT NULL) AND (left(EVENTS_FIN,10) >= '2011-03-15' OR left(END,10) >= '2011-03-15') AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",  self::WHERE_VISIBLE_CLAUSE));
   }
 
 
   /** @test */
   public function withMonthDateSqlShouldFilterEventsByMonth() {
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'event_date' => '2011-03',
-                                    'id_bib' => 0]);
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'event_date' => '2011-03',
+                        'id_bib' => 0]);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_DEBUT IS NOT NULL OR START IS NOT NULL) AND (EVENTS_FIN IS NOT NULL OR END IS NOT NULL) AND (left(EVENTS_DEBUT,7) <= '2011-03' OR left(START,7) <= '2011-03') AND (left(EVENTS_FIN,7) >= '2011-03' OR left(END,7) >= '2011-03') AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
-    return $articles;
   }
 
 
-  /**
-   * @depends withMonthDateSqlShouldFilterEventsByMonth
-   * @test
-   **/
-  public function articleEventsDebutAndFinShouldBeReplacedByStartEnd($articles) {
-    $this->assertEquals(['2011-10-20', '2011-10-21'],
-                        [$articles[0]->getEventsDebut(), $articles[0]->getEventsFin()]);
-  }
-
-
-
   /** @test */
   public function withMonthDateAndEventsOnlySqlShouldFilterEventsByMonth() {
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'events_only' => true,
-                                    'event_date' => '2011-03',
-                                    'id_bib' => 0]);
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'events_only' => true,
+                        'event_date' => '2011-03',
+                        'id_bib' => 0]);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_DEBUT IS NOT NULL OR START IS NOT NULL) AND (EVENTS_FIN IS NOT NULL OR END IS NOT NULL) AND (left(EVENTS_DEBUT,7) <= '2011-03' OR left(START,7) <= '2011-03') AND (left(EVENTS_FIN,7) >= '2011-03' OR left(END,7) >= '2011-03') AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -124,12 +97,12 @@ class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPrefer
   /** @test */
   public function withMonthDateOnCurrentMonthSqlShouldSelectEventsAfterCurdate() {
     Class_Article_SelectWithTimings::setTimeSource(new TimeSourceForTest('2011-03-20 10:00:00'));
-    $articles = $this->getArticles(['display_order' => 'EventDebut',
-                                    'id_items' => '',
-                                    'id_categorie' => '',
-                                    'events_only' => true,
-                                    'event_date' => '2011-03',
-                                    'id_bib' => 0]);
+    $this->getArticles(['display_order' => 'EventDebut',
+                        'id_items' => '',
+                        'id_categorie' => '',
+                        'events_only' => true,
+                        'event_date' => '2011-03',
+                        'id_bib' => 0]);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (EVENTS_DEBUT IS NOT NULL OR START IS NOT NULL) AND (EVENTS_FIN IS NOT NULL OR END IS NOT NULL) AND (left(EVENTS_DEBUT,7) <= '2011-03' OR left(START,7) <= '2011-03') AND (left(EVENTS_FIN,7) >= '2011-03' OR (left(END,7) >= '2011-03' AND END >= CURDATE())) AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
@@ -137,10 +110,33 @@ class ArticlesMultipleTimingsLoaderTest extends ArticleLoaderGetArticlesByPrefer
 
   /** @test */
   public function withInvalidEventDateShouldNotRestrictOnEventDate() {
-    $articles = $this->getArticles(['event_date' => 'trololo',
-                                    'event_start_after' => 'test',
-                                    'event_end_after' => 'raté']);
+    $this->getArticles(['event_date' => 'trololo',
+                        'event_start_after' => 'test',
+                        'event_end_after' => 'raté']);
     $this->assertSelect(sprintf("LEFT JOIN `cms_article_timings` ON cms_article.id_article=cms_article_timings.article_id WHERE %s AND (PARENT_ID=0) GROUP BY `id_article` ORDER BY `DATE_CREATION` DESC",
                                 self::WHERE_VISIBLE_CLAUSE));
   }
 }
+
+
+
+
+class ArticlesMultipleTimingsLoaderDatesTest extends ModelTestCase {
+  /** @test */
+  public function loadingWithStartAndEndShouldReplaceEventsDebutAndFin() {
+    $article = Class_Article::newFromRow(['ID_ARTICLE' => 23,
+                                          'ID_CAT' => 2,
+                                          'TITRE' => 'Fête de la pomme',
+                                          'DATE_CREATION' => '2011-04-02',
+                                          'DEBUT' => '2011-10-02',
+                                          'FIN' => '2011-10-22',
+                                          'EVENTS_DEBUT' => '',
+                                          'EVENTS_FIN' => '',
+                                          'START' => '2011-10-20',
+                                          'END' => '2011-10-21']);
+
+    $this->assertEquals(['2011-10-20', '2011-10-21'],
+                        [$article->getEventsDebut(),
+                         $article->getEventsFin()]);
+  }
+}
diff --git a/tests/scenarios/AuthorPage/AuthorPageTest.php b/tests/scenarios/AuthorPage/AuthorPageTest.php
index ab4b526755b3114cb8315466ccf65ec4d71668e2..00a1ed6e4595ff75b30bebd4073e4fe1c079132c 100644
--- a/tests/scenarios/AuthorPage/AuthorPageTest.php
+++ b/tests/scenarios/AuthorPage/AuthorPageTest.php
@@ -67,11 +67,13 @@ abstract class AuthorPageTestCase extends AbstractControllerTestCase {
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 2408,
-                    'libelle' => 'Victor Hugo']);
+                    'libelle' => 'Victor Hugo',
+                    'formes' => 'HUGOxVICTOR']);
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 3,
-                    'libelle' => 'Robert Hossein']);
+                    'libelle' => 'Robert Hossein',
+                    'formes' => 'HOSSEINxROBERT']);
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 4,
@@ -369,8 +371,7 @@ class AuthorPageViewByIdTest extends AuthorPageTestCase {
                                       . Class_Url::assemble(['controller' => 'author',
                                                              'action' => 'view',
                                                              'id' => 4 ])
-                                      . '"]', 'Marcus %s \Mill',
-                                      $this->_response->getBody());
+                                      . '"]', 'Marcus %s \Mill');
   }
 
 
@@ -611,8 +612,7 @@ class AuthorPageViewRecordDetailTest extends AuthorPageTestCase {
   /** @test */
   public function authorLinkShouldBeAuthorPage() {
     $this->assertXPathContentContains('//dd/a[@href="/author/view/id/2408"]',
-                                      'Victor Hugo',
-                                      $this->_response->getBody());
+                                      'Victor Hugo');
   }
 
 
@@ -645,8 +645,7 @@ class AuthorPageViewRecordWithAuthorTest extends AuthorPageTestCase {
   /** @test */
   public function authorInHeaderShouldBeAuthorPage() {
     $this->assertXPathContentContains('//h1/a[@href="/author/view/id/2408"]',
-                                      'Victor Hugo',
-                                      $this->_response->getBody());
+                                      'Victor Hugo');
   }
 }
 
diff --git a/tests/scenarios/AuthorPage/AuthorWidgetTest.php b/tests/scenarios/AuthorPage/AuthorWidgetTest.php
index 538088d8c99c24057591c88f32f3c564c8416e43..76b613eba7a6ff47e248e1ed9021da59f59b55e9 100644
--- a/tests/scenarios/AuthorPage/AuthorWidgetTest.php
+++ b/tests/scenarios/AuthorPage/AuthorWidgetTest.php
@@ -22,7 +22,6 @@
 
 abstract class AuthorWidgetOnPageTestCase extends Admin_AbstractControllerTestCase {
 
-
   public function setUp() {
     parent::setUp();
 
@@ -70,12 +69,14 @@ abstract class AuthorWidgetOnPageTestCase extends Admin_AbstractControllerTestCa
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 4,
                     'libelle' => 'Marcus %s \Mill',
-                   'thumbnail_url' => 'http://wp&f=Defaut.svg']);
+                    'thumbnail_url' => 'http://wp&f=Defaut.svg',
+                    'formes' => 'MARCUSxxSxxMILL']);
 
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 5,
                     'libelle' => 'Delannoy Jean',
-                    'thumbnail_url' => 'http://wp/delannoy.jpg']);
+                    'thumbnail_url' => 'http://wp/delannoy.jpg',
+                    'formes' => 'DELANNOYxJEAN']);
 
     $this->fixture(Class_CodifAuteurFonction::class,
                    ['id' => 635,
@@ -129,6 +130,7 @@ class AuthorWidgetActionRefreshThumbnailsTest extends AuthorWidgetOnPageTestCase
          ->answers(Class_Notice::findAll());
 
     $this->dispatch('/admin/widget/widget-action/named/refresh/id_module/1/id_profil/2');
+    Class_CodifAuteur::clearCache();
   }
 
 
@@ -303,16 +305,10 @@ class AuthorWidgetOnPageFilteredByResponsibilityTest extends AuthorWidgetOnPageT
                                                                'responsibilities' => '230;370;',
                                                                'id_catalogue' => 5]]]]);
 
-
     $this->onLoaderOfModel('Class_Notice')
          ->whenCalled('getNoticesFromPreferences')
          ->answers(Class_Notice::findAll());
 
-    $this->onLoaderOfModel('Class_CodifAuteur')
-         ->whenCalled('findByCodeAlpha')
-         ->with('DELANNOYxJEAN')
-         ->answers(Class_CodifAuteur::find(5));
-
     $this->dispatch('/');
   }
 
@@ -524,4 +520,4 @@ class AuthorWidgetActionRefreshThumbnailsInTemplateTest
                                  'cfg_accueil' => $cfg_accueil]);
     return $this;
   }
-}
\ No newline at end of file
+}
diff --git a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsAdminTest.php b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsAdminTest.php
index 7fa5c9ba3ad3319c01c497441b0589dcf7990377..26ec2fcd4c8f2a8191444348371875696beca94c 100644
--- a/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsAdminTest.php
+++ b/tests/scenarios/DynamicFacetOnDomains/DynamicFacetOnDomainsAdminTest.php
@@ -71,6 +71,7 @@ class DynamicFacetOnDomainsAdminCatalogueTest
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/catalogue/');
   }
 
@@ -120,6 +121,8 @@ class DynamicFacetOnDomainsAdminCatalogueListModeTest
   extends DynamicFacetOnDomainsAdminCatalogueTest {
 
   public function setUp() {
+    parent::setUp();
+
     DynamicFacetOnDomainsAdminTestCase::setUp();
     Class_AdminVar::set('ENABLE_DOMAINS_PER_LIBRARIES', 1);
     $this->dispatch('/admin/catalogue/');
@@ -133,6 +136,7 @@ class DynamicFacetOnDomainsAdminListTest extends DynamicFacetOnDomainsAdminTestC
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/facets');
   }
 
@@ -188,10 +192,12 @@ class DynamicFacetOnDomainsAdminListTest extends DynamicFacetOnDomainsAdminTestC
 
 
 
-class DynamicFacetOnDomainsAdminListWithParamsTest extends DynamicFacetOnDomainsAdminTestCase {
+class DynamicFacetOnDomainsAdminListWithParamsTest
+  extends DynamicFacetOnDomainsAdminTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/facets/index/a_wrong/param');
   }
 
@@ -218,6 +224,7 @@ class DynamicFacetOnDomainsAdminAddActionTest
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/facets/add');
   }
 
@@ -342,6 +349,7 @@ class DynamicFacetOnDomainsAdminEditLesAnimauxTest
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/facets/edit/id/1');
   }
 
@@ -380,7 +388,8 @@ class DynamicFacetOnDomainsAdminEditLesAnimauxTest
 
 
 
-class DynamicFacetOnDomainsAdminDeleteTest extends DynamicFacetOnDomainsAdminTestCase {
+class DynamicFacetOnDomainsAdminDeleteTest
+  extends DynamicFacetOnDomainsAdminTestCase {
 
   public function setUp() {
     parent::setUp();
@@ -427,9 +436,12 @@ class DynamicFacetOnDomainsAdminDeleteTest extends DynamicFacetOnDomainsAdminTes
 
 
 
-class DynamicFacetOnDomainsEditDomainDeLaFermeTest extends DynamicFacetOnDomainsAdminTestCase {
+class DynamicFacetOnDomainsEditDomainDeLaFermeTest
+  extends DynamicFacetOnDomainsAdminTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/catalogue/edit/id_catalogue/21');
   }
 
diff --git a/tests/scenarios/NoveltyFacet/NoveltyFacetTest.php b/tests/scenarios/NoveltyFacet/NoveltyFacetTest.php
index fe5a914dd19d2fce28cd71fa8f555afc6c7ff573..09485012519be0cd2f98b69c56576e7dea09f835 100644
--- a/tests/scenarios/NoveltyFacet/NoveltyFacetTest.php
+++ b/tests/scenarios/NoveltyFacet/NoveltyFacetTest.php
@@ -21,7 +21,6 @@
 
 
 class NoveltyFacetSearchResultConfigTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -54,24 +53,29 @@ class NoveltyFacetSearchResultConfigTest extends Admin_AbstractControllerTestCas
 
 
 class NoveltyFacetDomainEditTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
+
     Class_CodifThesaurus::ensureRecordNovelty();
-    $this->onLoaderOfModel('Class_CodifThesaurus');
+    $this->onLoaderOfModel(Class_CodifThesaurus::class)
+         ->whenCalled('findAllBy')
+         ->with(['where' => 'LENGTH(id_thesaurus) in (1,4)',
+                 'id_thesaurus not' => ['NRNR', 'NNNN', 'NANA', 'CCCC'],
+                 'id_origine' => null,
+                 'order' => 'id_thesaurus'])
+         ->answers([])
+
+         ->whenCalled('findDomainFacets')
+         ->answers([]);
+
     $this->dispatch('/admin/catalogue/add');
   }
 
 
   /** @test */
   public function pageShouldNotContainRecordNoveltyInput() {
-    $this->assertEquals(['where' => 'LENGTH(id_thesaurus) in (1,4)',
-                         'id_thesaurus not' => ['NRNR', 'NNNN', 'NANA', 'CCCC'],
-                         'id_origine' => null,
-                         'order' => 'id_thesaurus'],
-                        Class_CodifThesaurus::getFirstAttributeForLastCallOn('findAllBy'));
+    $this->assertNotXPath('//input[@name="NRNR"]');
   }
 }
 
@@ -79,8 +83,6 @@ class NoveltyFacetDomainEditTest extends Admin_AbstractControllerTestCase {
 
 
 class NoveltyFacetSearchResultSimpleTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
@@ -172,7 +174,8 @@ abstract class NoveltyFacetRecordUpdateTestCase extends ModelTestCase {
 
 
 
-class NoveltyFacetUpdateFacetsFromExemplairesTest extends NoveltyFacetRecordUpdateTestCase {
+class NoveltyFacetUpdateFacetsFromExemplairesTest
+  extends NoveltyFacetRecordUpdateTestCase {
   protected function _updateRecord() {
     $this->_record->updateFacetsFromExemplaires();
   }
diff --git a/tests/scenarios/ProfilImportExport/ImportTest.php b/tests/scenarios/ProfilImportExport/ImportTest.php
index f59121a1617510d125c261533d603bc1eecfe963..a4eac7fd5baa1d1d4406cb72c3576d49e52eb044 100644
--- a/tests/scenarios/ProfilImportExport/ImportTest.php
+++ b/tests/scenarios/ProfilImportExport/ImportTest.php
@@ -21,10 +21,12 @@
 
 
 class Class_Profil_ImportDataTest extends ModelTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('MENU_BOITE', 1);
     $bill = $this->fixture('Class_Profil', ['id' => 7]);
+    Class_Profil::setCurrentProfil($bill);
     (new Class_Profil_Import($bill))->import(realpath(__DIR__) . '/7.json');
     $bill->save();
   }
diff --git a/tests/scenarios/SearchByWork/SearchResultByWorkTest.php b/tests/scenarios/SearchByWork/SearchResultByWorkTest.php
index aa1739871bba47ddcc1a1390f4048c84742a4dcf..6838efc1ed992d81050b4377852301bcc4a3ac0f 100644
--- a/tests/scenarios/SearchByWork/SearchResultByWorkTest.php
+++ b/tests/scenarios/SearchByWork/SearchResultByWorkTest.php
@@ -21,11 +21,10 @@
 
 
 abstract class SearchResultByWorkTestCase extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
+
     $profil = $this->_prepareProfile();
     $profil->setCfgModulesPreferences(['by_work' => 1], 'recherche', 'resultat', 'simple');
     Class_AdminVar::set('SEARCH_BY_WORK', 1);
@@ -34,7 +33,8 @@ abstract class SearchResultByWorkTestCase extends AbstractControllerTestCase {
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => '2897',
                     'libelle' => 'Terry Pratchett',
-                    'code_alpha' => 'PRATCHETTxTERRY',
+                    'code_alpha' => 'TERRY PRATCHETT',
+                    'formes' => 'TERRYxPRATCHETT',
                     'youtube_channel_id' => '80937UINT']);
 
     $unimarc = (new Class_NoticeUnimarc_Fluent)
@@ -441,6 +441,7 @@ class SearchResultByWorkAjaxAuthorTest extends SearchResultByWorkTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/work/ajax-author/expressionRecherche/lapin/by_work/1/id/ACCROCDUROC-PRATCHETTT');
   }
 
diff --git a/tests/scenarios/Serials/SearchSerialsTest.php b/tests/scenarios/Serials/SearchSerialsTest.php
index 6dcb9dff0488067baef182469a93f2e6b39a0a02..c889055580ae40226b9732a207ad3de20e3a8d64 100644
--- a/tests/scenarios/Serials/SearchSerialsTest.php
+++ b/tests/scenarios/Serials/SearchSerialsTest.php
@@ -373,7 +373,9 @@ class SearchSerialsNoticeAjaxControllerDetailsActionTest extends SearchSerialsPM
     parent::setUp();
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 2,
-                    'code_alpha' => 'LEBLANCxSERGE']);
+                    'libelle' => 'Serge Leblanc',
+                    'formes' => 'LEBLANCxSERGE']);
+
     $this->dispatch('/opac/noticeajax/detail/id/123');
   }
 
@@ -394,8 +396,7 @@ class SearchSerialsNoticeAjaxControllerDetailsActionTest extends SearchSerialsPM
 
   /** @test */
   public function secondLiShouldContainsAuthorSergeLeblanc() {
-    $this->assertXPathContentContains('//ul/li[2]/dl/dd',
-                                      'Serge Leblanc');
+    $this->assertXPathContentContains('//ul/li[2]/dl/dd', 'Serge Leblanc');
   }
 
 
diff --git a/tests/scenarios/Serials/SerialsDetailsTest.php b/tests/scenarios/Serials/SerialsDetailsTest.php
index 2077a34b379e2c71aa3d6ff36549e9b269faad06..8508706101ccbf3b6d8ad2ad597b6b6bfb6e34d9 100644
--- a/tests/scenarios/Serials/SerialsDetailsTest.php
+++ b/tests/scenarios/Serials/SerialsDetailsTest.php
@@ -173,7 +173,9 @@ class SerialsDetailsNoticeAjaxControllerPeriodiqueSerieXsltTest extends SerialsD
 
 
 
-class SerialsDetailsRecordDescriptionPeriodiqueSerieTest extends SerialsDetailsTestCase {
+class SerialsDetailsRecordDescriptionPeriodiqueSerieTest
+  extends SerialsDetailsTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->_buildTemplateProfil(['id' => 78]);
@@ -197,16 +199,6 @@ class SerialsDetailsRecordDescriptionPeriodiqueSerieTest extends SerialsDetailsT
                                  'formes'=> 'ABERKANExIDRISS',
                                  'mot_renvois' => '']);
 
-
-    $this
-      ->onLoaderOfModel(Class_CodifAuteur::class)
-      ->whenCalled('findByCodeAlpha')
-      ->with(['ABDELKRIMxSAMIR'])
-      ->answers([$abdelkrim])
-      ->whenCalled('findByCodeAlpha')
-      ->with(['ABERKANExIDRISS'])
-      ->answers([$aberkane]);
-
     Class_CosmoVar::setValueOf('unimarc_zone_matiere',"610a");
 
     foreach (range(1, 105) as $id)
@@ -304,4 +296,4 @@ class SerialsDetailsInThemeTest extends SerialsDetailsTestCase {
   public function divRecordSerialsArticlesListShouldContainsCardTitlefakirEcologieShouldBeDisplay() {
     $this->assertXPathContentContains('//div[@class="record_serials_articles container-fluid articles"]//div[@class="record_serials_articles_list col-12"]//div[@class="card-title card_title card_title_Intonation_Library_View_Wrapper_SerialArticleFromArray"]', 'Fakir ecologie');
   }
-}
\ No newline at end of file
+}
diff --git a/tests/scenarios/Templates/TemplatesJumbotronTest.php b/tests/scenarios/Templates/TemplatesJumbotronTest.php
index 930015fb65527116b81810b3ad859dd54de83154..25eede2f52a98615bfaf600904b71955d429cd84 100644
--- a/tests/scenarios/Templates/TemplatesJumbotronTest.php
+++ b/tests/scenarios/Templates/TemplatesJumbotronTest.php
@@ -24,6 +24,7 @@ class TemplatesJumbotronRecordsItemsTest extends AbstractControllerTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->_buildTemplateProfil(['id' => 2]);
 
     $this->fixture(Class_Notice::class,
@@ -94,6 +95,7 @@ class TemplatesJumbotronRecordsItemsTest extends AbstractControllerTestCase {
     $this->fixture('Class_CodifAuteur',
                    ['id' => 2408,
                     'libelle' => 'Victor Hugo',
+                    'formes' => 'HUGOxVICTOR',
                     'thumbnail_url' => 'http://wp/hugo.jpg']);
 
     Class_Notice::find(1)->setAuteurPrincipal('Victor Hugo');
@@ -103,7 +105,6 @@ class TemplatesJumbotronRecordsItemsTest extends AbstractControllerTestCase {
   }
 
 
-
   /** @test */
   public function shouldJsLoadBorrowerLoans() {
     $pierre = $this->fixture(Class_Users::class,
diff --git a/tests/scenarios/Templates/TemplatesSearchSettingsTest.php b/tests/scenarios/Templates/TemplatesSearchSettingsTest.php
index 83b181f6a93a9a8eb719ffc72af7bfd5c0cfa126..2d45163fd40b027e5b28ffa993af5de2d652c2cf 100644
--- a/tests/scenarios/Templates/TemplatesSearchSettingsTest.php
+++ b/tests/scenarios/Templates/TemplatesSearchSettingsTest.php
@@ -23,8 +23,6 @@
 class TemplatesSearchSettingsResultWithSearchTermHighLightedTest
   extends AbstractControllerTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
   public function setUp() {
     parent::setUp();
 
@@ -38,8 +36,9 @@ class TemplatesSearchSettingsResultWithSearchTermHighLightedTest
                       ['highlight_search_terms' => '1']);
 
     $this->fixture(Class_CodifAuteur::class,
-                   ['id' => 43,
-                    'libelle' => 'Heros Audiard']);
+                   ['id' => 44,
+                    'libelle' => 'Audiard Jacques',
+                    'formes' => 'AUDIARDxJACQUES']);
 
     $this->fixture(Class_Notice::class,
                    ['id' => 1,
diff --git a/tests/scenarios/Templates/TemplatesSearchTest.php b/tests/scenarios/Templates/TemplatesSearchTest.php
index c716255ac7962cbe92d4ca3ecfd52f419b98f0ce..af57fea0336eb2c0530778fa2d0483ee214692b0 100644
--- a/tests/scenarios/Templates/TemplatesSearchTest.php
+++ b/tests/scenarios/Templates/TemplatesSearchTest.php
@@ -1272,8 +1272,9 @@ class TemplatesSearchResultWithSearchTermHighLightedTest extends AbstractControl
                       ['highlight_search_terms' => '1']);
 
     $this->fixture(Class_CodifAuteur::class,
-                   ['id' => 43,
-                    'libelle' => 'Heros Audiard']);
+                   ['id' => 44,
+                    'libelle' => 'Audiard Jacques',
+                    'formes' => 'AUDIARDxJACQUES']);
 
     $this->fixture(Class_Notice::class,
                    ['id' => 1,
@@ -1313,7 +1314,7 @@ class TemplatesSearchResultWithSearchTermHighLightedTest extends AbstractControl
   /** @test */
   public function cardLinkReadDocumentTitleShouldNotContainsHTML() {
     $this->assertXPathContentContains('//div[@class="card_action read_document col col-lg-12 p-0 mx-1 my-1"]//a[@href="/recherche/viewnotice/id/1/expressionRecherche/ero+Odiar"][@title="Voir le document Un héros très discret"]//span[@class="sr-only"]',
-                                      ' le document Un héros très discret de Heros Audiard de type ');
+                                      ' le document Un héros très discret de Audiard Jacques de type ');
   }
 
 
diff --git a/tests/scenarios/Templates/TemplatesTest.php b/tests/scenarios/Templates/TemplatesTest.php
index f51b6f94f1322285bac52f98c01ba631eb9ca4ad..88fc01c70c03b6e1a1a8ad0b39855c057d3b7049 100644
--- a/tests/scenarios/Templates/TemplatesTest.php
+++ b/tests/scenarios/Templates/TemplatesTest.php
@@ -21,25 +21,21 @@
 
 
 abstract class TemplatesEnabledTestCase extends Admin_AbstractControllerTestCase {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('TEMPLATING', 1);
   }
-
-  public function tearDown() {
-    parent::tearDown();
-    Class_Systeme_ModulesAccueil::reset();
-  }
 }
 
 
 
 
 class TemplatesControllerApplyIntonationTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Profil',
                    ['id' => 1,
                     'parent_id' => null,
@@ -80,14 +76,14 @@ class TemplatesControllerApplyIntonationTest extends TemplatesEnabledTestCase {
 
 
 class TemplatesControllerTryIntonationTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Profil',
                    ['id' => 1]);
 
-    $this->dispatch('/admin/template/try/template/INTONATION/on/1', true);
+    $this->dispatch('/admin/template/try/template/INTONATION/on/1');
   }
 
 
@@ -113,10 +109,10 @@ class TemplatesControllerTryIntonationTest extends TemplatesEnabledTestCase {
 
 
 class TemplatesControllerResetIntonationTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->fixture('Class_Template_Settings',
                    ['id' => 1,
                     'template' => 'INTONATION']);
@@ -163,7 +159,6 @@ class TemplatesControllerResetIntonationTest extends TemplatesEnabledTestCase {
 
 
 class TemplatesControllerTryHistoricTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -172,7 +167,7 @@ class TemplatesControllerTryHistoricTest extends TemplatesEnabledTestCase {
                    ['id' => 1,
                    ]);
 
-    $this->dispatch('/admin/template/try/template/HISTORIC/on/1', true);
+    $this->dispatch('/admin/template/try/template/HISTORIC/on/1');
   }
 
 
@@ -193,9 +188,6 @@ class TemplatesControllerTryHistoricTest extends TemplatesEnabledTestCase {
 
 abstract class TemplatesIntonationTestCase extends TemplatesEnabledTestCase {
 
-  protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
@@ -594,7 +586,7 @@ class TemplatesDispatchEditSectionTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/widget/edit-section/id/4/id_profil/72', true);
+    $this->dispatch('/admin/widget/edit-section/id/4/id_profil/72');
   }
 
 
@@ -624,10 +616,12 @@ class TemplatesDispatchEditSectionTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplatesPostDispatchEditSectionTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->postDispatch('/admin/widget/edit-section/id/4/id_profil/72', ['IntonationVisibilityRecherche' => 0]);
   }
 
@@ -645,9 +639,11 @@ class TemplatesPostDispatchEditSectionTest extends TemplatesIntonationTestCase {
 
 
 class TemplatesDispatchEditPageTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/profil/accueil/id_profil/72', true);
+
+    $this->dispatch('/admin/profil/accueil/id_profil/72');
   }
 
 
@@ -659,6 +655,7 @@ class TemplatesDispatchEditPageTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplatesDispatchEditAllSectionTest extends TemplatesIntonationTestCase {
 
   public function xpaths() {
@@ -736,7 +733,7 @@ class TemplatesDispatchEditAllSectionTest extends TemplatesIntonationTestCase {
    * @dataProvider xpaths
    * @test */
   public function editSectionsShouldContainsXpath($id, $xpath) {
-    $this->dispatch('/admin/widget/edit-section/id/' . $id . '/id_profil/72', true);
+    $this->dispatch('/admin/widget/edit-section/id/' . $id . '/id_profil/72');
     $this->assertXpath($xpath);
   }
 }
@@ -744,9 +741,12 @@ class TemplatesDispatchEditAllSectionTest extends TemplatesIntonationTestCase {
 
 
 
-class TemplatesDispatchIntonationWithSectionSettingsTest extends TemplatesIntonationTestCase {
+class TemplatesDispatchIntonationWithSectionSettingsTest
+  extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/opac/index/index/id_profil/72');
   }
 
@@ -773,7 +773,6 @@ class TemplatesDispatchIntonationWithSectionSettingsTest extends TemplatesIntona
 
 
 class TemplatesEditTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -785,7 +784,7 @@ class TemplatesEditTest extends TemplatesEnabledTestCase {
     $settings->updateAttributes(['IntonationCoreJs' => 0,
                                  'IntonationCustomCssUrl' => ['https://my-server.org/assets/css/top.css']])->save();
 
-    $this->dispatch('/admin/template/edit/template/intonation', true);
+    $this->dispatch('/admin/template/edit/template/intonation');
   }
 
 
@@ -829,10 +828,10 @@ class TemplatesEditTest extends TemplatesEnabledTestCase {
 
 
 class TemplatesPostEditTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
+
     $this->postDispatch('/admin/template/edit/template/intonation',
                         ['IntonationHiddenMode' => Intonation_Library_Constants::RESPONSIVE_MODE_MEDIUM,
                          'IntonationHydratingMappingSource' => ['body', 'widget'],
@@ -881,12 +880,13 @@ class TemplatesPostEditTest extends TemplatesEnabledTestCase {
 
 
 
+
 class TemplatesEditHistoricTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/template/edit/template/HISTORIC', true);
+
+    $this->dispatch('/admin/template/edit/template/HISTORIC');
   }
 
 
@@ -898,13 +898,16 @@ class TemplatesEditHistoricTest extends TemplatesEnabledTestCase {
 
 
 
-class TemplatesNotLoggedTestDispatchIntonationTest extends TemplatesIntonationTestCase {
+
+class TemplatesNotLoggedTestDispatchIntonationTest
+  extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_Profil::find(72)->setAccessLevel(-1)->save();
     ZendAfi_Auth::getInstance()->clearIdentity();
-    $this->dispatch('/opac/index/index/id_profil/72', true);
+    $this->dispatch('/opac/index/index/id_profil/72');
   }
 
 
@@ -942,13 +945,12 @@ class TemplatesNotLoggedTestDispatchIntonationTest extends TemplatesIntonationTe
 
 
 class TemplatesIntonationHydratingtest extends ModelTestCase {
-  protected
-    $_storm_default_to_volatile = true,
-    $_template;
 
+  protected $_template;
 
   public function setUp() {
     parent::setUp();
+
     $this->_template = new Intonation_Template();
     Class_Template::setCurrent($this->_template);
   }
@@ -1009,7 +1011,8 @@ class TemplatesLoginWidgetSettingsFormTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/admin/widget/edit-widget/id/10/id_profil/72', true);
+
+    $this->dispatch('/admin/widget/edit-widget/id/10/id_profil/72');
   }
 
 
@@ -1026,6 +1029,7 @@ class TemplatesWidgetSettingsPostTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $this->postDispatch('/admin/widget/edit-widget/id/8/id_profil/72',
                         ['IntonationVisibilityIndex' => 0,
                          'IntonationVisibleWhenHidden' => 7]);
@@ -1063,6 +1067,7 @@ class TemplatesDispatchIntonationUnloggedTest extends TemplatesIntonationTestCas
 
   public function setUp() {
     parent::setUp();
+
     Class_Profil::find(72)->setCfgSiteParam('access_level', -1);
     $widget = ((new Class_Systeme_Widget_Widget)
                ->setId(10)
@@ -1073,7 +1078,7 @@ class TemplatesDispatchIntonationUnloggedTest extends TemplatesIntonationTestCas
       ->updateProfile();
 
     ZendAfi_Auth::getInstance()->clearIdentity();
-    $this->dispatch('/opac/index/index/id_profil/72', true);
+    $this->dispatch('/opac/index/index/id_profil/72');
   }
 
 
@@ -1086,10 +1091,12 @@ class TemplatesDispatchIntonationUnloggedTest extends TemplatesIntonationTestCas
 
 
 
-class TemplatesDispatchIntonationUnloggedWithToggleLoginTest extends TemplatesIntonationTestCase {
+class TemplatesDispatchIntonationUnloggedWithToggleLoginTest
+  extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_Profil::find(72)->setCfgSiteParam('access_level', -1);
     $widget = ((new Class_Systeme_Widget_Widget)
                ->setId(10)
@@ -1100,7 +1107,7 @@ class TemplatesDispatchIntonationUnloggedWithToggleLoginTest extends TemplatesIn
       ->updateProfile();
 
     ZendAfi_Auth::getInstance()->clearIdentity();
-    $this->dispatch('/opac/index/index/id_profil/72', true);
+    $this->dispatch('/opac/index/index/id_profil/72');
   }
 
 
@@ -1123,7 +1130,9 @@ class TemplatesDispatchIntonationUnloggedWithToggleLoginTest extends TemplatesIn
 
 
 
-class TemplatesDispatchIntonationWithHiddenSectionTest extends TemplatesIntonationTestCase {
+class TemplatesDispatchIntonationWithHiddenSectionTest
+  extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1135,7 +1144,7 @@ class TemplatesDispatchIntonationWithHiddenSectionTest extends TemplatesIntonati
       ->setNewDatas(['IntonationVisibilityIndex' => ''])
       ->updateProfile();
 
-    $this->dispatch('/opac/index/index/id_profil/72', true);
+    $this->dispatch('/opac/index/index/id_profil/72');
   }
 
 
@@ -1175,6 +1184,7 @@ class TemplatesControllerIndexDispatchWithAdminVarTemplateDisabledTest
 
 
 class TemplatesILSBorrowerLoggedTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1204,7 +1214,7 @@ class TemplatesILSBorrowerLoggedTest extends TemplatesIntonationTestCase {
     $intonation_profil = Class_Profil::find(72);
     $intonation_profil->setAccessLevel(0);
 
-    $this->dispatch('/opac/index/index/id_profil/72', true);
+    $this->dispatch('/opac/index/index/id_profil/72');
   }
 
 
@@ -1218,6 +1228,7 @@ class TemplatesILSBorrowerLoggedTest extends TemplatesIntonationTestCase {
 
 
 class TemplatesRecordResumeDispatchTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -1274,8 +1285,10 @@ class TemplatesRecordResumeDispatchTest extends TemplatesIntonationTestCase {
 
 
 class TemplatesDispatchRecordDescriptionTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $ids = range(455, 459);
     foreach($ids as $i)
       $this->fixture('Class_Notice',
@@ -1339,11 +1352,12 @@ class TemplatesDispatchRecordRelatedTest extends TemplatesIntonationTestCase {
 
 
 
-class TemplatesDispatchRecordAuthorTest extends TemplatesIntonationTestCase {
 
+class TemplatesDispatchRecordAuthorTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $unimarc = (new Class_NoticeUnimarc_Fluent)
       ->zoneWithContent('001', '12345')
 
@@ -1354,6 +1368,7 @@ class TemplatesDispatchRecordAuthorTest extends TemplatesIntonationTestCase {
     $this->fixture(Class_CodifAuteur::class,
                    ['id' => 2408,
                     'libelle' => 'Iron Maiden',
+                    'formes' => 'MAIDENxIRON',
                     'youtube_channel_id' => 123,
                     'thumbnail_url' => 'http://wp/iron.jpg']);
 
@@ -1381,6 +1396,7 @@ class TemplatesDispatchRecordAuthorTest extends TemplatesIntonationTestCase {
     Class_WebService_Afi::setHttpClient($httpClient);
   }
 
+
   public function tearDown() {
     Class_WebService_Afi::shouldThrowError(false);
     Class_WebService_Afi::setHttpClient(null);
@@ -1420,11 +1436,12 @@ class TemplatesDispatchRecordAuthorTest extends TemplatesIntonationTestCase {
 
 
 
-class TemplatesDispatchIntonationChangeIconAccountTest extends TemplatesIntonationTestCase {
-
+class TemplatesDispatchIntonationChangeIconAccountTest
+  extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     Class_FileManager::setFileSystem(null);
   }
 
@@ -1452,9 +1469,12 @@ class TemplatesDispatchIntonationChangeIconAccountTest extends TemplatesIntonati
 
 
 
-class TemplatesDispatchIntonationChangeIconAccountWithWrongFilePathTest extends TemplatesIntonationTestCase {
+class TemplatesDispatchIntonationChangeIconAccountWithWrongFilePathTest
+  extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_FileManager::setFileSystem(null);
     $settings = (new Class_User_Settings(Class_Users::getIdentity()));
     $settings
@@ -1490,7 +1510,6 @@ class TemplatesBibControllerProActionsTest extends TemplatesIntonationTestCase {
 
   protected $_creation_image;
 
-
   public function setUp() {
     parent::setUp();
 
@@ -1545,7 +1564,6 @@ class TemplatesBibControllerProActionsTest extends TemplatesIntonationTestCase {
                                  'user' => $pro]);
 
     $selection->addNotice($record)->save();
-
   }
 
 
@@ -1580,11 +1598,14 @@ class TemplatesBibControllerProActionsTest extends TemplatesIntonationTestCase {
 
 
 class TemplatesDispatchProfilAccueilTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/admin/profil/accueil/id_profil/72');
   }
 
+
   /** @test */
   public function formShouldNotContainsAffichage() {
     $this->assertNotXPathContentContains('//form//fieldset/legend', 'Affichage');
@@ -1617,7 +1638,9 @@ class TemplatesDispatchProfilAccueilTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplatesDispatchProfilIndexTest extends TemplatesIntonationTestCase {
+
   /** @test */
   public function linkToPromoteShouldBePresent() {
     Class_Profil::getPortail()->setIdSite(1)->save();
@@ -1629,6 +1652,7 @@ class TemplatesDispatchProfilIndexTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplatesIntonationPromoteProfileTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
@@ -1767,8 +1791,10 @@ class TemplatesDispatchEditAllActionsTest extends TemplatesIntonationTestCase {
 
 
 class TemplatesSearchInSessionTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Zend_Registry::get('session')->last_search = ['expressionRecherche' => 'trolls de troy',
                                                   'pertinence' => 1];
   }
@@ -1876,10 +1902,12 @@ class TemplatesSearchInSessionTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplateSearchSaveSettingsTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     $user = $this->fixture('Class_Users',
                            ['id' => 8989,
                             'login' => ',eui',
@@ -1913,6 +1941,7 @@ class TemplateSearchSaveSettingsTest extends TemplatesIntonationTestCase {
 
 
 
+
 class TemplateSearchSavedSettingsTest extends TemplatesIntonationTestCase {
 
   public function setUp() {
@@ -1981,8 +2010,6 @@ class TemplateSearchSavedSettingsTest extends TemplatesIntonationTestCase {
 
 
 class TemplateIntonationWithSkinTest extends TemplatesEnabledTestCase {
-  protected $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
@@ -2082,6 +2109,7 @@ class TemplatesDispatchIntonationAuthLoginTest extends TemplatesIntonationTestCa
 
   public function setUp() {
     parent::setUp();
+
     $this->dispatch('/opac/auth/login/id_profil/72');
   }
 
@@ -2094,10 +2122,13 @@ class TemplatesDispatchIntonationAuthLoginTest extends TemplatesIntonationTestCa
 
 
 
-class TemplatesDispatchIntonationAuthLoginWithRedirectTest extends TemplatesIntonationTestCase {
+
+class TemplatesDispatchIntonationAuthLoginWithRedirectTest
+  extends TemplatesIntonationTestCase {
 
   public function setUp() {
     parent::setUp();
+
     ZendAfi_Auth::getInstance()->clearIdentity();
     $this->dispatch('/opac/auth/login/id_profil/72?redirect='.urlencode('http://mybib/modules/skilleos'));
   }
@@ -2122,9 +2153,9 @@ class TemplatesDispatchSearchWithFacetsTest extends TemplatesIntonationTestCase
 
   protected $_storm_default_to_volatile = false;
 
-
   public function setUp() {
     parent::setUp();
+
     (new Class_Profil_Preferences())->setModulePref(Class_Profil::find(72),
                                                     (new Class_Profil_ModuleDefinition('recherche',
                                                                                        'resultat',
@@ -2132,7 +2163,7 @@ class TemplatesDispatchSearchWithFacetsTest extends TemplatesIntonationTestCase
                                                     ['facets_closed_codes' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                                                      'facettes_codes' => 'ABCDEFGHIJKLMNOPQRSUVWXYZ']);
 
-    $this->dispatch('/opac/recherche/simple/expressionRecherche/pomme/id_profil/72/liste_format/4/titre/Les documents', true);
+    $this->dispatch('/opac/recherche/simple/expressionRecherche/pomme/id_profil/72/liste_format/4/titre/Les documents');
   }
 
 
@@ -2158,6 +2189,7 @@ class TemplatesDispatchSearchWithFacetsTest extends TemplatesIntonationTestCase
 
 
 class TemplatesSuggestionAchatAddTest extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2188,7 +2220,9 @@ class TemplatesSuggestionAchatAddTest extends TemplatesIntonationTestCase {
 
 
 
-class TemplatesSuggestionAchatAddPostWithSearchRecordTest extends TemplatesIntonationTestCase {
+class TemplatesSuggestionAchatAddPostWithSearchRecordTest
+  extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -2250,9 +2284,11 @@ class TemplatesSuggestionAchatAddPostWithSearchRecordTest extends TemplatesInton
 
 class TemplatesFormulaireContactActionWithBibSelectorSettingDefaultTest
   extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/opac/index/formulairecontact/id_profil/72', true);
+
+    $this->dispatch('/opac/index/formulairecontact/id_profil/72');
   }
 
 
@@ -2267,8 +2303,10 @@ class TemplatesFormulaireContactActionWithBibSelectorSettingDefaultTest
 
 class TemplatesFormulaireContactActionWithBibSelectorSettingCheckedTest
   extends TemplatesIntonationTestCase {
+
   public function setUp() {
     parent::setUp();
+
     Class_Profil::find(72)
       ->setCfgModules(['index' => ['formulairecontact' => ['bib_selector' => 1]]]);
 
@@ -2282,7 +2320,7 @@ class TemplatesFormulaireContactActionWithBibSelectorSettingCheckedTest
                     'libelle' => 'her bib',
                     'mail' => 'her_bib@bib.com']);
 
-     $this->dispatch('/opac/index/formulairecontact/id_profil/72', true);
+     $this->dispatch('/opac/index/formulairecontact/id_profil/72');
   }
 
 
diff --git a/tests/scenarios/Templates/TemplatesTimelineWidgetTest.php b/tests/scenarios/Templates/TemplatesTimelineWidgetTest.php
index 762a94c8f46cc40322a90bebde656a5145368a54..ccc1b49cd6986079a26bba17a1384cb67acaf25b 100644
--- a/tests/scenarios/Templates/TemplatesTimelineWidgetTest.php
+++ b/tests/scenarios/Templates/TemplatesTimelineWidgetTest.php
@@ -21,9 +21,6 @@
 
 
 class TemplatesTimelineWidgetInMainTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
-
   public function setUp() {
     parent::setUp();
 
@@ -95,13 +92,11 @@ class TemplatesTimelineWidgetInMainTest extends AbstractControllerTestCase {
 
 
 
-abstract class TemplatesTimelineWidgetRenderHelperTestCase extends AbstractControllerTestCase {
-
-  protected
-    $_storm_default_to_volatile = true,
-    $_html,
-    $_view;
+abstract class TemplatesTimelineWidgetRenderHelperTestCase
+  extends AbstractControllerTestCase {
 
+  protected $_html, $_view;
+  protected string $_year = '2021';
 
   public function setUp() {
     parent::setUp();
@@ -125,33 +120,6 @@ abstract class TemplatesTimelineWidgetRenderHelperTestCase extends AbstractContr
   }
 
 
-  public function getExpectedTitles() {
-    $this->setUp();
-    return (new Storm_Collection($this->_getElements()))
-      ->collect(function($element)
-                {
-                  $title = $element->getMainTitle();
-                  $title = $this->_view->truncate($title, [], 3, false, '');
-                  $encoded_title = json_encode($title);
-                  $trimed_title = substr($encoded_title, 1);
-                  $trimed_title = substr($trimed_title, 0, -1);
-                  return [$trimed_title];
-                })
-      ->getArrayCopy();
-  }
-
-
-  public function getExpectedDates() {
-    $this->setUp();
-    return (new Storm_Collection($this->_getElements()))
-      ->collect(function($element)
-                {
-                  return [$element->getTimelineEventsDates()->getStartDate()['year']];
-                })
-      ->getArrayCopy();
-  }
-
-
   /** @test */
   public function htmlShouldNotBeEmpty() {
     $this->assertNotEquals('', $this->_html);
@@ -159,8 +127,9 @@ abstract class TemplatesTimelineWidgetRenderHelperTestCase extends AbstractContr
 
 
   /** @test */
-  public function yearShouldBe2021() {
-    $this->assertContains('[{"start_date":{"year":"2021', $this->_html);
+  public function yearShouldBeExpected() {
+    $this->assertContains('[{"start_date":{"year":"' . $this->_year,
+                          $this->_html);
   }
 
 
@@ -168,58 +137,73 @@ abstract class TemplatesTimelineWidgetRenderHelperTestCase extends AbstractContr
    * @dataProvider getExpectedTitles
    * @test */
   public function expectedTitleShouldBeInScript($title) {
+    $title = substr(substr(json_encode($title), 1), 0, -1);
     $this->assertContains('"text":{"headline":"' . $title, $this->_html);
   }
 
 
-
-  /**
-   * @dataProvider getExpectedDates
-   * @test */
-  public function expectedDatesShouldBeInScript($date) {
-    $this->assertContains('[{"start_date":{"year":"' . $date, $this->_html);
+  public function getExpectedTitles() : array {
+    return [];
   }
 
 
-  abstract protected function _getElements();
+  abstract protected function _getElements() : array;
 }
 
 
 
-abstract class TemplatesTimelineWidgetRenderHelperEmptyTestCase extends TemplatesTimelineWidgetRenderHelperTestCase {
+abstract class TemplatesTimelineWidgetRenderHelperEmptyTestCase
+  extends AbstractControllerTestCase {
+
+  protected $_view, $_html;
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_buildTemplateProfil(['id' => 12]);
+
+    $view_renderer = new ZendAfi_Controller_Action_Helper_ViewRenderer;
+    $view_renderer->preDispatch();
+    $this->_view = $view_renderer->view;
+
+    $helper = (new Intonation_View_RenderTimeline)
+      ->setView($this->_view);
+
+    $this->_html =
+      $helper->renderTimeline(new Storm_Collection($this->_getElements()),
+                              fn($element) => $element->getMainTitle())
+      . Class_ScriptLoader::getInstance()->html();
+  }
 
 
   /** @test */
-  public function yearShouldBe2021() {
-    // htmlShouldNotContains2021
+  public function htmlShouldNotContains2021() {
     $this->assertNotContains('2021', $this->_html);
   }
 
 
-  /**
-   * @dataProvider getExpectedTitles
-   * @test */
-  public function expectedTitleShouldBeInScript($title) {
-    // htmlShouldNoContainsTitle
-    $this->assertNotContains('"text":{"headline":"' . $title, $this->_html);
+  /** @test */
+  public function htmlShouldNotContainsHeadline() {
+    $this->assertNotContains('"text":{"headline":', $this->_html);
   }
 
 
 
-  /**
-   * @dataProvider getExpectedDates
-   * @test */
-  public function expectedDatesShouldBeInScript($date) {
-    // expectedErrorMessageShouldBeInHTML
-    $this->assertEquals('<p class="error" title="Erreur: &quot;Pas de date disponible&quot;. Ce message indique un disfonctionnement.">Pas de date disponible</p>', $this->_html);
+  /** @test */
+  public function expectedErrorMessageShouldBeInHTML() {
+    $this->assertEquals('<p class="error" title="Erreur: &quot;Pas de date disponible&quot;. Ce message indique un disfonctionnement.">Pas de date disponible</p>',
+                        $this->_html);
   }
+
+
+  abstract protected function _getElements() : array;
 }
 
 
 
 class TemplatesTimelineWidgetRenderWithActivitySessionInscriptionTest extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fishing = $this->fixture(Class_Activity::class,
                               ['id' => 3,
                                'libelle' => 'Learn fishing',
@@ -238,6 +222,11 @@ class TemplatesTimelineWidgetRenderWithActivitySessionInscriptionTest extends Te
 
     return [new Intonation_Library_View_Wrapper_ActivitySessionInscription($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Learn fishing'] ];
+  }
 }
 
 
@@ -245,7 +234,7 @@ class TemplatesTimelineWidgetRenderWithActivitySessionInscriptionTest extends Te
 
 class TemplatesTimelineWidgetRenderWithActivitySessionTest extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fishing = $this->fixture(Class_Activity::class,
                               ['id' => 3,
                                'libelle' => 'Learn fishing',
@@ -262,6 +251,11 @@ class TemplatesTimelineWidgetRenderWithActivitySessionTest extends TemplatesTime
 
     return [new Intonation_Library_View_Wrapper_ActivitySession($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Learn fishing'] ];
+  }
 }
 
 
@@ -269,7 +263,7 @@ class TemplatesTimelineWidgetRenderWithActivitySessionTest extends TemplatesTime
 
 class TemplatesTimelineWidgetRenderWithAritcleTest extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Article::class,
                               ['id' => 1,
                                'titre' => 'art',
@@ -278,29 +272,41 @@ class TemplatesTimelineWidgetRenderWithAritcleTest extends TemplatesTimelineWidg
 
     return [new Intonation_Library_View_Wrapper_Article($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['art'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithAuthorTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithAuthorTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_CodifAuteur::class,
                               ['id' => 1,
+                               'libelle' => 'Arthur C. Doyle',
                                'date_creation' => '2021-12-10']);
 
     return [new Intonation_Library_View_Wrapper_Author($fixture)];
   }
-}
 
 
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
+}
 
 
 
-class TemplatesTimelineWidgetRenderWithCardTest extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+class TemplatesTimelineWidgetRenderWithCardTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
+
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Users::class,
                               ['id' => 1,
                                'naissance' => '2021-12-10',
@@ -309,14 +315,20 @@ class TemplatesTimelineWidgetRenderWithCardTest extends TemplatesTimelineWidgetR
 
     return [new Intonation_Library_View_Wrapper_Card($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithDomainTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithDomainTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Catalogue::class,
                               ['id' => 1,
                                'annee_debut' => '2021',
@@ -325,14 +337,20 @@ class TemplatesTimelineWidgetRenderWithDomainTest extends TemplatesTimelineWidge
 
     return [new Intonation_Library_View_Wrapper_Domain($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['lib'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithDriveCheckoutPlanTest extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
+class TemplatesTimelineWidgetRenderWithDriveCheckoutPlanTest
+  extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = new Class_DriveCheckout_Plan([],
                                             $this->fixture(Class_Users::class,
                                                            ['id' => 1,
@@ -346,9 +364,10 @@ class TemplatesTimelineWidgetRenderWithDriveCheckoutPlanTest extends TemplatesTi
 
 
 
-class TemplatesTimelineWidgetRenderWithHoldTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithHoldTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $item = new Class_WebService_SIGB_Exemplaire(1);
     $hold = (new Class_WebService_SIGB_Reservation(1, $item))
       ->setAvailabilityEndDate('2021-12-10');
@@ -361,14 +380,20 @@ class TemplatesTimelineWidgetRenderWithHoldTest extends TemplatesTimelineWidgetR
     $card_operation_decorator = new Class_User_CardsOperationDecorator($hold, $user);
     return [new Intonation_Library_View_Wrapper_Hold($card_operation_decorator, $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Réservé par log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithItemForOsmTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithItemForOsmTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Exemplaire::class,
                               ['id' => 1,
                                'date_nouveaute' => '2021-12-10',
@@ -376,14 +401,20 @@ class TemplatesTimelineWidgetRenderWithItemForOsmTest extends TemplatesTimelineW
                               ]);
     return [new Intonation_Library_View_Wrapper_ItemForOsm($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithItemTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithItemTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Exemplaire::class,
                               ['id' => 1,
                                'date_nouveaute' => '2021-12-10',
@@ -391,14 +422,20 @@ class TemplatesTimelineWidgetRenderWithItemTest extends TemplatesTimelineWidgetR
                               ]);
     return [new Intonation_Library_View_Wrapper_Item($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithLibraryTest extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
+class TemplatesTimelineWidgetRenderWithLibraryTest
+  extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Bib::class,
                               ['id' => 1,
                                'libelle' => 'Valleiry'
@@ -410,9 +447,10 @@ class TemplatesTimelineWidgetRenderWithLibraryTest extends TemplatesTimelineWidg
 
 
 
-class TemplatesTimelineWidgetRenderWithLoanTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithLoanTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $item = (new Class_WebService_SIGB_Exemplaire(1))
       ->setIssueDate('2021-12-10')
       ->setDateRetour('2021-12-10');
@@ -427,14 +465,20 @@ class TemplatesTimelineWidgetRenderWithLoanTest extends TemplatesTimelineWidgetR
     return [new Intonation_Library_View_Wrapper_Loan($card_operation_decorator,
                                                      $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Emprunté par log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithLocationTest extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
+class TemplatesTimelineWidgetRenderWithLocationTest
+  extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Lieu::class,
                               ['id' => 1,
                                'libelle' => 'lib'
@@ -446,9 +490,10 @@ class TemplatesTimelineWidgetRenderWithLocationTest extends TemplatesTimelineWid
 
 
 
-class TemplatesTimelineWidgetRenderWithMenuEntryTest extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
+class TemplatesTimelineWidgetRenderWithMenuEntryTest
+  extends TemplatesTimelineWidgetRenderHelperEmptyTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $profile = Class_Profil::getCurrentProfil();
     (new Class_Profil_Import($profile))->import(realpath(__DIR__) . '/../ProfilImportExport/7.json');
     $profile->save();
@@ -466,24 +511,31 @@ class TemplatesTimelineWidgetRenderWithMenuEntryTest extends TemplatesTimelineWi
 
 
 
-class TemplatesTimelineWidgetRenderWithNewsletterTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithNewsletterTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Newsletter::class,
                               ['id' => 1,
-                               'titre' => 'tit',
+                               'titre' => 'du nouveau',
                                'last_distribution_date' => '2021-12-10',
                                'mail_subject' => 'mai']);
     return [new Intonation_Library_View_Wrapper_Newsletter($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['du nouveau'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithParentCardTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithParentCardTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Users::class,
                               ['id' => 332423,
                                'naissance' => '2021-12-10',
@@ -491,14 +543,20 @@ class TemplatesTimelineWidgetRenderWithParentCardTest extends TemplatesTimelineW
                                'password' => 'pass']);
     return [new Intonation_Library_View_Wrapper_ParentCard($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithPnbHoldTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithPnbHoldTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $hold = $this->fixture(Class_Hold_Pnb::class,
                            ['id' => 145,
                             'user_id' => 90,
@@ -516,14 +574,20 @@ class TemplatesTimelineWidgetRenderWithPnbHoldTest extends TemplatesTimelineWidg
     return [new Intonation_Library_View_Wrapper_PNBHold($card_operation_decorator,
                                                         $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Réservé par log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithPnbLoanTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithPnbLoanTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $loan = $this->fixture(Class_Loan_Pnb::class,
                            ['id' => 3232,
                             'user_id' => 123,
@@ -540,14 +604,20 @@ class TemplatesTimelineWidgetRenderWithPnbLoanTest extends TemplatesTimelineWidg
     return [new Intonation_Library_View_Wrapper_PNBLoan($card_operation_decorator,
                                                         $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Emprunté par log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithProTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithProTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Users::class,
                               ['id' => 332423,
                                'naissance' => '2021',
@@ -555,14 +625,20 @@ class TemplatesTimelineWidgetRenderWithProTest extends TemplatesTimelineWidgetRe
                                'password' => 'pass']);
     return [new Intonation_Library_View_Wrapper_Pro($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRecordInSelectionTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRecordInSelectionTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Notice::class,
                               ['id' => 1,
                                'annee' => '2021',
@@ -572,14 +648,20 @@ class TemplatesTimelineWidgetRenderWithRecordInSelectionTest extends TemplatesTi
 
     return [new Intonation_Library_View_Wrapper_RecordInSelection($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Thérapie de groupe'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRecordTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRecordTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Notice::class,
                               ['id' => 1,
                                'annee' => '2021',
@@ -588,14 +670,20 @@ class TemplatesTimelineWidgetRenderWithRecordTest extends TemplatesTimelineWidge
                                'resume' => 'Une bonne BD de Manu']);
     return [new Intonation_Library_View_Wrapper_Record($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Thérapie de groupe'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRecordToRateTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRecordToRateTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Notice::class,
                               ['id' => 1,
                                'annee' => '2021',
@@ -604,14 +692,20 @@ class TemplatesTimelineWidgetRenderWithRecordToRateTest extends TemplatesTimelin
                                'resume' => 'Une bonne BD de Manu']);
     return [new Intonation_Library_View_Wrapper_RecordToRate($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Thérapie de groupe'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRecordToSelectTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRecordToSelectTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Notice::class,
                               ['id' => 1,
                                'annee' => '2021',
@@ -621,14 +715,20 @@ class TemplatesTimelineWidgetRenderWithRecordToSelectTest extends TemplatesTimel
 
     return [new Intonation_Library_View_Wrapper_RecordToSelect($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Thérapie de groupe'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRendezVousTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRendezVousTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $agenda = $this->fixture(Class_UserGroup::class,
                              ['id' => 43,
                               'model_class'=> 'Class_RendezVous',
@@ -644,29 +744,48 @@ class TemplatesTimelineWidgetRenderWithRendezVousTest extends TemplatesTimelineW
 
     return [new Intonation_Library_View_Wrapper_RendezVous($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['MonSuperAgenda le ven. …'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithReviewInRecordTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithReviewInRecordTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
+
+  protected function _getElements() : array {
+    $fixture = $this
+      ->fixture(Class_AvisNotice::class,
+                ['id' => 332423,
+                 'date_avis' => '2021-12-10',
+                 'entete' => 'ent',
+                 'user' => $this->fixture(Class_Users::class,
+                                          ['id' => 10,
+                                           'login' => 'reviewer',
+                                           'password' => 'pass'])]);
 
-  protected function _getElements() {
-    $fixture = $this->fixture(Class_AvisNotice::class,
-                              ['id' => 332423,
-                               'date_avis' => '2021-12-10',
-                               'entete' => 'ent']);
     return [new Intonation_Library_View_Wrapper_ReviewInRecord($fixture,
                                                                $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    // ouch
+    return [ ['Par reviewerle 10 …'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithReviewTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithReviewTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_AvisNotice::class,
                               ['id' => 332423,
                                'date_avis' => '2021-12-10',
@@ -674,14 +793,20 @@ class TemplatesTimelineWidgetRenderWithReviewTest extends TemplatesTimelineWidge
     return [new Intonation_Library_View_Wrapper_Review($fixture,
                                                        $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithReviewsByRecordTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithReviewsByRecordTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $review = $this->fixture(Class_AvisNotice::class,
                              ['id' => 332423,
                               'date_avis' => '2021-12-10',
@@ -697,6 +822,11 @@ class TemplatesTimelineWidgetRenderWithReviewsByRecordTest extends TemplatesTime
 
     return [new Intonation_Library_View_Wrapper_ReviewsByRecord($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
@@ -704,15 +834,19 @@ class TemplatesTimelineWidgetRenderWithReviewsByRecordTest extends TemplatesTime
 
 require_once 'tests/fixtures/LemondeRss.php';
 
-class TemplatesTimelineWidgetRenderWithRssItemTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRssItemTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
+
+  protected string $_year = '2011';
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     Class_WebService_Abstract::setHttpClient($this
                                              ->mock()
                                              ->whenCalled('open_url')
                                              ->with('https://rss.lemonde.fr/c/205/f/3050/index.rss')
                                              ->answers(RssFixtures::lemondeRSS())
                                              ->beStrict());
+
     $rss = $this->fixture(Class_Rss::class,
                           ['id' => 1,
                            'titre' => 'Flux RSS lemonde',
@@ -727,18 +861,18 @@ class TemplatesTimelineWidgetRenderWithRssItemTest extends TemplatesTimelineWidg
   }
 
 
-  /** @test */
-  public function yearShouldBe2021() {
-    $this->assertContains('[{"start_date":{"year":"2011', $this->_html);
+  public function getExpectedTitles() : array {
+    return [ ['Hirsch a "six …'] ];
   }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithRssTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithRssTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $rss = $this->fixture(Class_Rss::class,
                           ['id' => 1,
                            'titre' => 'Flux RSS lemonde',
@@ -749,56 +883,80 @@ class TemplatesTimelineWidgetRenderWithRssTest extends TemplatesTimelineWidgetRe
 
     return [new Intonation_Library_View_Wrapper_Rss($rss)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['Flux RSS lemonde'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithSearchHistoryTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithSearchHistoryTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_User_BookmarkedSearch::class,
                               ['id' => '231',
                                'creation_date' => '2021-12-10']);
 
     return [new Intonation_Library_View_Wrapper_SearchHistory($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithSearchTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithSearchTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_User_BookmarkedSearch::class,
                               ['id' => '231',
                                'creation_date' => '2021-12-10']);
 
     return [new Intonation_Library_View_Wrapper_Search($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithSelectionTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithSelectionTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_PanierNotice::class,
                               ['id' => '231'])
                     ->setDateMaj('2021-12-10');
 
     return [new Intonation_Library_View_Wrapper_Selection($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithSuggestionTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithSuggestionTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $suggesion = $this->fixture(Class_SuggestionAchat::class,
                                 ['id' => 9087,
                                  'titre' => 'tit',
@@ -816,14 +974,20 @@ class TemplatesTimelineWidgetRenderWithSuggestionTest extends TemplatesTimelineW
     return [new Intonation_Library_View_Wrapper_Suggestion($card_operation_decorator,
                                                            $this->_view)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['tit suggéré par …'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithUserTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithUserTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $fixture = $this->fixture(Class_Users::class,
                               ['id' => 332423,
                                'naissance' => '2021',
@@ -831,14 +995,20 @@ class TemplatesTimelineWidgetRenderWithUserTest extends TemplatesTimelineWidgetR
                                'password' => 'pass']);
     return [new Intonation_Library_View_Wrapper_User($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['log'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithWebsiteTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithWebsiteTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $website = $this->fixture(Class_Sitotheque::class,
                               ['id' => 332423,
                                'titre' => 'tit',
@@ -851,14 +1021,20 @@ class TemplatesTimelineWidgetRenderWithWebsiteTest extends TemplatesTimelineWidg
 
     return [new Intonation_Library_View_Wrapper_Website($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ ['tit'] ];
+  }
 }
 
 
 
 
-class TemplatesTimelineWidgetRenderWithWorkTest extends TemplatesTimelineWidgetRenderHelperTestCase {
+class TemplatesTimelineWidgetRenderWithWorkTest
+  extends TemplatesTimelineWidgetRenderHelperTestCase {
 
-  protected function _getElements() {
+  protected function _getElements() : array {
     $record = $this->fixture(Class_Notice::class,
                              ['id' => 8789,
                               'annee' => '2021',
@@ -867,4 +1043,9 @@ class TemplatesTimelineWidgetRenderWithWorkTest extends TemplatesTimelineWidgetR
     $fixture = new Class_Notice_Work($record, '');
     return [new Intonation_Library_View_Wrapper_Work($fixture)];
   }
+
+
+  public function getExpectedTitles() : array {
+    return [ [''] ];
+  }
 }
diff --git a/tests/scenarios/bookmarks/SearchTest.php b/tests/scenarios/bookmarks/SearchTest.php
index 8f77227b78ef0c6671c7d6f922b02eb1b08537df..f401f0e179a2a6adc8262414d34364adbb691ab1 100644
--- a/tests/scenarios/bookmarks/SearchTest.php
+++ b/tests/scenarios/bookmarks/SearchTest.php
@@ -21,7 +21,6 @@
 
 
 class Bookmarks_SearchLinkTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -30,7 +29,7 @@ class Bookmarks_SearchLinkTest extends AbstractControllerTestCase {
                    ['id' => 'ENABLE_BOOKMARKABLE_SEARCHES',
                     'valeur' => 1]);
 
-    $this->dispatch('/recherche/pomme', true);
+    $this->dispatch('/recherche/pomme');
   }
 
 
@@ -43,12 +42,10 @@ class Bookmarks_SearchLinkTest extends AbstractControllerTestCase {
 
 
 
-abstract class Bookmarks_SearchWithSessionAbstract extends Admin_AbstractControllerTestCase {
-
-  protected
-    $_storm_default_to_volatile = true,
-    $_user;
+abstract class Bookmarks_SearchWithSessionAbstract
+  extends Admin_AbstractControllerTestCase {
 
+  protected $_user;
 
   public function setUp() {
     parent::setUp();
@@ -71,7 +68,10 @@ abstract class Bookmarks_SearchWithSessionAbstract extends Admin_AbstractControl
 
 
 
-class Bookmarks_SearchAbonneBookmarkSearchDispatchTest extends Bookmarks_SearchWithSessionAbstract {
+
+class Bookmarks_SearchAbonneBookmarkSearchDispatchTest
+  extends Bookmarks_SearchWithSessionAbstract {
+
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('ENABLE_BOOKMARKABLE_SEARCHES_NOTIFY', 1);
@@ -81,7 +81,7 @@ class Bookmarks_SearchAbonneBookmarkSearchDispatchTest extends Bookmarks_SearchW
                     'criterias' => '',
                     'creation_date' => '2018-01-17 15:05:57']);
 
-    $this->dispatch('/bookmarked-searches/add', true);
+    $this->dispatch('/bookmarked-searches/add');
   }
 
 
@@ -99,7 +99,10 @@ class Bookmarks_SearchAbonneBookmarkSearchDispatchTest extends Bookmarks_SearchW
 
 
 
-class Bookmarks_SearchAbonneBookmarkSearchPostTest extends Bookmarks_SearchWithSessionAbstract {
+
+class Bookmarks_SearchAbonneBookmarkSearchPostTest
+  extends Bookmarks_SearchWithSessionAbstract {
+
   public function setUp() {
     parent::setUp();
     Class_User_BookmarkedSearch::setTimeSource(new TimeSourceForTest('2018-01-17 01:01:01'));
@@ -148,14 +151,11 @@ class Bookmarks_SearchAbonneBookmarkSearchPostTest extends Bookmarks_SearchWithS
 
 
 class Bookmarks_SearchAbonneNotLoggedTest  extends AbstractControllerTestCase {
-  protected
-    $_storm_default_to_volatile = true;
-
 
   public function setUp() {
     parent::setUp();
     ZendAfi_Auth::getInstance()->clearIdentity();
-    $this->dispatch('/bookmarked-searches/add', true);
+    $this->dispatch('/bookmarked-searches/add');
   }
 
 
@@ -167,9 +167,8 @@ class Bookmarks_SearchAbonneNotLoggedTest  extends AbstractControllerTestCase {
 
 
 
-class Bookmarks_SearchAbonneFicheTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
 
+class Bookmarks_SearchAbonneFicheTest extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -177,7 +176,7 @@ class Bookmarks_SearchAbonneFicheTest extends Bookmarks_SearchWithSessionAbstrac
                    ['id' => 'ENABLE_BOOKMARKABLE_SEARCHES',
                     'valeur' => 1]);
 
-    $this->dispatch('/abonne/fiche', true);
+    $this->dispatch('/abonne/fiche');
   }
 
 
@@ -190,8 +189,8 @@ class Bookmarks_SearchAbonneFicheTest extends Bookmarks_SearchWithSessionAbstrac
 
 
 
-class Bookmarks_SearchAbonneSettingsTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
+class Bookmarks_SearchAbonneSettingsTest
+  extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -222,7 +221,7 @@ class Bookmarks_SearchAbonneSettingsTest extends Bookmarks_SearchWithSessionAbst
                     'criterias' => '',
                     'creation_date' => '2018-01-22 15:05:57']);
 
-    $this->dispatch('/abonne/settings', true);
+    $this->dispatch('/abonne/settings');
   }
 
 
@@ -271,8 +270,8 @@ class Bookmarks_SearchAbonneSettingsTest extends Bookmarks_SearchWithSessionAbst
 
 
 
-class Bookmarks_SearchDeleteBookmarkedSearchTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
+class Bookmarks_SearchDeleteBookmarkedSearchTest
+  extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -287,7 +286,7 @@ class Bookmarks_SearchDeleteBookmarkedSearchTest extends Bookmarks_SearchWithSes
                     'criterias' => '',
                     'creation_date' => '2018-01-17 15:05:57']);
 
-    $this->dispatch('/bookmarked-searches/delete/id/5', true);
+    $this->dispatch('/bookmarked-searches/delete/id/5');
   }
 
 
@@ -317,8 +316,9 @@ class Bookmarks_SearchDeleteBookmarkedSearchTest extends Bookmarks_SearchWithSes
 
 
 
-class Bookmarks_SearchNotifyBookmarkedSearchTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
+
+class Bookmarks_SearchNotifyBookmarkedSearchTest
+  extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -330,7 +330,7 @@ class Bookmarks_SearchNotifyBookmarkedSearchTest extends Bookmarks_SearchWithSes
                     'criterias' => '',
                     'creation_date' => '2018-01-17 15:05:57']);
 
-    $this->dispatch('/bookmarked-searches/notify/id/5', true);
+    $this->dispatch('/bookmarked-searches/notify/id/5');
   }
 
 
@@ -342,8 +342,9 @@ class Bookmarks_SearchNotifyBookmarkedSearchTest extends Bookmarks_SearchWithSes
 
 
 
-class Bookmarks_SearchUnnotifyBookmarkedSearchTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
+
+class Bookmarks_SearchUnnotifyBookmarkedSearchTest
+  extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -356,7 +357,7 @@ class Bookmarks_SearchUnnotifyBookmarkedSearchTest extends Bookmarks_SearchWithS
                     'criterias' => '',
                     'creation_date' => '2018-01-17 15:05:57']);
 
-    $this->dispatch('/bookmarked-searches/unnotify/id/5', true);
+    $this->dispatch('/bookmarked-searches/unnotify/id/5');
   }
 
 
@@ -369,8 +370,8 @@ class Bookmarks_SearchUnnotifyBookmarkedSearchTest extends Bookmarks_SearchWithS
 
 
 
-class Bookmarks_SearchAuthorizedActionTest extends Bookmarks_SearchWithSessionAbstract {
-  protected $_storm_default_to_volatile = true;
+class Bookmarks_SearchAuthorizedActionTest
+  extends Bookmarks_SearchWithSessionAbstract {
 
   public function setUp() {
     parent::setUp();
@@ -391,32 +392,32 @@ class Bookmarks_SearchAuthorizedActionTest extends Bookmarks_SearchWithSessionAb
 
   /** @test */
   public function dispatchEditActionShouldRedirectToReferer() {
-      $this->dispatch('/opac/bookmarked-searches/edit/id/5', true);
-      $this->assertRedirectTo('/');
+    $this->dispatch('/opac/bookmarked-searches/edit/id/5');
+    $this->assertRedirectTo('/');
   }
 
 
   /** @test */
   public function dispatchIndexActionShouldRedirectToReferer() {
-      $this->dispatch('/opac/bookmarked-searches/index', true);
-      $this->assertRedirectTo('/');
+    $this->dispatch('/opac/bookmarked-searches/index');
+    $this->assertRedirectTo('/');
   }
 
 
   /** @test */
   public function dispatchDeleteActionShouldRedirectToReferer() {
-      $this->dispatch('/opac/bookmarked-searches/delete/id/5', true);
-      $this->assertRedirectTo('/');
-      $this->assertNotNull(Class_User_BookmarkedSearch::find(5));
-      $this->assertFlashMessengerContentContains('Vous n\'avez pas la permission');
+    $this->dispatch('/opac/bookmarked-searches/delete/id/5');
+    $this->assertRedirectTo('/');
+    $this->assertNotNull(Class_User_BookmarkedSearch::find(5));
+    $this->assertFlashMessengerContentContains('Vous n\'avez pas la permission');
   }
 }
 
 
 
+
 class Bookmarks_SearchDependentsDeleteTest
   extends ModelTestCase {
-  protected $_storm_default_to_volatile = true;
 
   /** @test */
   public function deletingUserShouldDeleteItsSearches() {
@@ -491,23 +492,22 @@ class Bookmarks_SearchCosmogrammePhaseTest
                       'titre_principal' => 'Testing ' . $index]);
 
     $result = array_map(function($record)
-                        {
-                          return [$record->getId(), ''];
-                        },
+    {
+      return [$record->getId(), ''];
+    },
                         Class_Notice::findAll());
 
     Zend_Registry::set('sql',
                        $this->mock()
                        ->whenCalled('fetchAll')
-                       ->with("select id_notice, facettes from notices Where (MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(HARRY HARRYS ARI) +(POTTER POTTERS POT)' IN BOOLEAN MODE)) and type=1 order by MATCH(titres, auteurs) AGAINST('\\\"HARRY POTTER\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"HARRY POTTER\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('HARRY POTTER') desc, MATCH(auteurs) AGAINST('HARRY POTTER') desc, date_creation desc", true, false)
+                       ->with("select id_notice, facettes from notices Where (MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(HARRY HARRYS ARI) +(POTTER POTTERS POT)' IN BOOLEAN MODE)) and type=1 order by MATCH(titres, auteurs) AGAINST('\"HARRY POTTER\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"HARRY POTTER\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('HARRY POTTER') desc, MATCH(auteurs) AGAINST('HARRY POTTER') desc, date_creation desc", true, false)
                        ->answers($result)
                        ->beStrict());
 
-    $this
-      ->fixture('Class_Profil',
-                ['id' => 12,
-                 'mail_site' => 'admin@bokeh-portal.fr'])
-      ->beCurrentProfil();
+    $this->fixture(Class_Profil::class,
+                   ['id' => 12])
+         ->beCurrentProfil()
+         ->setMailSite('admin@bokeh-portal.fr');
   }
 
 
@@ -661,23 +661,22 @@ class Bookmarks_SearchMailWithArticlePhaseTest
                     'titre_principal' => 'Droit devant']);
 
     $result = array_map(function($record)
-                        {
-                          return [$record->getId(), ''];
-                        },
+    {
+      return [$record->getId(), ''];
+    },
                         Class_Notice::findAll());
 
     Zend_Registry::set('sql',
                        $this->mock()
                        ->whenCalled('fetchAll')
-                       ->with("select id_notice, facettes from notices Where (MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(HARRY HARRYS ARI) +(POTTER POTTERS POT)' IN BOOLEAN MODE)) and type=1 order by MATCH(titres, auteurs) AGAINST('\\\"HARRY POTTER\\\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\\\"HARRY POTTER\\\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('HARRY POTTER') desc, MATCH(auteurs) AGAINST('HARRY POTTER') desc, date_creation desc", true, false)
+                       ->with("select id_notice, facettes from notices Where (MATCH(titres, auteurs, editeur, collection, matieres, dewey, other_terms) AGAINST('+(HARRY HARRYS ARI) +(POTTER POTTERS POT)' IN BOOLEAN MODE)) and type=1 order by MATCH(titres, auteurs) AGAINST('\"HARRY POTTER\"' IN BOOLEAN MODE) desc, MATCH(editeur, collection, matieres, dewey, other_terms) AGAINST('\"HARRY POTTER\"' IN BOOLEAN MODE) desc, MATCH(auteurs) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('P_HARRY P_POTTER') desc, MATCH(titres) AGAINST('HARRY POTTER') desc, MATCH(auteurs) AGAINST('HARRY POTTER') desc, date_creation desc", true, false)
                        ->answers($result)
                        ->beStrict());
 
-    $this
-      ->fixture('Class_Profil',
-                ['id' => 12,
-                 'mail_site' => 'admin@bokeh-portal.fr'])
-      ->beCurrentProfil();
+    $this->fixture(Class_Profil::class,
+                   ['id' => 12])
+         ->beCurrentProfil()
+         ->setMailSite('admin@bokeh-portal.fr');
   }
 
 
@@ -762,11 +761,10 @@ class Bookmarks_SearchMailWithArticlePhaseTest
 
 
 class Bookmarks_SearchDiffNotLoggedTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
-    $this->dispatch('/recherche/simple/bookmarked_search/8/bookmarked_version/2018-02-07_105048', true);
+    $this->dispatch('/recherche/simple/bookmarked_search/8/bookmarked_version/2018-02-07_105048');
   }
 
 
@@ -786,7 +784,6 @@ class Bookmarks_SearchDiffNotLoggedTest extends AbstractControllerTestCase {
 
 
 class Bookmarks_SearchDiffLoggedTest extends AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
 
   public function setUp() {
     parent::setUp();
@@ -830,7 +827,7 @@ class Bookmarks_SearchDiffLoggedTest extends AbstractControllerTestCase {
       ->atPut(8, '2018-02-06_111507', [''])
       ->atPut(8, '2018-02-07_105048', ['DROITDEVANT--ODAEIICHIRO-15-GLENAT-2013-1']);
 
-    $this->dispatch('/recherche/simple/expressionRecherche/Harry+Potter/bookmarked_search/8/bookmarked_version/2018-02-07_105048', true);
+    $this->dispatch('/recherche/simple/expressionRecherche/Harry+Potter/bookmarked_search/8/bookmarked_version/2018-02-07_105048');
   }