diff --git a/tests/library/Class/NewsletterSubscriptionTest.php b/tests/library/Class/NewsletterSubscriptionTest.php deleted file mode 100644 index cf29ad107a918bce079901ee18d2be923462b92d..0000000000000000000000000000000000000000 --- a/tests/library/Class/NewsletterSubscriptionTest.php +++ /dev/null @@ -1,399 +0,0 @@ -<?php -/** - * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved. - * - * BOKEH is free software; you can redistribute it and/or modify - * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by - * the Free Software Foundation. - * - * There are special exceptions to the terms and conditions of the AGPL as it - * is applied to this software (see README file). - * - * BOKEH is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * 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 - */ -require_once 'Class/Newsletter.php'; -require_once 'Class/NewsletterSubscription.php'; -require_once 'Class/Users.php'; - -class UserSubscriptionsFixtures { - public static function miles() { - return array('ID_USER' => 1, - 'LOGIN' => 'mdavis', - 'ROLE' => 'invite', - 'ROLE_LEVEL' => 0, - 'PASSWORD' => 'nifnif', - 'ID_SITE' => 1, - 'NOM' => 'Davis', - 'PRENOM' => 'Miles'); - } - - public static function truffaz() { - return array('ID_USER' => 34, - 'LOGIN' => 'etruffaz', - 'ROLE' => 'invite', - 'ROLE_LEVEL' => 0, - 'PASSWORD' => 'nafnaf', - 'ID_SITE' => 1, - 'NOM' => 'Truffaz', - 'PRENOM' => 'Erik'); - } - - public static function marcus() { - return array('ID_USER' => 18, - 'LOGIN' => 'mmiller', - 'ROLE' => 'invite', - 'ROLE_LEVEL' => 0, - 'PASSWORD' => 'noufnouf', - 'ID_SITE' => 1, - 'NOM' => 'Miller', - 'PRENOM' => 'Marcus'); - } - - public static function marcus_instance() { - return Class_Users::getLoader()->newFromRow(UserSubscriptionsFixtures::marcus()); - } - - - public static function concerts() { - return array('id' => 26, - 'titre' => 'Concerts', - 'contenu' => 'Du festival de Jazz'); - } - - public static function concerts_instance() { - return Class_Newsletter::getLoader()->newFromRow(UserSubscriptionsFixtures::concerts()); - } - - public static function animations() { - return array('id' => 32, - 'titre' => 'Animations', - 'contenu' => 'Des noctibules'); - } - - public static function animations_instance() { - return Class_Newsletter::getLoader()->newFromRow(UserSubscriptionsFixtures::animations()); - } - - public static function marcus_subscriptions() { - return array('id' => 12, - 'user_id' => 18, - 'newsletter_id' => 26); - } - - public static function marcus_subscriptions_instance() { - return Class_Newsletter::getLoader()->newFromRow(UserSubscriptionsFixtures::marcus_subscriptions()); - } -} - - -class NewSubscriptionTest extends ModelTestCase { - public function setUp() { - $this->subscription = new Class_NewsletterSubscription(); - } - - public function testUserReturnsNull() { - $this->assertEquals(null, $this->subscription->getUser()); - } - - public function testNewsletterReturnsNull() { - $this->assertEquals(null, $this->subscription->getNewsletter()); - } -} - - -class MarcusSubscriptionTest extends ModelTestCase { - public function setUp() { - $this->_setFindExpectation('Class_NewsletterSubscription', - UserSubscriptionsFixtures::marcus_subscriptions(), - 12); - - $this->marcus_newsletter = Class_NewsletterSubscription::getLoader()->find(12); - } - - public function testSubscriptionUserIdIs18() { - $this->assertEquals(18, $this->marcus_newsletter->getUserId()); - } - - - public function testUserReturnsMarcus() { - $this->_setFindExpectation('Class_Users', UserSubscriptionsFixtures::marcus(), 18); - - $marcus = $this->marcus_newsletter->getUser(); - $this->assertEquals('Miller', $marcus->getNom()); - } - - - public function testNewsletterReturnsConcerts() { - $this->_setFindExpectation('Class_Newsletter', UserSubscriptionsFixtures::concerts(), 26); - - $nl = $this->marcus_newsletter->getNewsletter(); - $this->assertEquals('Concerts', $nl->getTitre()); - } -} - - -abstract class AbstractFindAllByTestCase extends ModelTestCase { - public function setUp() { - $this->select = new Zend_Db_Table_Select(new Storm_Model_Table(array('name' => 'newsletters_users'))); - $rs_subscriptions = $this->_buildRowset(array(UserSubscriptionsFixtures::marcus_subscriptions())); - - $tbl_nls_users = $this->_buildTableMock('Class_NewsletterSubscription', array('fetchAll', 'select')); - - $tbl_nls_users - ->expects($this->once()) - ->method('select') - ->will($this->returnValue($this->select)); - - $tbl_nls_users - ->expects($this->once()) - ->method('fetchAll') - //->with($this->select) - ->will($this->returnValue($rs_subscriptions)); - } - - public function testExpectedSubscriptionInstance() { - $this->assertEquals(18, $this->subscriptions[0]->getUserId()); - $this->assertEquals(26, $this->subscriptions[0]->getNewsletterId()); - } - - public function testOneSubscriptionReturned() { - $this->assertEquals(1, count($this->subscriptions)); - } -} - - -class FindAllByNewsletterTest extends AbstractFindAllByTestCase { - public function setUp() { - parent::setUp(); - $concerts = Class_Newsletter::getLoader()->newFromRow(UserSubscriptionsFixtures::concerts()); - $this->subscriptions = Class_NewsletterSubscription::getLoader() - ->findAllBy(array('role' => 'newsletter', - 'model' => $concerts)); - } - - public function testExpectedSQLQuery() { - $this->assertEquals('SELECT `newsletters_users`.* FROM `newsletters_users` WHERE (newsletter_id=26)', - $this->select->assemble()); - } -} - - -class FindAllByUserTest extends AbstractFindAllByTestCase { - public function setUp() { - parent::setUp(); - $marcus = Class_Users::getLoader()->newFromRow(UserSubscriptionsFixtures::marcus()); - - $this->subscriptions = Class_NewsletterSubscription::getLoader() - ->findAllBy(array('role' => 'user', - 'model' => $marcus)); - } - - public function testExpectedSQLQuery() { - $this->assertEquals('SELECT `newsletters_users`.* FROM `newsletters_users` WHERE (user_id=18)', - $this->select->assemble()); - } -} - - - -class UserWithOneSubscriptionTest extends Storm_Test_ModelTestCase { - public function setUp() { - $this->concerts = UserSubscriptionsFixtures::concerts_instance(); - $this->marcus = UserSubscriptionsFixtures::marcus_instance(); - $this->marcus_subscription = Class_NewsletterSubscription::newInstanceWithId(2, - ['user' => $this->marcus, - 'newsletter' => $this->concerts]); - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_NewsletterSubscription') - ->whenCalled('save')->answers(true) - ->whenCalled('delete')->answers(true); - - - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Users') - ->whenCalled('delete') - ->answers(true) - ->whenCalled('save') - ->answers(true); - } - - - protected function _setLoaderFindAllReturnsSubscriptionFor($params) { - Class_NewsletterSubscription::whenCalled('findAllBy') - ->with($params) - ->answers([$this->marcus_subscription]); - } - - - public function testMarcusSubscriptions() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'user', - 'model' => $this->marcus)); - - $subscriptions = $this->marcus->getSubscriptions(); - $this->assertEquals(array($this->marcus_subscription), $subscriptions); - } - - - public function testConcertsNewsletterSubscriptions() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'newsletter', - 'model' => $this->concerts)); - $subscriptions = $this->concerts->getSubscriptions(); - - $this->assertEquals(array($this->marcus_subscription), $subscriptions); - } - - - public function testDeleteMarcusDeletesSubscriptions() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'user', - 'model' => $this->marcus)); - - $this->marcus->delete(); - $this->assertTrue(Class_NewsletterSubscription::methodHasBeenCalled('delete')); - } - - - public function testSavingMarcusWithSubscriptionsRemovedDeleteThem() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'user', - 'model' => $this->marcus)); - - $this->marcus->setSubscriptions(array()); - - $this->marcus->save(); - - $this->assertTrue(Class_Users::methodHasBeenCalled('save')); - } - - - public function testSavingMarcusWithNewslettersRemovedDeleteSubscription() { - Class_NewsletterSubscription::whenCalled('findAllBy')->answers([$this->marcus_subscription]); - - $this->marcus->removeNewsletter($this->concerts); - - $this->marcus->save(); - $this->assertTrue(Class_NewsletterSubscription::methodHasBeenCalled('delete')); - } - - - public function testSavingMarcusWithNewslettersSetSubscription() { - Class_NewsletterSubscription::whenCalled('findAllBy')->answers([$this->marcus_subscription]); - - $animations = UserSubscriptionsFixtures::animations_instance(); - - $this->marcus->setNewsletters(array($animations)); - $this->marcus->save(); - - $subscriptions = $this->marcus->getSubscriptions(); - $this->assertEquals($animations, $subscriptions[0]->getNewsletter()); - $this->assertTrue(Class_NewsletterSubscription::methodHasBeenCalled('save')); - } - - - public function testSavingMarcusWithNewslettersAddedAddSubscription() { - Class_NewsletterSubscription::whenCalled('findAllBy')->answers([$this->marcus_subscription]); - - $animations = UserSubscriptionsFixtures::animations_instance(); - - $this->marcus->addNewsletter($animations); - - $this->marcus->save(); - - $this->marcus->removeNewsletter($this->concerts); - - $subscriptions = $this->marcus->getSubscriptions(); - $this->assertEquals($animations, $subscriptions[0]->getNewsletter()); - $this->assertTrue(Class_NewsletterSubscription::methodHasBeenCalled('save')); - } - - - /** @test **/ - public function createUserMarcusWithAutoSubscribeCheckedOnConcertShouldAddMarcusToSubscriber() { - - Class_NewsletterSubscription::beVolatile(); - - $news = $this->fixture('Class_Newsletter', - ['id' => 1, - 'titre' => 'News']); - $news->setAutoSubscribe(true)->save(); - - $marcus = $this->fixture('Class_Users', - ['id' => null, - 'login' => 'Marcus', - 'password' => 'pwd', - 'role_level' => ZendAfi_Acl_AdminControllerRoles::ADMIN_PORTAIL]); - - $this->assertContains($news, $marcus->getNewsletters()); - - } - - - /** @test **/ - public function createUserMarcusWithAutoSubscribeNotCheckedOnConcertShouldNotAddMarcusToSubscriber() { - - $this->concerts->setAutoSubscribe(false); - - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter'); - Class_Newsletter::whenCalled('findAllBy') - ->with(['auto_subscribe'=>true]) - ->answers([]); - - $marcus = Class_Users::newInstance(['login'=>'Marcus', - 'password'=>'vue']); - $marcus->save(); - $this->assertNotContains($this->concerts, $marcus->getNewsletters()); - - } - - - /** @test **/ - public function oldUserMarcusWithAutoSubscribeCheckedOnConcertShouldNotAddMarcusToSubscriber() { - - $this->concerts->setAutoSubscribe(true); - - Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter'); - Class_Newsletter::whenCalled('findAllBy') - ->with(['auto_subscribe'=>true]) - ->never(); - - $marcus = Class_Users::newInstanceWithId(2,['login'=>'Marcus', - 'password'=>'vue']); - $marcus->save(); - $this->assertNotContains($this->concerts, $marcus->getNewsletters()); - - } - - - public function testSavingMarcusWithNewSubscriptionsAddThem() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'user', - 'model' => $this->marcus)); - - $new_subscription = $this->createMock('NewsletterSubscription', - array('save', '_set')); - - $new_subscription - ->expects($this->atLeastOnce()) - ->method('_set') - ->with('user', $this->equalTo($this->marcus)); - - $this->marcus->addSubscription($new_subscription); - } - - - - public function testDeleteConcertsDeletesSubscriptions() { - $this->_setLoaderFindAllReturnsSubscriptionFor(array('role' => 'newsletter', - 'model' => $this->concerts)); - - $this->concerts->delete(); - $this->assertTrue(Class_NewsletterSubscription::methodHasBeenCalled('delete')); - } -} - - - - -?>