diff --git a/application/modules/admin/controllers/AlbumController.php b/application/modules/admin/controllers/AlbumController.php
index 20c0e519ee7e1cfcf15968a4d43cdce14328329e..24157466249a4fe4b9d810495890a0782dccbc7e 100644
--- a/application/modules/admin/controllers/AlbumController.php
+++ b/application/modules/admin/controllers/AlbumController.php
@@ -691,5 +691,17 @@ class Admin_AlbumController extends ZendAfi_Controller_Action {
 
     return $this->renderScript('admin/listViewMode.phtml');
   }
+
+
+  public function resourceDeletePosterAction() {
+    $this->_helper->getHelper('viewRenderer')->setNoRender(true);
+
+    if (!$resource = Class_AlbumRessource::find((int)$this->_getParam('id'))) {
+      $this->_redirect('admin/album');
+      return;
+    }
+
+    $resource->deletePoster()->save();
+    $this->_redirect('admin/album/edit_ressource/id/' . $resource->getId());
+  }
 }
-?>
\ No newline at end of file
diff --git a/library/Class/AlbumRessource.php b/library/Class/AlbumRessource.php
index 73a8ab6a2a7f0ba7713843437f33caf5f19fb50b..e6152e2b0339abd24f6478cf44a951d9a5060177 100644
--- a/library/Class/AlbumRessource.php
+++ b/library/Class/AlbumRessource.php
@@ -36,7 +36,7 @@ class AlbumRessourceLoader extends Storm_Model_Loader {
 
 
 class Class_AlbumRessource extends Storm_Model_Abstract {
-  use Trait_Translator;
+  use Trait_Translator, Trait_StaticFileSystem;
 
   const BASE_PATH = 'media/';
   const TILES_DIR = 'tiles/';
@@ -194,19 +194,19 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
     if (!$upload->handleUpload($this->getOriginalsPath(), $this->getId())) {
       $this->delete();
-      return array('success' => 'false', 'error' => $upload->getError());
+      return ['success' => 'false', 'error' => $upload->getError()];
     }
 
     $this->setFichier($upload->getSavedFileName());
 
     if (!$this->createThumbnail()) {
       $this->delete();
-      return array('success' => 'false', 'error' => reset($this->getErrors()));
+      return ['success' => 'false', 'error' => reset($this->getErrors())];
     }
 
     $this->save();
 
-    return array('success' => 'true');
+    return ['success' => 'true'];
   }
 
 
@@ -214,24 +214,19 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
    * @return bool
    */
   public function receiveFiles() {
-    if ($this->receiveFile()
-        && $this->receivePoster()) {
-      return $this->save();
-    }
-
-    return false;
+    return ($this->receiveFile() && $this->receivePoster())
+      ? $this->save() : false;
   }
 
 
   public function receivePoster() {
     $oldThumbnail = $this->getThumbnailPath();
+    $file_system = $this->getFileSystem();
 
     // fichier non requis
     if (!$this->isFileUploadedForName('poster')) {
       if ($this->isImage()) {
-        if (file_exists($oldThumbnail))
-          @unlink($oldThumbnail);
-
+        $this->unlink($oldThumbnail);
         return $this->createThumbnail();
       }
 
@@ -250,12 +245,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
     if ('' != $oldPoster
         && $oldPoster != $this->getPosterPath()
-        && file_exists($oldPoster))
-      @unlink($oldPoster);
-
-    if (file_exists($oldThumbnail))
-      @unlink($oldThumbnail);
+        && $file_system->file_exists($oldPoster))
+      @$file_system->unlink($oldPoster);
 
+    $this->unlink($oldThumbnail);
     return $this->createThumbnail();
   }
 
@@ -281,10 +274,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
     $oldFileName  = $this->getFichier();
     $oldOriginal  = $this->getOriginalPath();
 
+    $file_system = $this->getFileSystem();
     if ($fileName != $oldFileName) {
       $this->setFichier($fileName);
-      if (file_exists($oldOriginal))
-        @unlink($oldOriginal);
+      $this->unlink($oldOriginal);
     }
 
     return true;
@@ -494,8 +487,10 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
     self::$_thumbnail_dir_checked = true;
 
-    if (!file_exists(USERFILESPATH.'/temp'))
-      mkdir(USERFILESPATH.'/temp');
+    $file_system = static::getFileSystem();
+
+    if (!$file_system->file_exists(USERFILESPATH.'/temp'))
+      $file_system->mkdir(USERFILESPATH.'/temp');
 
     return;
   }
@@ -519,7 +514,8 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
 
   public function isThumbnailExistsForParams($params) {
-    return file_exists($this->getThumbnailFilePathForParams($params));
+    return $this->getFileSystem()
+                ->file_exists($this->getThumbnailFilePathForParams($params));
   }
 
 
@@ -551,12 +547,13 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
    */
   public function _resizeAndCropThumbnailTo($filepath, $params) {
       $image = $this->getImage();
-      $resize_params = array_merge(array('width' => $image->getImageWidth(),
-                                         'height' => 0,
-                                         'crop_left' => 0,
-                                         'crop_right' => 0,
-                                         'crop_bottom' => 0,
-                                         'crop_top' => 0), $params);
+      $resize_params = array_merge(['width' => $image->getImageWidth(),
+                                    'height' => 0,
+                                    'crop_left' => 0,
+                                    'crop_right' => 0,
+                                    'crop_bottom' => 0,
+                                    'crop_top' => 0],
+                                   $params);
 
 
       $image->cropImage($image->getImageWidth() - $resize_params['crop_left'] - $resize_params['crop_right'],
@@ -633,7 +630,6 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
     return Class_Profil::getCurrentProfil()
       ->getUrlImage($image);
-
   }
 
 
@@ -665,10 +661,9 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
    * @return string
    */
   public function getOriginalUrl() {
-    if ($this->hasUrl())
-      return $this->getUrl();
-
-    return $this->getOriginalsUrl() . rawurlencode($this->getFichier());
+    return $this->hasUrl()
+      ? $this->getUrl()
+      : $this->getOriginalsUrl() . rawurlencode($this->getFichier());
   }
 
 
@@ -724,6 +719,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   public function collectAuthors() {
     if (!isset($this->_attributes['authors']))
       return;
+
     $authors = $this->_attributes['authors'];
     unset($this->_attributes['authors']);
 
@@ -750,6 +746,16 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   }
 
 
+  public function deletePoster() {
+    if (!$this->hasPoster())
+      return $this;
+
+    $this->deletePosterAndThumbnail();
+
+    return $this->setPoster('');
+  }
+
+
   public function deletePosterAndThumbnail() {
     $this->unlink($this->getPosterPath());
     $this->unlink($this->getThumbnailPath());
@@ -757,8 +763,9 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
 
   public function unlink($filename) {
-    if (file_exists($filename))
-      unlink($filename);
+    $file_system = $this->getFileSystem();
+    if ($file_system->file_exists($filename))
+      @$file_system->unlink($filename);
   }
 
 
@@ -809,7 +816,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
     if (!$path = trim($this->hasUrl() ? $this->getUrl() : $this->getFichier()))
       return '';
 
-    $info = pathinfo($path);
+    $info = $this->getFileSystem()->pathinfo($path);
     return isset($info['extension']) ? strtolower($info['extension']) : '';
   }
 
@@ -838,7 +845,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
     if (!$fichier = $this->getFichier())
       return $this->getId();
 
-    $matches = array();
+    $matches = [];
     preg_match_all('/([0-9_]*B[0-9]*_)?(.+)\.\w+$/', $this->getFichier(), $matches);
     return $matches[2][0];
   }
@@ -913,13 +920,14 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   }
 
   public function getIdEad() {
-    return  "R".$this->getId();
+    return  'R' . $this->getId();
   }
 
 
   public function getTilesGenerator() {
     if (!isset($this->_tiles_generator))
       $this->_tiles_generator = new Class_AlbumRessource_LeafletTilesGenerator($this);
+
     return $this->_tiles_generator;
   }
 
@@ -944,18 +952,16 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
 
   public function getUnimarcValue($field) {
     $unimarc = $this->getUnimarcAsArray();
-    if (isset($unimarc[$field]))
-      return $unimarc[$field];
-    return null;
 
+    return isset($unimarc[$field]) ? $unimarc[$field] : null;
   }
 
 
   public function setUnimarc($array_or_string) {
-    if (is_array($array_or_string))
-      parent::setUnimarc(serialize($array_or_string));
-    else
-      parent::setUnimarc($array_or_string);
+    is_array($array_or_string)
+      ? parent::setUnimarc(serialize($array_or_string))
+      : parent::setUnimarc($array_or_string);
+
     return $this;
   }
 
@@ -963,6 +969,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   public function addUnimarc($field, $value) {
     $unimarc = $this->getUnimarcAsArray();
     $unimarc[$field] = $value;
+
     return $this->setUnimarc($unimarc);
   }
 
@@ -970,6 +977,7 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
   public function addMultipleUnimarc($field, $subfield) {
     $unimarcs = $this->getUnimarcAsArray();
     $unimarcs[] = ['field' => $field, 'data' => $subfield];
+
     return $this->setUnimarc($unimarcs);
   }
 
@@ -1081,5 +1089,3 @@ class Class_AlbumRessource extends Storm_Model_Abstract {
                                   $view_helper->album_PlayRessourceUrl($this));
   }
 }
-
-?>
\ No newline at end of file
diff --git a/library/Class/Testing/FileSystem.php b/library/Class/Testing/FileSystem.php
index b1c56d82dec8c5c7d2d5210ae392907f70331ec5..defe3837b31f07122d9e746f7302ffd0d72340fa 100644
--- a/library/Class/Testing/FileSystem.php
+++ b/library/Class/Testing/FileSystem.php
@@ -26,7 +26,7 @@ class Class_Testing_FileSystem {
      'filesize', 'fclose', 'ftell', 'fread', 'feof',
      'getcwd', 'file_exists', 'scandir', 'is_dir',
      'opendir', 'readdir', 'closedir', 'mkdir','glob','file', 'fwrite','rename',
-     'getimagesize', 'file_get_contents', 'sha1_file', 'is_file'
+     'getimagesize', 'file_get_contents', 'sha1_file', 'is_file', 'pathinfo'
     ];
 
 
diff --git a/library/ZendAfi/Form/Album/Ressource.php b/library/ZendAfi/Form/Album/Ressource.php
index a64172f50700f27e06429bbc3c60299435184439..e3492794629ce8d8395f8bd2cee280bd0d19c3e3 100644
--- a/library/ZendAfi/Form/Album/Ressource.php
+++ b/library/ZendAfi/Form/Album/Ressource.php
@@ -35,12 +35,12 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
       ->addPosterFor($model)
       ->detectMediaType($model)
       ->addDisplayGroup(['media_type', 'fichier', 'url', 'poster', 'link_to'],
-                         'file',
-                         ['legend' => 'Fichier'])
+                        'file',
+                        ['legend' => $form->_('Fichier')])
 
       ->addDisplayGroup(['titre', 'folio', 'matiere','duration'],
                         'ressource',
-                        ['legend' => 'Media'])
+                        ['legend' => $form->_('Media')])
 
       ->addDisplayGroup(['authors'],
                         'authors_editors',
@@ -48,14 +48,13 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
 
       ->addDisplayGroup(['description'],
                         'ressource_desc',
-                        ['legend' => 'Description'])
+                        ['legend' => $form->_('Description')])
       ->addJs();
 
     if ($album = $model->getAlbum()
         and !$album->isLivreNumerique())
       $form->removeElement('folio');
 
-
     return $form;
   }
 
@@ -66,35 +65,39 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
       ->setAttrib('id', 'ressourcesForm')
       ->setAttrib('enctype', self::ENCTYPE_MULTIPART)
 
-      ->addElement('text', 'titre', ['label' => 'Titre', 'size' => '80'])
+      ->addElement('text', 'titre', ['label' => $this->_('Titre'), 'size' => '80'])
 
-      ->addElement('text', 'folio', ['label' => 'Folio', 'size' => '20'])
+      ->addElement('text', 'folio', ['label' => $this->_('Folio'), 'size' => '20'])
 
       ->addElement('radio', 'media_type',
-          ['label' => 'Type de média',
-           'separator' => '',
-           'multioptions' => [1 => 'Image', 2 => 'Autre fichier', 3 => 'Média en ligne'],
-           'value' => 1])
+                   ['label' => $this->_('Type de média'),
+                    'separator' => '',
+                    'multioptions' => [1 => $this->_('Image'),
+                                       2 => $this->_('Autre fichier'),
+                                       3 => $this->_('Média en ligne')],
+                    'value' => 1])
 
-      ->addElement('url', 'url', ['label' => 'Url *', 'size' => '80'])
+      ->addElement('url', 'url', ['label' => $this->_('Url *'), 'size' => '80'])
 
-      ->addElement('url', 'link_to', ['label' => 'Lien vers', 'size' => '80'])
+      ->addElement('url', 'link_to', ['label' => $this->_('Lien vers'), 'size' => '80'])
 
       ->addElement('ckeditor', 'description')
 
-      ->addElement('listeSuggestion', 'matiere', ['label' => 'Matières / sujets',
-                                                  'name' => 'matiere',
-                                                  'rubrique' => 'matiere'])
-      ->addElement('text', 'duration', ['label' => 'Durée',
+      ->addElement('listeSuggestion', 'matiere',
+                   ['label' => $this->_('Matières / sujets'),
+                    'name' => 'matiere',
+                    'rubrique' => 'matiere'])
+
+      ->addElement('text', 'duration', ['label' => $this->_('Durée'),
                                         'size' => 8])
 
       ->addElement('multiInput', 'authors',
-                   ['label' => 'Auteurs',
-                    'fields' => [['name' => 'author', 'label' => 'Nom'],
-                                 ['name' => 'fonction', 'label' => 'Fonction',
+                   ['label' => $this->_('Auteurs'),
+                    'fields' => [['name' => 'author', 'label' => $this->_('Nom')],
+                                 ['name' => 'fonction', 'label' => $this->_('Fonction'),
                                   'source' => Class_CodifAuteurFonction::getAllLabels()]],
                     'values' => ['author' => [], 'fonction' => []],
-                    'deleteMessage' => 'cet auteur']);
+                    'deleteMessage' => $this->_('cet auteur')]);
   }
 
 
@@ -109,10 +112,13 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
     foreach($model->getUnimarcAsArray() as $unimarc) {
       if (!is_array($unimarc) || '701' != $unimarc['field'])
         continue;
+
       $values['author'][] = $unimarc['data']['a'];
       $values['fonction'][] = $unimarc['data']['4'];
     }
+
     $this->authors->setValues($values);
+
     return $this;
   }
 
@@ -122,7 +128,8 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
    * @return ZendAfi_Form_Album_Ressource
    */
   public function addFileFor($model) {
-    $element = new ZendAfi_Form_Element_Image('fichier', ['label' => 'Fichier *']);
+    $element = new ZendAfi_Form_Element_Image('fichier',
+                                              ['label' => $this->_('Fichier *')]);
     if ($model) {
       $element
         ->setBasePath($model->getOriginalsPath())
@@ -138,13 +145,16 @@ class ZendAfi_Form_Album_Ressource extends ZendAfi_Form {
    * @return ZendAfi_Form_Album_Ressource
    */
   public function addPosterFor($model) {
-    $element = new ZendAfi_Form_Element_Image('poster', ['label' => 'Affiche / Jacquette']);
+    $element = new ZendAfi_Form_Element_Image('poster',
+                                              ['label' => $this->_('Affiche / Jacquette')]);
     if ($model) {
       $element
         ->setBasePath($model->getOriginalsPath())
         ->setBaseUrl($model->getThumbnailsUrl())
-        ->setThumbnailUrl($model->getThumbnailUrl());
+        ->setThumbnailUrl($model->getThumbnailUrl())
+        ->setActionUrl($this->getView()->url(['action' => 'resource-delete-poster']));
     }
+
     return $this->addElement($element);
   }
 
diff --git a/library/ZendAfi/Form/Decorator/DeleteButton.php b/library/ZendAfi/Form/Decorator/DeleteButton.php
index 45cc59cff56fc4edd35338eaf7e9f0d93452415f..0098b3017ba753b83a1c68bfb7442940c6a7ad7e 100644
--- a/library/ZendAfi/Form/Decorator/DeleteButton.php
+++ b/library/ZendAfi/Form/Decorator/DeleteButton.php
@@ -16,7 +16,7 @@
  *
  * 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_Form_Decorator_DeleteButton extends Zend_Form_Decorator_Abstract {
   /**
@@ -24,16 +24,15 @@ class ZendAfi_Form_Decorator_DeleteButton extends Zend_Form_Decorator_Abstract {
    * @return string
    */
   public function render($content) {
-    if (('' == $this->_element->getActionUrl()) || !$this->_element->getValue()) {
+    if (('' == $this->_element->getActionUrl())
+        || !$this->_element->getValue())
       return $content;
-    }
 
-    return $content
-      . $this->_element->getView()->tagAnchor(
-          $this->_element->getActionUrl(),
-          $this->_element->getView()->traduire('Supprimer').'<br/>',
-          array('onclick' => "return confirm('Êtes-vous sur ?');")
-      );
+    return $content . '<br />'
+      . $this->_element->getView()
+                       ->tagAnchor($this->_element->getActionUrl(),
+                                   $this->_element->getView()->_('Supprimer').'<br/>',
+                                   ['onclick' => "return confirm('Êtes-vous sur ?');"]);
   }
 }
 ?>
\ No newline at end of file
diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php
index f83269f2b6562a2fd2399ca61bc2189e340ffb61..abd74144f98173be03e6024d3814876aae91cf8b 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php
@@ -18,16 +18,15 @@
  * along with BOKEH; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
-require_once 'AdminAbstractControllerTestCase.php';
 
 abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
   protected $_category_wrapper;
 
   public function setUp() {
     parent::setUp();
 
     $time_source = new TimeSourceForTest('2013-12-14 09:00:00');
-    Storm_Model_Loader::defaultToVolatile();
 
     $this->fixture('Class_IntBib', ['id' => 1,
                                     'libelle' => 'La Bib']);
@@ -133,7 +132,6 @@ abstract class Admin_AlbumControllerTestCase extends Admin_AbstractControllerTes
 
   public function tearDown() {
     Class_Album::setTimeSource(null);
-    Storm_Model_Loader::defaultToDb();
     parent::tearDown();
   }
 }
@@ -584,7 +582,6 @@ class Admin_AlbumControllerAddAlbumToPatrimoineTest extends Admin_AlbumControlle
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/album/add_album_to/id/38');
-
   }
 
 
@@ -1817,28 +1814,30 @@ class Admin_AlbumControllerDeleteAlbumMesBDTest extends Admin_AlbumControllerTes
 abstract class Admin_AlbumControllerAlbumHarlockTestCase extends Admin_AlbumControllerTestCase {
   public function setUp() {
     parent::setUp();
-    $harlock = $this->fixture(
-      'Class_Album',
-      ['id' => 999,
-       'titre' => 'Harlock',
-       'status' => Class_Album::STATUS_VALIDATED,
-       'id_origine' => 'HL22',
-       'type_doc_id' => Class_TypeDoc::DIAPORAMA,
-       'categorie' => $this->fixture('Class_AlbumCategorie', ['id' => 999, 'libelle' => '']),
-       'ressources' => [$this->fixture('Class_AlbumRessource',
-                                       ['id' => 1,
-                                        'titre' => 'Arcadia',
-                                        'description' => 'Le vaisseau spatial',
-                                        'fichier' => '1.png',
-                                        'link_to' => '/afi-opac3/cms/viewarticle/id/2',
-                                        'matiere' => '999',
-                                        'ordre' => 5]),
-                        $this->fixture('Class_AlbumRessource',
-                                       ['id' => 2,
-                                        'titre' => 'Nausica',
-                                        'fichier' => '2.png',
-                                        'folio' => '4R',
-                                        'ordre' => 1])]]);
+    $harlock = $this
+      ->fixture('Class_Album',
+                ['id' => 999,
+                 'titre' => 'Harlock',
+                 'status' => Class_Album::STATUS_VALIDATED,
+                 'id_origine' => 'HL22',
+                 'type_doc_id' => Class_TypeDoc::DIAPORAMA,
+                 'categorie' => $this->fixture('Class_AlbumCategorie', ['id' => 999, 'libelle' => '']),
+                 'ressources' => [$this->fixture('Class_AlbumRessource',
+                                                 ['id' => 1,
+                                                  'titre' => 'Arcadia',
+                                                  'description' => 'Le vaisseau spatial',
+                                                  'fichier' => '1.png',
+                                                  'link_to' => '/afi-opac3/cms/viewarticle/id/2',
+                                                  'matiere' => '999',
+                                                  'ordre' => 5]),
+
+                                  $this->fixture('Class_AlbumRessource',
+                                                 ['id' => 2,
+                                                  'titre' => 'Nausica',
+                                                  'fichier' => '2.png',
+                                                  'folio' => '4R',
+                                                  'ordre' => 1])
+                 ]]);
 
   }
 }
@@ -1855,7 +1854,8 @@ class Admin_AlbumControllerAlbumHarlockPreviewAlbumTest extends Admin_AlbumContr
 
   /** @test */
   public function pageShouldContainsInputToModifyBoxHeight() {
-    $this->assertXPath("//input[@id='op_hauteur_boite'][@value=400]");
+    $this->assertXPath("//input[@id='op_hauteur_boite'][@value=400]",
+                       $this->_response->getBody());
   }
 
 
@@ -2008,7 +2008,9 @@ class Admin_AlbumControllerAlbumHarlockEditImagesActionTest extends Admin_AlbumC
 
 
 
-class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest extends Admin_AlbumControllerAlbumHarlockTestCase {
+class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest
+  extends Admin_AlbumControllerAlbumHarlockTestCase {
+
   public function setUp() {
     parent::setUp();
     $this->dispatch('/admin/album/edit_ressource/id/1');
@@ -2046,25 +2048,25 @@ class Admin_AlbumControllerAlbumHarlockEditRessourceOneActionTest extends Admin_
 
 
   /** @test */
-  function textAreaDescriptionShouldContainsLeVaisseauSpatial() {
+  public function textAreaDescriptionShouldContainsLeVaisseauSpatial() {
     $this->assertXPathContentContains('//textarea[@name="description"]', 'Le vaisseau spatial');
   }
 
 
   /** @test */
-  function inputFileShouldBeVisible() {
+  public function inputFileShouldBeVisible() {
     $this->assertXPath('//input[@type="file"]');
   }
 
 
   /** @test */
-  function inputLinkToShouldContainsViewArticleTwo() {
+  public function inputLinkToShouldContainsViewArticleTwo() {
     $this->assertXPath('//input[@name="link_to"][contains(@value, "cms/viewarticle/id/2")]');
   }
 
 
   /** @test */
-  function formShouldHaveTagSuggestForMatiere() {
+  public function formShouldHaveTagSuggestForMatiere() {
     $this->assertXPath("//input[@name='matiere'][@value='999']");
   }
 
@@ -3134,4 +3136,96 @@ class Admin_AlbumControllerConfigActionTest extends Admin_AbstractControllerTest
 
   }
 }
-?>
+
+
+
+abstract class Admin_AlbumControllerWebsiteWithPosterTestCase
+  extends Admin_AlbumControllerTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    $this
+      ->fixture('Class_Album',
+                ['id' => 17,
+                 'titre' => 'Framasoft',
+                 'status' => Class_Album::STATUS_VALIDATED,
+                 'id_origine' => 'FRAMA17',
+                 'type_doc_id' => Class_TypeDoc::WEBSITE,
+                 'categorie' => $this->fixture('Class_AlbumCategorie',
+                                               ['id' => 17, 'libelle' => '']),
+                 'ressources' => [$this->fixture('Class_AlbumRessource',
+                                                 ['id' => 1,
+                                                  'titre' => 'Framasoft.org',
+                                                  'description' => 'Un site qu\'il est bien',
+                                                  'url' => 'http://framasoft.org',
+                                                  'poster' => 'framasoft.org.png',
+                                                  'ordre' => 1])
+                 ]]);
+  }
+}
+
+
+
+class Admin_AlbumControllerWebsiteWithPosterEditResourceTest
+  extends Admin_AlbumControllerWebsiteWithPosterTestCase {
+  public function setUp() {
+    parent::setUp();
+    $this->dispatch('/admin/album/edit_ressource/id/1', true);
+  }
+
+
+  /** @test */
+  public function posterInputShouldBePresent() {
+    $this->assertXPath('//input[@type="file"][@name="poster"]');
+  }
+
+
+  /** @test */
+  public function posterDeleteLinkShouldBePresent() {
+    $this->assertXPath('//a[contains(@href, "admin/album/resource-delete-poster/id/1")]');
+  }
+}
+
+
+
+class Admin_AlbumControllerWebsiteWithPosterResourceDeletePosterTest
+  extends Admin_AlbumControllerWebsiteWithPosterTestCase {
+  protected $_file_system;
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->_file_system = $this->mock()
+                               ->whenCalled('file_exists')->answers(true)
+                               ->whenCalled('unlink')->answers(null)
+
+                               ->whenCalled('pathinfo')
+                               ->with('http://framasoft.org')
+                               ->answers(['extension' => 'org'])
+      ;
+
+    Class_AlbumRessource::setFileSystem($this->_file_system);
+    $this->dispatch('/admin/album/resource-delete-poster/id/1', true);
+  }
+
+
+  public function tearDown() {
+    Class_AlbumRessource::setFileSystem(null);
+    parent::tearDown();
+  }
+
+
+  /** @test */
+  public function resourceShouldNotHavePosterAnymore() {
+    $this->assertEquals('', Class_AlbumRessource::find(1)->getPoster());
+  }
+
+
+  /** @test */
+  public function fileShouldHaveBeenDeleted() {
+    $this->assertTrue($this->_file_system
+                      ->methodHasBeenCalledWithParams('unlink',
+                                                      ['./userfiles/album/17/big/media/framasoft.org.png']));
+  }
+}