diff --git a/library/Class/Notice.php b/library/Class/Notice.php index e92a99b63ef61d3bb4091e3682705ad01262c575..1618437aa67b0eb8bd05db0b922ebcfb9731d760 100644 --- a/library/Class/Notice.php +++ b/library/Class/Notice.php @@ -90,7 +90,9 @@ class Class_Notice extends Storm_Model_Abstract { protected $_default_attribute_values = array('type_doc' => 0, 'annee' => null, 'isbn' => null, - 'ean' => null); + 'ean' => null, + 'tome_alpha' => '', + 'clef_chapeau' => ''); public static function getLoader() { diff --git a/library/Class/WebService/AllServices.php b/library/Class/WebService/AllServices.php index 4e7b4fc460717580132da4c47099596c497bb737..15fc1e5cdc056b49cc93ffeca7b5c97156b0e551 100644 --- a/library/Class/WebService/AllServices.php +++ b/library/Class/WebService/AllServices.php @@ -121,11 +121,13 @@ class Class_WebService_AllServices { static function uploadVignetteForNotice($url, $id) { $notice = Class_Notice::find($id); - $result = static::runServiceAfiUploadVignette(['isbn' => $notice->getIsbn(), - 'type_doc' => $notice->getTypeDocPergame(), - 'titre' => $notice->getTitrePrincipal(), - 'auteur' => $notice->getAuteurPrincipal(), - 'image' => $url]); + $result = static::runServiceAfiUploadVignette(array_filter(['isbn' => $notice->getIsbn(), + 'type_doc' => $notice->getTypeDocPergame(), + 'titre' => $notice->getTitrePrincipal(), + 'auteur' => $notice->getAuteurPrincipal(), + 'image' => $url, + 'tome_alpha' => $notice->getTomeAlpha(), + 'clef_chapeau' => $notice->getClefChapeau()])); if ('ok' !== $result['statut']) return $result['message']; diff --git a/tests/application/modules/admin/controllers/UploadControllerTest.php b/tests/application/modules/admin/controllers/UploadControllerTest.php index 285cd01224b2e7f60ee96d96f18680623ad6b48b..239fed1c6bcaefd6ef7491d6fd0707b8c03c0b4e 100644 --- a/tests/application/modules/admin/controllers/UploadControllerTest.php +++ b/tests/application/modules/admin/controllers/UploadControllerTest.php @@ -167,6 +167,9 @@ class UploadControllerVignetteNoticeActionTest extends AbstractControllerTestCas abstract class UploadControllerVignetteNoticeActionPostTestCase extends AbstractControllerTestCase { + protected $_http_client; + protected $_notice; + public function setUp() { parent::setUp(); @@ -175,13 +178,20 @@ abstract class UploadControllerVignetteNoticeActionPostTestCase extends Abstract ->answers(true); - Class_Notice::newInstanceWithId(12345) + $this->_notice = Class_Notice::newInstanceWithId(12345) ->setIsbn('0123456789') ->setTypeDoc(Class_TypeDoc::LIVRE) ->setTitrePrincipal('Harry Potter') ->setAuteurPrincipal('J.K.Rowling'); Class_CosmoVar::newInstanceWithId('url_services')->setValeur('http://cache.org'); + + Class_WebService_AllServices::setHttpClient($this->_http_client = Storm_Test_ObjectWrapper::mock()); + } + + + public function tearDown() { + Class_WebService_AllServices::setHttpClient(null); } } @@ -191,34 +201,26 @@ abstract class UploadControllerVignetteNoticeActionPostTestCase extends Abstract class UploadControllerVignetteNoticeActionPostValidUrlTest extends UploadControllerVignetteNoticeActionPostTestCase { public function setUp() { parent::setUp(); - Class_WebService_AllServices::setHttpClient($http_client = Storm_Test_ObjectWrapper::mock() - ->whenCalled('open_url') - ->with('http://cache.org?isbn=0123456789' - .'&type_doc=1' - .'&titre='.urlencode('Harry Potter') - .'&auteur='.urlencode('J.K.Rowling') - .'&image='.urlencode('http://upload.wikimedia.org/potter.jpg') - .'&src='.Class_WebService_AllServices::createSecurityKey() - .'&action=12' - ) - ->answers(json_encode(['vignette' => 'http://cache.org/potter_thumb.jpg', - 'image' => 'http://cache.org/potter.jpg', - 'statut' => 'ok']) - ) - ->beStrict() - ); + + $this->_http_client + ->whenCalled('open_url') + ->with('http://cache.org?isbn=0123456789' + .'&type_doc=1' + .'&titre='.urlencode('Harry Potter') + .'&auteur='.urlencode('J.K.Rowling') + .'&image='.urlencode('http://upload.wikimedia.org/potter.jpg') + .'&src='.Class_WebService_AllServices::createSecurityKey() + .'&action=12') + ->answers(json_encode(['vignette' => 'http://cache.org/potter_thumb.jpg', + 'image' => 'http://cache.org/potter.jpg', + 'statut' => 'ok'])) + ->beStrict(); $this->postDispatch('/admin/upload/vignette-notice/id/12345', ['url_vignette' => 'http://upload.wikimedia.org/potter.jpg'], true); } - - public function tearDown() { - Class_WebService_AllServices::setHttpClient(null); - } - - /** @test */ public function noticeShouldHaveBeenSaved() { $this->assertEquals('0123456789', Class_Notice::getFirstAttributeForLastCallOn('save')->getIsbn()); @@ -240,6 +242,47 @@ class UploadControllerVignetteNoticeActionPostValidUrlTest extends UploadControl +class UploadControllerVignetteNoticeActionPostValidUrlForPeriodiqueTest extends UploadControllerVignetteNoticeActionPostTestCase { + public function setUp() { + parent::setUp(); + + $this->_notice + ->setTypeDoc(Class_TypeDoc::PERIODIQUE) + ->setTitrePrincipal("Science et vie") + ->setAuteurPrincipal('') + ->setTomeAlpha('1118') + ->setClefChapeau('SCIENCE VIE'); + + $this->_http_client + ->whenCalled('open_url') + ->with('http://cache.org?isbn=0123456789' + .'&type_doc=2' + .'&titre='.urlencode('Science et vie') + .'&image='.urlencode('http://upload.wikimedia.org/science_vie.jpg') + .'&tome_alpha=1118' + .'&clef_chapeau='.urlencode('SCIENCE VIE') + .'&src='.Class_WebService_AllServices::createSecurityKey() + .'&action=12') + ->answers(json_encode(['vignette' => 'http://cache.org/science_vie_thumb.jpg', + 'image' => 'http://cache.org/science_vie.jpg', + 'statut' => 'ok'])) + ->beStrict(); + + $this->postDispatch('/admin/upload/vignette-notice/id/12345', + ['url_vignette' => 'http://upload.wikimedia.org/science_vie.jpg'], + true); + } + + + /** @test */ + public function pageShouldDisplayVignetteTransferee() { + $this->assertXPathContentContains('//p', 'La vignette a bien été transférée'); + } +} + + + + class UploadControllerVignetteNoticePostServeurCacheErrorTest extends UploadControllerVignetteNoticeActionPostTestCase { public function setUp() { parent::setUp();