diff --git a/VERSIONS_HOTLINE/91864 b/VERSIONS_HOTLINE/91864 new file mode 100644 index 0000000000000000000000000000000000000000..2606b68819e6055afcab697385163b45f830251e --- /dev/null +++ b/VERSIONS_HOTLINE/91864 @@ -0,0 +1 @@ + - ticket #91864 : Newsletter : correction de la sélection d'article qui ajoutait automatiquement tous les articles lorsque la sélection était vide \ No newline at end of file diff --git a/library/Class/Newsletter.php b/library/Class/Newsletter.php index e60f202738b553dcbdbf60f4d36593c5803ef51b..40ab4284afd3389b2097024dcdceb10b22f776ce 100644 --- a/library/Class/Newsletter.php +++ b/library/Class/Newsletter.php @@ -223,9 +223,11 @@ class Class_Newsletter extends Storm_Model_Abstract { public function getArticles() { - return Class_Article::getArticlesByPreferences(['id_items' => $this->getArticlesIds(), - 'id_categorie' => $this->getArticlesCategoriesIds(), - 'display_order' => 'Selection']); + return $this->hasArticlesIds() || $this->hasArticlesCategoriesIds() + ? Class_Article::getArticlesByPreferences(['id_items' => $this->getArticlesIds(), + 'id_categorie' => $this->getArticlesCategoriesIds(), + 'display_order' => 'Selection']) + : []; } diff --git a/tests/application/modules/admin/controllers/NewsletterControllerTest.php b/tests/application/modules/admin/controllers/NewsletterControllerTest.php index 70d5fc8d1ca104aca8347fe083ef97fb7ce01311..38f1401956f4458391bbfc934168644842ad6df3 100644 --- a/tests/application/modules/admin/controllers/NewsletterControllerTest.php +++ b/tests/application/modules/admin/controllers/NewsletterControllerTest.php @@ -838,10 +838,10 @@ class Admin_NewsletterControllerSendActionWithCommandFailureTest extends Admin_N +abstract class Admin_NewsletterControllerPreviewActionTestCase + extends Admin_NewsletterControllerTestCase { -class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterControllerTestCase { public function setUp() { - parent::setUp(); $marcus = $this->fixture('Class_Users', ['id' => 345, 'login' => 'mmiller', @@ -912,22 +912,34 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro $septante_millions, $gilet_jaune, $l_arnaque]); + } +} + + + +class Admin_NewsletterControllerPreviewActionWithArticlesSelectionTest + extends Admin_NewsletterControllerPreviewActionTestCase { + public function setUp() { + parent::setUp(); $this->dispatch('/admin/newsletter/preview/id/3', true); } - public function testFrom() { + /** @test */ + public function fromShouldBeLaurentAtAfiSaDotNet() { $this->assertQueryContentContains('p', 'laurent@afi-sa.net'); } - public function testSubject() { + /** @test */ + public function subjectShouldBeNouveautes() { $this->assertQueryContentContains('p', 'Nouveautés'); } - public function testBodyText() { + /** @test */ + public function bodyTextShouldBeNotreSelectionDuMois() { $this->assertQueryContentContains('p', 'Notre sélection du mois Hoho'); } @@ -1016,6 +1028,27 @@ class Admin_NewsletterControllerPreviewActionTest extends Admin_NewsletterContro } +/** @see http://forge.afi-sa.fr/issues/91864 */ +class Admin_NewsletterControllerPreviewActionWithoutArticlesSelectionTest + extends Admin_NewsletterControllerPreviewActionTestCase { + + public function setUp() { + parent::setUp(); + Class_Newsletter::find(3) + ->updateAttributes(['articles_categories_ids' => '', + 'articles_ids' => '']) + ->assertSave(); + + $this->dispatch('/admin/newsletter/preview/id/3', true); + } + + + /** @test */ + public function shouldNotCallArticlesGetByPreferences() { + $this->assertFalse(Class_Article::getLoader()->methodHasBeenCalled('getArticlesByPreferences')); + } +} + class Admin_NewsletterControllerSendTestActionTest extends Admin_NewsletterControllerTestCase {