diff --git a/VERSIONS_WIP/74223 b/VERSIONS_WIP/74223
new file mode 100644
index 0000000000000000000000000000000000000000..00823464b87d5d02639c4870ad47eb6c5a7bb96c
--- /dev/null
+++ b/VERSIONS_WIP/74223
@@ -0,0 +1,2 @@
+ - ticket #74223 : Suggestions d'achat : activer la variable "SEARCH RECORD BEFORE SUGGEST" permet à l'utilisateur de vérifier si la suggestion existe déjà dans le catalogue.
+ 
\ No newline at end of file
diff --git a/application/modules/opac/controllers/AbonneController.php b/application/modules/opac/controllers/AbonneController.php
index 84ab2a7747c88d3c23718d77fb6396bb575e2a57..2a97af38aa6b713915c7ee8f76b9f280c0517160 100644
--- a/application/modules/opac/controllers/AbonneController.php
+++ b/application/modules/opac/controllers/AbonneController.php
@@ -941,6 +941,7 @@ class AbonneController extends ZendAfi_Controller_Action {
       $this->_forward('suggestion-achat-inactive');
       return;
     }
+
     if (Class_SuggestionAchat::find($this->_getParam('id'))) {
       $this->_forward('suggestion-achat-ok');
       return;
@@ -949,31 +950,66 @@ class AbonneController extends ZendAfi_Controller_Action {
     $form = ZendAfi_Form_SuggestionAchat::forUser($this->_user);
     $form->setAction($this->view->url());
 
-    if ($this->_request->isPost()) {
-      $post = $this->_request->getPost();
-      unset($post['submit']);
+    $this->view->form = $form;
+    $this->view->records = [];
+    $this->view->preferences = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('abonne', 'suggestion-achat-add');
 
-      $suggestion = $form->newBuySuggest($post);
+    if (!$this->_request->isPost())
+      return;
 
-      if ($form->isValid($suggestion)) {
+    $post = $this->_request->getPost();
+    unset($post['submit']);
 
-        // $suggestion->save(); always return true without considering webservice answers. UX choice ?
-        $suggestion->save();
+    $suggestion = $form->newBuySuggest($post);
 
-        try {
-          $suggestion->sendMail('noreply@'.$this->_request->getHttpHost());
-        } catch (Zend_Mail_Exception $e) {
-          $this->_helper->notify($this->_('Aucun courriel envoyé, erreur: %s',
-                                          $this->_($e->getMessage())));
-        }
+    if (!$form->isValid($suggestion))
+      return;
 
-        $this->_helper->notify($this->_('Suggestion d\'achat enregistrée'));
-        return $this->_redirect(Class_Url::absolute($this->view->url(['action' => 'suggestion-achat'])));
-      }
+    if (!$this->_getConfirmation($suggestion))
+      return;
+
+    // $suggestion->save(); always return true without considering webservice answers. UX choice ?
+    $suggestion->save();
+
+    try {
+      $suggestion->sendMail('noreply@'.$this->_request->getHttpHost());
+    } catch (Zend_Mail_Exception $e) {
+      $this->_helper->notify($this->_('Aucun courriel envoyé, erreur: %s',
+                                      $this->_($e->getMessage())));
     }
 
-    $this->view->form = $form;
-    $this->view->preferences = Class_Profil::getCurrentProfil()->getCfgModulesPreferences('abonne', 'suggestion-achat-add');
+    $this->_helper->notify($this->_('Suggestion d\'achat enregistrée'));
+    return $this->_redirect(Class_Url::absolute($this->view->url(['action' => 'suggestion-achat'])));
+  }
+
+
+  protected function _getConfirmation($suggestion) {
+    if (!Class_AdminVar::isSearchRecordBeforeSuggestEnabled())
+      return true;
+
+    if ($this->_getParam('validate_suggestion', null))
+      return true;
+
+    $params = array_filter([$suggestion->getTitre(),
+                            $suggestion->getAuteur()]);
+
+    if (!$params = array_filter($params))
+      return false;
+
+    $criteria = (new Class_CriteresRecherche())
+      ->setParams(['page' => 1,
+                   'tri' => Class_CriteresRecherche::SORT_TITLE,
+                   'expressionRecherche' => implode(' ', $params),
+                   'type_doc' => $this->_getPost('DocType')]);
+
+    $criteria->setDefaultPageSize(30);
+
+    $search_result = Class_MoteurRecherche::getInstance()->lancerRecherche($criteria);
+
+    if ($this->view->records = $search_result->fetchRecords())
+      return false;
+
+    return true;
   }
 
 
diff --git a/application/modules/opac/views/scripts/abonne/suggestion-achat-add.phtml b/application/modules/opac/views/scripts/abonne/suggestion-achat-add.phtml
index a65557a761fd611b99d25f9bb9499b55048f5f09..c0c5de917655be0f748873609f5308904cca1bf3 100644
--- a/application/modules/opac/views/scripts/abonne/suggestion-achat-add.phtml
+++ b/application/modules/opac/views/scripts/abonne/suggestion-achat-add.phtml
@@ -1,9 +1,38 @@
 <?php
 $this->openBoite($this->_('Suggérer un achat'));
+
+$send_form_button = '';
+
+if ($this->records) {
+  echo $this->tag('p', $this->_('Les documents suivants sont dans le catalogue.'));
+  echo $this->tag('p', $this->_('Votre suggestion en fait-elle partie ?'));
+
+  echo $this->button(new Class_Entity(['Text' => $this->_('Oui'),
+                                       'Url' => $this->url(['action' => 'suggestion-achat']),
+                                       'Attribs' => ['title' => $this->_('Annuler et revenir à la liste des suggestions.')]]));
+  $send_form_button = new Class_Entity(['Text' => $this->_('Non'),
+                                        'Attribs' => ['title' => $this->_('Envoyer la suggestion'),
+                                                     'onclick' => "var form = $('#suggestion'); form.attr('action', form.attr('action') + '?validate_suggestion=1'); $('#submit').click();"]]);
+
+  echo $this->button($send_form_button);
+
+  $send_form_button->setText($this->_('Envoyer'));
+
+  echo $this->ListeNotices_Mur($this->records);
+  $submit = $this->form->getElement('submit');
+  $submit
+    ->setLabel($this->_('Relancer la recherche'))
+    ->setAttribs(['title' => $this->_('Relance la recherche ou envoie la suggestion en cas de recherche infructueuse')]);
+}
+
 if (trim($this->preferences['help-text']))
   echo $this->tag('div',
                   $this->preferences['help-text'],
                   ['class' => 'help-text']);
 echo $this->renderForm($this->form);
+
+if ($send_form_button)
+  echo $this->button($send_form_button);
+
 $this->closeBoite();
 ?>
diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php
index c0df9a4a0de3678a190109849403cf2e0c1903ff..cbefe1ba8fb8a0a9ddbcf8f2e2805acb6665df72 100644
--- a/library/Class/AdminVar.php
+++ b/library/Class/AdminVar.php
@@ -232,6 +232,8 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
             'ENABLE_BOOKMARKABLE_SEARCHES_NOTIFY' => Class_AdminVar_Meta::newOnOff($this->_('Les utilisateurs peuvent recevoir les nouveautés de leurs recherches favorites par email'), ['value' => 0]),
             Class_AdminVar_UserDoubleDetectOn::KEY => Class_AdminVar_Meta::newMultiInput($this->_('Champs servant à la détection des doublons. Champs possibles : %s', (new Class_AdminVar_UserDoubleDetectOn)->knownAsList()),
                                                                                          ['validate' => 'ZendAfi_Validate_UserDoubleDetectOn']),
+
+            'SEARCH_RECORD_BEFORE_SUGGEST' => Class_AdminVar_Meta::newOnOff($this->_('Permet à l\'utilisateur de vérifier si la suggestion existe déjà dans le catalogue.'))
     ];
   }
 
@@ -1009,6 +1011,11 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
   }
 
 
+  public function isSearchRecordBeforeSuggestEnabled() {
+    return Class_AdminVar::isModuleEnabled('SEARCH_RECORD_BEFORE_SUGGEST');
+  }
+
+
   public function shouldKeepLastSigbRecord() {
     return Class_AdminVar::isModuleEnabled('KEEP_LAST_SIGB_RECORD');
   }
diff --git a/library/Class/MoteurRecherche/Result.php b/library/Class/MoteurRecherche/Result.php
index 1cc375f560e06a74430290c800a8182bbbd0069a..f267eb610e7752f1af13b10f1889e4fb8b41b094 100644
--- a/library/Class/MoteurRecherche/Result.php
+++ b/library/Class/MoteurRecherche/Result.php
@@ -35,7 +35,7 @@ class Class_MoteurRecherche_Result {
     $_facets,
     $_criteres_recherche,
     $_duration,
-    $_settings,
+    $_settings = [],
     $_facet_provider,
     $_facet_metadata = [],
     $_terms;
diff --git a/library/Class/SuggestionAchat.php b/library/Class/SuggestionAchat.php
index 620d358d73d8cd22a1ef7e079ab77903a9e2b5b8..266f3fd63cff2d558077111db910dceac6991795 100644
--- a/library/Class/SuggestionAchat.php
+++ b/library/Class/SuggestionAchat.php
@@ -31,6 +31,7 @@ class Class_SuggestionAchat extends Storm_Model_Abstract {
   protected $_default_attribute_values = ['date_creation' => '',
                                           'titre' => '',
                                           'auteur' => '',
+                                          'isbn' => '',
                                           'bib_id' => '',
                                           'commentaire' => '',
                                           'description_url' => ''];
diff --git a/library/Class/WebService/SIGB/Nanook/BuySuggestForm.php b/library/Class/WebService/SIGB/Nanook/BuySuggestForm.php
index d8f5427e83ea728c91fa0e2e7285244b07035427..b053bc092ba16efa7d64c48fa57589c13b4d8d77 100644
--- a/library/Class/WebService/SIGB/Nanook/BuySuggestForm.php
+++ b/library/Class/WebService/SIGB/Nanook/BuySuggestForm.php
@@ -36,33 +36,45 @@ class Class_WebService_SIGB_Nanook_BuySuggestForm extends ZendAfi_Form_Suggestio
 
     $this
 
-      ->addElement('text', 'Title', ['label' => $this->_('Titre').' *',
-                                     'placeholder' => $this->_('ex: Harry Potter à l\'école des sorciers'),
-                                     'size' => 80,
-                                     'required' => true,
-                                     'allowEmpty' => false])
-
-      ->addElement('text', 'Author', ['label' => $this->_('Auteur').' *',
-                                      'placeholder' => 'ex: Joanne Kathleen Rowling',
-                                      'size' => 80,
-                                      'required' => true,
-                                      'allowEmpty' => false])
-
-      ->addElement('text', 'Isbn', ['label' => $this->_('Code-barres / ISBN'),
-                                    'placeholder' => 'ex: 2-07-054127-4',
-                                    'size' => 17])
-
-      ->addElement('url', 'Url', ['label' => $this->_('URL'),
-                                  'placeholder' => 'http://www...',
-                                  'size'  => 80])
-
-      ->addElement('textarea', 'Comment', ['label' => '',
-                                           'cols' => 70,
-                                           'rows' => 10])
-
-      ->addElement('text', 'Library', ['label' => $this->_('Site'),
-                                    'value' => Class_Users::getIdentity()->getLibelleBib(),
-                                    'disabled' => true])
+      ->addElement('text',
+                   'Title',
+                   ['label' => $this->_('Titre').' *',
+                    'placeholder' => $this->_('ex: Harry Potter à l\'école des sorciers'),
+                    'size' => 80,
+                    'required' => true,
+                    'allowEmpty' => false])
+
+      ->addElement('text',
+                   'Author',
+                   ['label' => $this->_('Auteur').' *',
+                    'placeholder' => 'ex: Joanne Kathleen Rowling',
+                    'size' => 80,
+                    'required' => true,
+                    'allowEmpty' => false])
+
+      ->addElement('text',
+                   'Isbn',
+                   ['label' => $this->_('Code-barres / ISBN'),
+                    'placeholder' => 'ex: 2-07-054127-4',
+                    'size' => 17])
+
+      ->addElement('url',
+                   'Url',
+                   ['label' => $this->_('URL'),
+                    'placeholder' => 'http://www...',
+                    'size'  => 80])
+
+      ->addElement('textarea',
+                   'Comment',
+                   ['label' => $this->_('Commentaire'),
+                    'cols' => 70,
+                    'rows' => 10])
+
+      ->addElement('text',
+                   'Library',
+                   ['label' => $this->_('Site'),
+                    'value' => Class_Users::getIdentity()->getLibelleBib(),
+                    'disabled' => true])
 
       ->addElement('select', 'DocType', ['label' => $this->_('Type de document').' *',
                                          'multioptions' => $sorted_type_docs,
diff --git a/library/Class/WebService/SIGB/Suggestion.php b/library/Class/WebService/SIGB/Suggestion.php
index 7233eef5377e80481f55b2a42eda1195617b8ee6..7326f85bbe6573ea96d4bb5d0130657401b34b64 100644
--- a/library/Class/WebService/SIGB/Suggestion.php
+++ b/library/Class/WebService/SIGB/Suggestion.php
@@ -74,4 +74,14 @@ class Class_WebService_SIGB_Suggestion extends Class_Entity {
 
     return $this;
   }
+
+
+  public function getTitre() {
+    return $this->getTitle();
+  }
+
+
+  public function getAuteur() {
+    return $this->getAuthor();
+  }
 }
\ No newline at end of file
diff --git a/library/ZendAfi/Form/SuggestionAchat.php b/library/ZendAfi/Form/SuggestionAchat.php
index 84f25e293e923fee9aab029626f053af11639310..d7ec5dde9844e8d5cb7bf561a3f4f88e41366fd1 100644
--- a/library/ZendAfi/Form/SuggestionAchat.php
+++ b/library/ZendAfi/Form/SuggestionAchat.php
@@ -22,10 +22,13 @@
 class ZendAfi_Form_SuggestionAchat extends ZendAfi_Form_SuggestionAchat_Abstract {
   public function init() {
     parent::init();
+
     $this
-      ->addElement('text', 'titre', ['label' => $this->_('Titre').' *',
-                                     'placeholder' => $this->_('ex: Harry Potter à l\'école des sorciers'),
-                                     'size' => 80])
+      ->addElement('text',
+                   'titre',
+                   ['label' => $this->_('Titre').' *',
+                    'placeholder' => $this->_('ex: Harry Potter à l\'école des sorciers'),
+                    'size' => 80])
 
       ->addElement('text', 'auteur', ['label' => $this->_('Auteur'),
                                       'placeholder' => 'ex: Joanne Kathleen Rowling',
@@ -35,30 +38,43 @@ class ZendAfi_Form_SuggestionAchat extends ZendAfi_Form_SuggestionAchat_Abstract
                                     'placeholder' => 'ex: 2-07-054127-4',
                                     'size' => 17])
 
-      ->addElement('select', 'type_doc_id', ['label' => $this->_('Type de document').' *',
-                                             'multioptions' => Class_TypeDoc::getUserFriendlyTypeDocs()])
-      ->addElement('url', 'description_url', ['label' => $this->_('Lien internet vers une description'),
-                                              'placeholder' => 'ex: http://fr.wikipedia.org/wiki/Harry_Potter_à_l\'école_des_sorciers',
-                                              'size' => 80]);
-    $common_fields = ['titre', 'auteur', 'type_doc_id',
-                      'description_url', 'isbn', 'bib_id'];
+      ->addElement('select',
+                   'type_doc_id',
+                   ['label' => $this->_('Type de document').' *',
+                    'multioptions' => Class_TypeDoc::getUserFriendlyTypeDocs()])
+
+      ->addElement('url',
+                   'description_url',
+                   ['label' => $this->_('Lien internet vers une description'),
+                    'placeholder' => 'ex: http://fr.wikipedia.org/wiki/Harry_Potter_à_l\'école_des_sorciers',
+                    'size' => 80]);
+
+    $common_fields = ['titre',
+                      'auteur',
+                      'type_doc_id',
+                      'description_url',
+                      'isbn',
+                      'bib_id'];
 
     if ($this->addBibSelector())
       $common_fields[] = 'bib_id';
 
-    $this->addElement('textarea', 'commentaire', ['label' => '',
-                                                  'cols' => 70,
-                                                  'rows' => 10])
+    $this
+      ->addElement('textarea',
+                   'commentaire',
+                   ['label' => $this->_('Commentaire'),
+                    'cols' => 70,
+                    'rows' => 10])
 
-         ->addDisplayGroup($common_fields,
-                           'suggestion',
-                           ['legend' => $this->_('Informations sur le document')])
+      ->addDisplayGroup($common_fields,
+                        'suggestion',
+                        ['legend' => $this->_('Informations sur le document')])
 
-         ->addDisplayGroup(['commentaire'],
-                           'commentaires',
-                           ['legend' => $this->_('Pourquoi suggérez-vous ce document ?') . ' *'])
+      ->addDisplayGroup(['commentaire'],
+                        'commentaires',
+                        ['legend' => $this->_('Pourquoi suggérez-vous ce document ?') . ' *'])
 
-         ->addElement('submit', 'submit', ['label' => $this->_('Envoyer')]);
+      ->addElement('submit', 'submit', ['label' => $this->_('Envoyer')]);
   }
 
 
@@ -87,5 +103,3 @@ class ZendAfi_Form_SuggestionAchat extends ZendAfi_Form_SuggestionAchat_Abstract
     return $this;
   }
 }
-
-?>
diff --git a/library/ZendAfi/Form/SuggestionAchat/Abstract.php b/library/ZendAfi/Form/SuggestionAchat/Abstract.php
index eada3f5e48e12ab62dc1eec13e5e1e18e846306d..76555df9ef29a4cd4991076ccbb180e25b6328f3 100644
--- a/library/ZendAfi/Form/SuggestionAchat/Abstract.php
+++ b/library/ZendAfi/Form/SuggestionAchat/Abstract.php
@@ -18,9 +18,12 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
+
 class ZendAfi_Form_SuggestionAchat_Abstract extends ZendAfi_Form {
+
   protected $_user;
 
+
   public static function forUser($user) {
     $sigb_comm = $user->getSIGBComm();
     $form = $sigb_comm
@@ -44,13 +47,10 @@ class ZendAfi_Form_SuggestionAchat_Abstract extends ZendAfi_Form {
   }
 
 
-
   public function init() {
     parent::init();
     $this
       ->setAttrib('id', 'suggestion')
       ->setAttrib('class', 'zend_form');
   }
-
 }
-?>
\ No newline at end of file
diff --git a/public/opac/css/global.css b/public/opac/css/global.css
index 73e0b321520c5c94ba4cb4cbba7f4fbcabbfc5f4..574922ed2dc2ee9145afcfb11a741369ca19c72b 100644
--- a/public/opac/css/global.css
+++ b/public/opac/css/global.css
@@ -3733,3 +3733,20 @@ a[href*="bookmarked-searches/notify"] img {
     opacity: 0.4;
 }
 
+.abonne_suggestion-achat-add .colContenu .contenu p {
+    margin: 0.5em 0;
+}
+
+.abonne_suggestion-achat-add .colContenu .contenu button {
+    margin-right: 1em;
+}
+
+.abonne_suggestion-achat-add .colContenu .contenu form + button {
+    float: left;
+    margin-left: 15px;
+    margin-top: -30px;
+}
+
+.abonne_suggestion-achat-add .colContenu .contenu .liste_mur + form input[type="submit"] {
+    margin-left: 105px;
+}
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatNanookTest.php b/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatNanookTest.php
index 038a8401a471ab30c108939e53e81cfa7c503944..9a5a031f2811526f1c19f3c8780bfd38ef266231 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatNanookTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatNanookTest.php
@@ -227,13 +227,14 @@ class AbonneControllerSuggestionAchatNanookAddPostTest extends AbstractAbonneCon
     $mock_transport = new MockMailTransport();
     Zend_Mail::setDefaultTransport($mock_transport);
 
-    $this->postDispatch('/opac/abonne/suggestion-achat-add', ['DocType' => Class_TypeDoc::LIVRE,
-                                                              'Site' => '12',
-                                                              'Title' => 'fu',
-                                                              'Author' => 'mf',
-                                                              'Isbn' => '2-07-0541 27_4',
-                                                              'Url' => '',
-                                                              'Comment' => 'no']);
+    $this->postDispatch('/opac/abonne/suggestion-achat-add',
+                        ['DocType' => Class_TypeDoc::LIVRE,
+                         'Site' => '12',
+                         'Title' => 'fu',
+                         'Author' => 'mf',
+                         'Isbn' => '2-07-0541 27_4',
+                         'Url' => '',
+                         'Comment' => 'no']);
   }
 
 
@@ -281,3 +282,72 @@ class AbonneControllerSuggestionAchatNanookAddPostErrorsTest extends AbstractAbo
     $this->assertRedirect();
   }
 }
+
+
+
+
+class AbonneControllerSuggestionAchatNanookAddPostAndRecordsFoundTest extends AbstractAbonneControllerSuggestionAchatNanookTestCase {
+  protected $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('SEARCH_RECORD_BEFORE_SUGGEST', 1);
+
+    $mock_transport = new MockMailTransport();
+    Zend_Mail::setDefaultTransport($mock_transport);
+
+    $search_result = $this
+      ->mock()->beStrict()
+      ->whenCalled('fetchRecords')
+      ->answers([$this->fixture('Class_Notice',
+                                ['id' => 1,
+                                 'titre_principal' => 'Trolls de Troy'])]);
+
+    $search_engine = $this
+      ->mock()
+      ->whenCalled('lancerRecherche')
+      ->answers($search_result);
+
+    Class_MoteurRecherche::setInstance($search_engine);
+
+    $this->postDispatch('/opac/abonne/suggestion-achat-add',
+                        ['DocType' => Class_TypeDoc::LIVRE,
+                         'Site' => '12',
+                         'Title' => 'Trolls de Troy',
+                         'Author' => 'connais pas',
+                         'Isbn' => '',
+                         'Url' => '',
+                         'Comment' => '']);
+  }
+
+
+  /** @test */
+  public function recordsListShouldContainsTrollsDeTroy() {
+    $this->assertXPathContentContains('//div', 'Trolls de Troy');
+  }
+
+
+  /** @test */
+  public function buttonOuiShouldContainsLinkToSuggestionAchat() {
+    $this->assertXPathContentContains('//button[contains(@data-url,"suggestion-achat")]', 'Oui');
+  }
+
+
+  /** @test */
+  public function buttonNonShouldContainsOnclickSubmitForm() {
+    $this->assertXPathContentContains('//button[contains(@onclick,"var form = $(\'#suggestion\'); form.attr(\'action\', form.attr(\'action\') + \'?validate_suggestion=1\'); $(\'#submit\').click();")]', 'Non');
+  }
+
+
+  /** @test */
+  public function formSuggestionAchatShouldBePresent() {
+    $this->assertXPath('//form[contains(@action, "/abonne/suggestion-achat-add")]//input[@value="Relancer la recherche"]');
+  }
+
+
+  /** @test */
+  public function buttonEnvoyerShouldContainsOnclickSubmitForm() {
+    $this->assertXPathContentContains('//button[contains(@onclick,"var form = $(\'#suggestion\'); form.attr(\'action\', form.attr(\'action\') + \'?validate_suggestion=1\'); $(\'#submit\').click();")]', 'Envoyer');
+  }
+}
\ No newline at end of file
diff --git a/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatTest.php b/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatTest.php
index f0a1da40ba1e909380e978bf503d3620f5890c57..90f50e4d530169b6419c1d34616466b3bb3eed44 100644
--- a/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatTest.php
+++ b/tests/application/modules/opac/controllers/AbonneControllerSuggestionAchatTest.php
@@ -1107,4 +1107,95 @@ class AbonneControllerSuggestionAchatInactiveTest
                                       'les suggestions d\'achats ne sont pas possibles pour le moment.',
                                       $this->_response->getBody());
   }
+}
+
+
+
+
+class AbonneControllerSuggestionAchatAddPostAndRecordsFoundTest extends AbonneControllerSuggestionAchatAddPostTestCase {
+  protected $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('SEARCH_RECORD_BEFORE_SUGGEST', 1);
+
+    $mock_transport = new MockMailTransport();
+    Zend_Mail::setDefaultTransport($mock_transport);
+
+    $search_result = $this
+      ->mock()->beStrict()
+      ->whenCalled('fetchRecords')
+      ->answers([$this->fixture('Class_Notice',
+                                ['id' => 1,
+                                 'titre_principal' => 'Trolls de Troy'])]);
+
+    $search_engine = $this
+      ->mock()
+      ->whenCalled('lancerRecherche')
+      ->answers($search_result);
+
+    Class_MoteurRecherche::setInstance($search_engine);
+
+    $this->postDispatch('/opac/abonne/suggestion-achat-add',
+                        ['DocType' => Class_TypeDoc::LIVRE,
+                         'Site' => '12',
+                         'titre' => 'Trolls de Troy']);
+  }
+
+
+  /** @test */
+  public function recordsListShouldContainsTrollsDeTroy() {
+    $this->assertXPathContentContains('//div', 'Trolls de Troy', $this->_response->getBody());
+  }
+}
+
+
+
+
+class AbonneControllerSuggestionAchatAddPostWithValidateSuggestionTest extends AbonneControllerSuggestionAchatAddPostTestCase {
+
+  protected $_storm_default_to_volatile = true;
+
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('SEARCH_RECORD_BEFORE_SUGGEST', 1);
+
+    $mock_transport = new MockMailTransport();
+    Zend_Mail::setDefaultTransport($mock_transport);
+
+    $search_result = $this
+      ->mock()->beStrict()
+      ->whenCalled('fetchRecords')
+      ->answers([$this->fixture('Class_Notice',
+                                ['id' => 1,
+                                 'titre_principal' => 'Le mystère de la patate. Une enquête de l\'inspecteur Lapou'])]);
+
+    $search_engine = $this
+      ->mock()
+      ->whenCalled('lancerRecherche')
+      ->answers($search_result);
+
+    Class_MoteurRecherche::setInstance($search_engine);
+
+    $this->postDispatch('/opac/abonne/suggestion-achat-add/validate_suggestion/1',
+                        ['titre' => 'Le mystère de la patate',
+                         'auteur' => 'Bénédicte Guettier',
+                         'type_doc_id' => Class_TypeDoc::LIVRE,
+                         'commentaire' => 'Une enquête de l\'inspecteur Lapou']);
+  }
+
+
+  /** @test */
+  public function responseShouldRedirect() {
+    $this->assertRedirect();
+  }
+
+
+  /** @test */
+  public function assertFlashMessengerShouldContainsSuggestionAdded() {
+    $this->assertFlashMessengerContentContains('Suggestion d\'achat enregistrée');
+  }
 }
\ No newline at end of file