diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php index 548939d463d3ad9a3273c2676b1321f5d76c0712..ab0fd1212384549051c40065669aa040692ae8fe 100644 --- a/application/modules/opac/controllers/AuthController.php +++ b/application/modules/opac/controllers/AuthController.php @@ -352,7 +352,6 @@ class AuthController extends ZendAfi_Controller_Action { protected function newsletterRegisterUser($newsletter, $user) { - Class_NewsletterSubscription::newWith($newsletter, $user) ? $this->view->message = $this->view->_('Vous avez bien été abonné à la newsletter: ').$newsletter->getTitre().$this->view->_(' avec l\'adresse suivante: ').$user->getMail() : $this->view->message = $this->view->_('Erreur lors de l\inscription à la newsletter.'); diff --git a/library/Class/Users.php b/library/Class/Users.php index 915cbb2d3520210ef49e8239269d6e6262f641b5..c7de62502ea216c40774bd8bb1512835422d62e3 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -1153,9 +1153,10 @@ class Class_Users extends Storm_Model_Abstract { if(!$this->isNew()) return $this; - $newletters = Class_Newsletter::findAllBy(['auto_subscribe'=>true]); - $this->setNewsletters($newletters); - + if($this->getRoleLevel() > ZendAfi_Acl_AdminControllerRoles::INVITE){ + $newletters = Class_Newsletter::findAllBy(['auto_subscribe'=>true]); + $this->setNewsletters($newletters); + } } diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php index 16e07f7b236fd28ead281dbabaa6322b122deb85..78fb7e2330884cb1dc32d9a7aeae978b34741c65 100644 --- a/tests/application/modules/opac/controllers/AuthControllerTest.php +++ b/tests/application/modules/opac/controllers/AuthControllerTest.php @@ -1795,6 +1795,8 @@ class AuthControllerNewsletterActiveUserTest extends AuthControllerNoBodyLoggedT Class_NewsletterSubscription::beVolatile(); + Class_Users::beVolatile(); + $this->fixture('Class_Newsletter',[ 'id' => 1, 'titre' => 'News of the month']); @@ -2004,4 +2006,51 @@ class AuthControllerNewsletterRegisterSendMailWrongMailConfigurationTest extends $this->assertXPathContentContains('//span[@class="error"]', 'Une erreur est survenue à l\'envoi du mail de confirmation. Veuillez réessayer. Si le problème persiste, veuillez contacter votre médiathèque.'); } } + + + +class AuthControllerNewsletterRegisterWithAutoSubscribeNewsletterTest extends AbstractControllerTestCase { + public function setUp() { + parent::setUp(); + Class_NewsletterSubscription::beVolatile(); + Class_Users::beVolatile(); + $this->fixture('Class_UsersNonValid', [ + 'id' => 1, + 'login' => 'future@i.am', + 'mail' => 'future@i.am', + 'password' => 'random', + 'cle' => '12345678']); + + $daily_news = $this->fixture('Class_Newsletter', + ['id' => 1, + 'titre' => 'Daily News']); + + $daily_news->setAutoSubscribe(true)->save(); + + $weekly_news = $this->fixture('Class_Newsletter', + ['id' => 2, + 'titre' => 'Weekly News']); + + $this->dispatch('opac/auth/newsletter-active-user/c/12345678/id/1', true); + } + + + /** @test */ + public function onlyOneSubscriptionsShouldBeSaved() { + $this->assertEquals(1, count(Class_NewsletterSubscription::findAll())); + + } + + + /** @test */ + public function newsletterSubscriptionShouldContainsDailyNewsNews() { + $this->assertEquals('Daily News', Class_NewsletterSubscription::find(1)->getNewsletter()->getTitre()); + } + + + /** @test */ + public function messageShouldBeAsExpected() { + $this->assertXPathContentContains('//p', "Vous avez bien été abonné à la newsletter"); + } +} ?> \ No newline at end of file