From bb9233f572cc03b2cd053c222135864ccc8545b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?ANDRE=20s=C3=A9bastien?= <sandre@afi-sa.fr>
Date: Tue, 2 Nov 2021 17:17:01 +0100
Subject: [PATCH] hotline : #143697 : save album lost authors

---
 VERSIONS_HOTLINE/143697                       |  1 +
 library/Class/Album.php                       |  1 +
 .../admin/controllers/AlbumControllerTest.php | 71 ++++++++++++++++---
 3 files changed, 62 insertions(+), 11 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/143697

diff --git a/VERSIONS_HOTLINE/143697 b/VERSIONS_HOTLINE/143697
new file mode 100644
index 00000000000..da58b74ab6e
--- /dev/null
+++ b/VERSIONS_HOTLINE/143697
@@ -0,0 +1 @@
+ - ticket #143697 : Administration : correction de la perte des auteurs à la sauvegarde des albums.
\ No newline at end of file
diff --git a/library/Class/Album.php b/library/Class/Album.php
index 937252177a6..dcf0a0e5563 100644
--- a/library/Class/Album.php
+++ b/library/Class/Album.php
@@ -1009,6 +1009,7 @@ class Class_Album extends Storm_Model_Abstract {
 
   public function collectAuthors() {
     $authors = $this->_collect('authors', self::AUTHOR_FIELD);
+    $this->_authors = null;
     if(isset($authors['author']))
       foreach($authors['author'] as $k => $v)
         $this->addAuthor($v, $authors['fonction'][$k]);
diff --git a/tests/application/modules/admin/controllers/AlbumControllerTest.php b/tests/application/modules/admin/controllers/AlbumControllerTest.php
index 884052eea89..b30bea0cec8 100644
--- a/tests/application/modules/admin/controllers/AlbumControllerTest.php
+++ b/tests/application/modules/admin/controllers/AlbumControllerTest.php
@@ -552,10 +552,10 @@ class Admin_AlbumControllerDeleteCategorieFavorisTest extends Admin_AlbumControl
       ->whenCalled('execTimedScript')
       ->with(3600, 'delete_album_category.php \'2\' >/dev/null 2>&1 &')
       ->willDo(function()
-               {
-                 Class_AlbumCategorie::find(2)->delete();
-                 Class_AlbumCategorie::clearCache();
-               });
+      {
+        Class_AlbumCategorie::find(2)->delete();
+        Class_AlbumCategorie::clearCache();
+      });
 
     Class_AlbumCategorie_Remover::setCommand($command);
 
@@ -3014,8 +3014,8 @@ class AlbumControllerMultiMediasExportCSV extends ControllerAlbumMultiMediasTest
                     'libelle' => 'Jeunesse']);
 
     Class_AlbumCategorie::find(33)
-         ->setParentCategorie(Class_AlbumCategorie::find(34))
-         ->save();
+      ->setParentCategorie(Class_AlbumCategorie::find(34))
+      ->save();
 
     Class_Album::find('999')
       ->AddEditor('Dargaud')
@@ -3062,7 +3062,7 @@ class AlbumControllerMultiMediasExportCSV extends ControllerAlbumMultiMediasTest
 
 
   /** @test
-  */
+   */
   public function secondRowShouldContainsValuesForAlbum() {
     // cannot assertEquals entire row due to array sort diff between php5 and php7
     foreach(['Jeunesse > Comics', 'Plein de medias', '<p>pour passer la soirée</p>', '2019','Titi','Dargaud']
@@ -3072,7 +3072,7 @@ class AlbumControllerMultiMediasExportCSV extends ControllerAlbumMultiMediasTest
 
 
   /** @test
-  */
+   */
   public function thirdRowShouldContainsValuesForBatmanDarkKnightRessource() {
     foreach(['Batman Dark Knight', 'Une nouvelle aventure du justicier noir' ]
             as $value)
@@ -3668,9 +3668,9 @@ class Admin_AlbumControllerPostEditWithFilesAlbumMesBDTest extends Admin_AlbumCo
     parent::setUp();
     Class_UploadMover_HttpPost::setFileWriter($this->mock()
                                               ->whenCalled('moveUploadedFile')
-                                               ->answers(true)
-                                               ->whenCalled('fileExists')
-                                               ->answers(true));
+                                              ->answers(true)
+                                              ->whenCalled('fileExists')
+                                              ->answers(true));
   }
 
 
@@ -3792,3 +3792,52 @@ class Admin_AlbumControllerPostEditWithFilesAlbumMesBDTest extends Admin_AlbumCo
     $this->assertEquals('45_mypic.jpg',Class_Album::find(45)->getFile());
   }
 }
+
+
+
+
+class Admin_AlbumControllerPostEditLostAuthorTest
+  extends Admin_AbstractControllerTestCase {
+
+  protected $_storm_default_to_volatile = true;
+
+
+  public function setUp() {
+    parent::setUp();
+
+    $this->fixture(Class_AlbumCategorie::class,
+                   ['id' => 6,
+                    'libelle' => 'Adulte']);
+
+    $this->fixture(Class_Album::class,
+                   ['id' => 44,
+                    'titre' => 'Il ne fonctionne pas.']);
+
+    Class_Album::find(44)
+      ->addAuthor('Georges')
+      ->save();
+
+    $this->postDispatch('/admin/album/edit_album/id/44',
+                        ['titre' => 'Il ne fonctionne pas.',
+                         'sous_titre' => 'Mes BD',
+                         'created_at' => '06/10/2017',
+                         'status' => Class_Album::STATUS_VALIDATED,
+                         'type_doc_id' => '102',
+                         'cat_id' => 6,
+                         'author' => ['Georges'],
+                         'fonction' => ['']]);
+  }
+
+
+  /** @test */
+  public function albumShouldBeSavedWithoutError() {
+    $this->assertFlashMessengerContentContains('Album sauvegardé');
+  }
+
+
+  /** @test */
+  public function authorGeorgesShouldBeInNotes() {
+    Class_Album::clearCache();
+    $this->assertContains('Georges', Class_Album::find(44)->getNotes());
+  }
+}
-- 
GitLab