diff --git a/application/modules/admin/controllers/CmsController.php b/application/modules/admin/controllers/CmsController.php
index ab181289fd91178280ed4b5711e32f6f7dbf908c..9adcd8650d0cbfe6fda5f87d6771913da394265f 100644
--- a/application/modules/admin/controllers/CmsController.php
+++ b/application/modules/admin/controllers/CmsController.php
@@ -40,35 +40,40 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 		$identity = Class_Users::getLoader()->getIdentity();
 
 		if (0 != $this->_bib->getId()) {
-			$bibs = array($this->_bib);
+			$bibs = [$this->_bib];
 
 		} else {
-			$bibs = Class_Bib::getLoader()->findAllBy(array('order' => 'libelle'));
+			$bibs = Class_Bib::getLoader()->findAllBy(['order' => 'libelle']);
 			array_unshift($bibs, $this->_bib);
 		}
 
-		$categories = array();
+
 
 		$add_link_label = $this->view->tagImg(URL_ADMIN_IMG . 'ico/add_cat.gif')
 			. $this->view->_(' Ajouter une catégorie');
 
-		$add_link_options = array('module' => 'admin',
-															'controller' => 'cms',
-															'action' => 'catadd');
-
-		foreach ($bibs as $bib) {
-			$categories[] = array('bib'=> $bib,
-														'containers' => $bib->getArticleCategories(),
-														'add_link' => $this->view->tagAnchor($this->view->url(array_merge($add_link_options, array('id_bib' => $bib->getId()))),
-																																 $add_link_label));
-		}
+		$add_link_options = ['module' => 'admin',
+												 'controller' => 'cms',
+												 'action' => 'catadd'];
+
+		$categories = array_map(
+			function($bib) use ($add_link_options, $add_link_label){
+				return  ['bib'=> $bib,
+								 'containers' => $bib->getArticleCategories(),
+								 'add_link' => $this->view->tagAnchor($this->view->url(
+																												array_merge($add_link_options, 
+																																		['id_bib' => $bib->getId()])),
+																											$add_link_label)];
+			},
+				
+			$bibs);
 
 		$this->view->categories = $categories;
 
 		$this->view->categorieActions = $this->_getTreeViewContainerActions();
 		$this->view->articleActions = $this->_getTreeViewItemActions();
 
-		$this->view->titre = 'Mise à jour des articles';
+		$this->view->titre = $this->view->_('Mise à jour des articles');
 
 		$this->view->headScript()->appendScript('var treeViewSelectedCategory = '
 																			. (int)$this->_getParam('id_cat') . ';');
@@ -156,14 +161,12 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 
 	
 	public function newsduplicateAction() {
-		$category = $this->getCategoryAndSetComboCat();
-		$duplicated_article = Class_Article::find($this->_getParam('id_article'));
-		
-		$new_article = $duplicated_article->copy();
+		$new_article = Class_Article::find($this->_getParam('id'))->copy();
 		
 		$this->view->article		=  $new_article;
 		$this->view->titre			= $this->_('Dupliquer l\'article: ').$new_article->getTitre();
 		$this->view->combo_lieu_options = $this->comboLieuOptions();
+		$this->view->combo_cat = $this->view->comboCategories($new_article->getCategorie());
 		$this->view->form_action = $this->view->url(['module' => 'admin',
 																								 'controller' => 'cms',
 																								 'action' => 'newsadd',
@@ -343,63 +346,55 @@ class Admin_CmsController extends ZendAfi_Controller_Action {
 	 * @return array
 	 */
 	private function _getTreeViewContainerActions() {
-		return array(
-			array(
-				'url' => $this->_getUrlForActionAndIdName('catedit'),
-				'icon'			=> 'ico/edit.gif',
-				'label'			=> 'Modifier'
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('catdel'),
-				'icon'			=> 'ico/del.gif',
-				'label'			=> 'Supprimer',
-				'condition' => 'hasNoChild',
-				'anchorOptions' => array(
-					'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cette catégorie ?')"
-				)
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('newsadd', 'id_cat'),
-				'icon'			=> 'ico/add_news.gif',
-				'label'			=> 'Ajouter un article',
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('catadd'),
-				'icon'			=> 'ico/add_cat.gif',
-				'label'			=> 'Ajouter une sous-catégorie'
-			),
-		);
+		return [
+			['url' => $this->_getUrlForActionAndIdName('catedit'),
+			 'icon'			=> 'ico/edit.gif',
+			 'label'			=> 'Modifier'],
+			
+			['url' => $this->_getUrlForActionAndIdName('catdel'),
+			 'icon'			=> 'ico/del.gif',
+			 'label'			=> 'Supprimer',
+			 'condition' => 'hasNoChild',
+			 'anchorOptions' => [
+				 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cette catégorie ?')"]],
+
+			['url' => $this->_getUrlForActionAndIdName('newsadd', 'id_cat'),
+			 'icon'			=> 'ico/add_news.gif',
+			 'label'			=> 'Ajouter un article'],
+
+			['url' => $this->_getUrlForActionAndIdName('catadd'),
+			 'icon'			=> 'ico/add_cat.gif',
+			 'label'			=> 'Ajouter une sous-catégorie'],
+			];
 	}
 
 
 	private function _getTreeViewItemActions() {
-		return array(
-			array(
-				'url' => $this->_getUrlForActionAndIdName('makeinvisible'),
-				'icon'			=> 'ico/show.gif',
-				'label'			=> 'Rendre cet article invisible',
-				'condition' => 'isVisible'
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('makevisible'),
-				'icon'			=> 'ico/hide.gif',
-				'label'			=> 'Rendre cet article visible',
-				'condition' => 'isNotVisible'
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('newsedit'),
-				'icon'			=> 'ico/edit.gif',
-				'label'			=> 'Modifier',
-			),
-			array(
-				'url' => $this->_getUrlForActionAndIdName('delete'),
-				'icon'			=> 'ico/del.gif',
-				'label'			=> 'Supprimer',
-				'anchorOptions' => array(
-					'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cet article ?')"
-				),
-			)
-		);
+		return [
+			['url' => $this->_getUrlForActionAndIdName('makeinvisible'),
+			 'icon'			=> 'ico/show.gif',
+			 'label'			=> 'Rendre cet article invisible',
+			 'condition' => 'isVisible'],
+
+			['url' => $this->_getUrlForActionAndIdName('makevisible'),
+			 'icon'			=> 'ico/hide.gif',
+			 'label'			=> 'Rendre cet article visible',
+			 'condition' => 'isNotVisible'],
+
+			['url' => $this->_getUrlForActionAndIdName('newsedit'),
+			 'icon'			=> 'ico/edit.gif',
+			 'label'			=> 'Modifier'],
+
+			['url' => $this->_getUrlForActionAndIdName('newsduplicate'),
+			 'icon'			=> 'ico/copier.gif',
+			 'label'			=> 'Dupliquer'],
+
+			['url' => $this->_getUrlForActionAndIdName('delete'),
+			 'icon'			=> 'ico/del.gif',
+			 'label'			=> 'Supprimer',
+			 'anchorOptions' => [
+				 'onclick' => "return confirm('Etes-vous sûr de vouloir supprimer cet article ?')"]]
+			];
 	}
 
 
diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php
index 4133690ea148a3d08eb049651009a2d3eb48a9ae..d6b4b80d976ee5a330d6a314d0f449742a74a3eb 100644
--- a/tests/application/modules/AbstractControllerTestCase.php
+++ b/tests/application/modules/AbstractControllerTestCase.php
@@ -202,7 +202,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
 			$request->setRequestUri($url);
 		}
 		$request->setPathInfo(null);
-		$controller = $this->getFrontController();
+
 		$this->frontController
 			->setRequest($request)
 			->setResponse($this->getResponse())
diff --git a/tests/application/modules/admin/controllers/CmsControllerTest.php b/tests/application/modules/admin/controllers/CmsControllerTest.php
index ebf9fd0b411b37f5340386f6b6b84d93101bf97f..15204cc975e11c6c29bc9ba043a92564e8a16882 100644
--- a/tests/application/modules/admin/controllers/CmsControllerTest.php
+++ b/tests/application/modules/admin/controllers/CmsControllerTest.php
@@ -93,7 +93,8 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase {
 		$domaine_a_la_une = Class_Catalogue::newInstanceWithId(66,
 																													 ['libelle' => 'A la Une']);
 
-		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue')
+		$this
+			->onLoaderOfModel('Class_Catalogue')
 			->whenCalled('findAllBy')
 			->with(['order' => 'libelle'])
 			->answers([$this->domaine_art,
@@ -135,6 +136,7 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase {
 	public function setupArticles() {
 		$cat_a_la_une = Class_ArticleCategorie::newInstanceWithId(23, ['libelle' => 'A la Une']);
 		$this->annecy->setArticleCategories([$cat_a_la_une]);
+
 		$this->cat_evenements = Class_ArticleCategorie::newInstanceWithId(34, 
 																																			['libelle' => 'Evènements',
 																																			 'parent_categorie' => $cat_a_la_une,
@@ -161,15 +163,16 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase {
 																											 'domaine_ids' => [11,12],
 																											 'avis_users' => []]);
 
-
-		$this->article_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')->whenCalled('save')
-			->answers(true)
-			->getWrapper();
+		$this->cat_evenements->setArticles([$this->concert]);
 
 
+		$this->article_wrapper = $this
+			->onLoaderOfModel('Class_Article')
+			->whenCalled('save')->answers(true)
+			->getWrapper();
  
 
-		$this->categorie_wrapper = Storm_Test_ObjectWrapper::onLoaderOfModel('Class_ArticleCategorie');
+		$this->categorie_wrapper = $this->onLoaderOfModel('Class_ArticleCategorie');
 
 		$this->cat_evenements->setBib($this->annecy);
 
@@ -209,6 +212,7 @@ abstract class CmsControllerTestCase extends Admin_AbstractControllerTestCase {
 
 
 
+
 class CmsControllerArticleEditWithoutLanguesTest extends CmsControllerTestCase {
 	public function setUp() {
 		parent::setUp();
@@ -351,37 +355,41 @@ class CmsControllerArticleDuplicateActionTest extends AbstractControllerTestCase
 	public function setUp() {
 		parent::setUp();
 
-		$this->_admin_bib = $this->fixture('Class_Users',['id' => 10,
-																											'login' => 'AdminBibConnected',
-																											'bib' => $this->fixture('Class_Bib', ['id' => 2,
-																																														'id_zone' => 4,
-																																														'libelle' => 'Annecy']),
-																											'role' => 'admin_bib',
-																											'mail' => 'admin@afi-sa.fr',
-																											'password' => 'toto',
-																											'role_level' => ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB]);
+		$this->_admin_bib = $this->fixture('Class_Users',
+																			 ['id' => 10,
+																				'login' => 'AdminBibConnected',
+																				'bib' => $this->fixture('Class_Bib', 
+																																['id' => 2,
+																																 'id_zone' => 4,
+																																 'libelle' => 'Annecy']),
+																				'role' => 'admin_bib',
+																				'mail' => 'admin@afi-sa.fr',
+																				'password' => 'toto',
+																				'role_level' => ZendAfi_Acl_AdminControllerRoles::ADMIN_BIB]);
 		ZendAfi_Auth::getInstance()->logUser($this->_admin_bib);
 		$this->setupArticle();
-		$this->dispatch('/admin/cms/newsduplicate/id_article/8080/id_cat/23');
+		$this->dispatch('/admin/cms/newsduplicate/id/8080', true);
 	}
 
 
 	public function setupArticle() {
-		$this->fixture('Class_Article',['id' => 8080,
-																		'titre' => 'Concert',
-																		'categorie' => $this->fixture('Class_ArticleCategorie',['id' => 23,
-																																														'libelle' => 'A la Une']),
-																		'auteur' => $this->_admin_bib,
-																		'description' => 'Venez nombreux ici: <img src="'.BASE_URL.'/images/bonlieu.jpg" />',
-																		'contenu' => 'à Bonlieu. <img src="'.BASE_URL.'/images/truffaz.jpg" />',
-																		'debut' => '2011-03-20',
-																		'fin' => '2011-03-28',
-																		'events_debut' =>  '2011-03-27',
-																		'events_fin' => '2011-03-28',
-																		'cacher_titre' => 1,
-																		'langue' => 'fr',
-																		'tags' => 'concert;jazz',
-																		'avis' => true]);
+		$this->fixture('Class_Article',
+									 ['id' => 8080,
+										'titre' => 'Concert',
+										'categorie' => $this->fixture('Class_ArticleCategorie',
+																									['id' => 23,
+																									 'libelle' => 'A la Une']),
+										'auteur' => $this->_admin_bib,
+										'description' => 'Venez nombreux ici: <img src="'.BASE_URL.'/images/bonlieu.jpg" />',
+										'contenu' => 'à Bonlieu. <img src="'.BASE_URL.'/images/truffaz.jpg" />',
+										'debut' => '2011-03-20',
+										'fin' => '2011-03-28',
+										'events_debut' =>  '2011-03-27',
+										'events_fin' => '2011-03-28',
+										'cacher_titre' => 1,
+										'langue' => 'fr',
+										'tags' => 'concert;jazz',
+										'avis' => true]);
 	}
 
 
@@ -1598,11 +1606,12 @@ class CmsControllerArticleAddActionInvalidDatePostTest extends CmsControllerTest
 }
 
 
+
+
 class CmsControllerArticleIndexActionTest extends CmsControllerTestCase {
 	public function setUp() {
 		parent::setUp();
-		$_SESSION["MENU_DEPLOY"] = array("CMS" => array(34, 23));
-		$this->dispatch('admin/cms');
+		$this->dispatch('admin/cms', true);
 	}
 
 	/** @test */
@@ -1610,9 +1619,29 @@ class CmsControllerArticleIndexActionTest extends CmsControllerTestCase {
 		$this->assertController('cms');
 		$this->assertAction('index');
 	}
+
+
+	/** @test */
+	public function titreShouldBeMiseAJourDesArticles() {
+		$this->assertXPathContentContains('//h1', 'Mise à jour des articles');
+	}
+
+
+	/** @test */
+	public function articleConcertShouldHaveLinkForEdit() {
+		$this->assertXPath('//a[contains(@href, "admin/cms/newsedit/id/4")]');
+	}
+
+
+	/** @test */
+	public function articleConcertShouldHaveLinkForDuplicate() {
+		$this->assertXPath('//a[contains(@href, "admin/cms/newsduplicate/id/4")]');
+	}
 }
 
 
+
+
 class CmsControllerArticleTraductionFREditTest extends CmsControllerTestCase {
 	public function setUp() {
 		parent::setUp();