Newer
Older
/**
* Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
*
* 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).
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
require_once 'tests/fixtures/KohaFixtures.php';

gloas
committed
class AbonneControllerSuggestionAchatAddFormTest extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Class_CosmoVar::newInstanceWithId('types_docs', ['liste' => '']);
$this->fixture('Class_TypeDoc', ['id' => 6 ,
'label' => 'Blueray',
'famille_id' => Class_CodifTypeDoc::VIDEO]);
$this->fixture('Class_Bib', ['id' => 11,
'libelle' => 'Bib de la plage']);
Class_Profil::getCurrentProfil()
->setCfgModules(['abonne' => ['suggestion-achat-add' => ['help-text' => 'Entrez votre suggestion']]]);
$this->dispatch('/opac/abonne/suggestion-achat-add', true);
}
/** @test */
public function pageShouldContainsDivHelpTextWithEntrezVotreSuggestion() {
$this->assertXPathContentContains('//div[@class="help-text"]', 'Entrez votre suggestion');
}
/** @test */
public function pageTitleShouldBeSuggestionAchat() {
$this->assertXPathContentContains('//title', 'Suggérer un achat');
}
/** @test */
public function boiteShouldHaveTitleSuggestionAchat() {
$this->assertXPathContentContains('//div[@class="boiteMilieu"]//h1', 'Suggérer un achat');
}
/** @test */
public function formShouldContainsInputForTitre() {
$this->assertXPath('//form//input[@name="titre"][@placeholder="ex: Harry Potter à l\'école des sorciers"]');
}
/** @test */
public function formShouldContainsSelectForDocumentType() {
$this->assertXPath('//form//select[@name="type_doc_id"]');
}
/** @test */
public function typeDocBlueRayShouldBePresent() {
$this->assertXPath('//form//select[@name="type_doc_id"]//option[@value="6"][@label="Blueray"]');
}
/** @test */
public function rssShouldNotBePresent() {
$this->assertNotXpath('//form//select[@name="type_doc_id"]//option[@value="9"][@label="fils rss"]');
}

Ghislain Loas
committed
/** @test */
public function formShouldContainsInputForAuteur() {
$this->assertXPath('//form//input[@name="auteur"][@placeholder="ex: Joanne Kathleen Rowling"]');
}
/** @test */
public function formShouldContainsInputForDescriptionUrl() {
$this->assertXPath('//form//input[@type="url"][@name="description_url"][@placeholder="ex: http://fr.wikipedia.org/wiki/Harry_Potter_à_l\'école_des_sorciers"]');
}
/** @test */
public function formShouldContainsInputForISBN() {
$this->assertXPath('//form//input[@name="isbn"][@placeholder="ex: 2-07-054127-4"]');
}
/** @test */
public function libraryShouldBeSetByDefault() {
$this->assertXPath('//form//select[@name="bib_id"]//option[@value="11"][@selected="selected"]');
}
/** @test */
public function formShouldContainsTextAreaForCommentaire() {
$this->assertXPath('//form//textarea[@name="commentaire"]');
}
/** @test */
public function formShouldContainsSubmitButtonEnvoyer() {
$this->assertXPath('//form//input[@type="submit"][@value="Envoyer"]');
}
class AbonneControllerSuggestionAchatAddFormMultipleBibsTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
$int_bib = $this->fixture(Class_IntBib::class,
['id' => 21,
'nom_court' => 'plage']);
$this->fixture(Class_Bib::class,
['id' => 21,
'libelle' => 'Bib de la plage',
'int_bib' => $int_bib]);
$this->fixture(Class_Bib::class,
['id' => 12,
'libelle' => 'Bib de la plage 2']);
$user = $this->fixture(Class_Users::class,
['id' => 3,
'login' => 'test',
'password' => 'test',
'id_site' => 12]);
ZendAfi_Auth::getInstance()->logUser($user);
$this->dispatch('/opac/abonne/suggestion-achat-add');
/** @test */
public function formShouldContainsSelectForLibrary() {
$this->assertXPath('//form//select[@name="bib_id"]');
}
/** @test */
public function librarySelectShouldContainBibDeLaPlage() {
$this->assertXPath('//form//select[@name="bib_id"]//option[@value="21"][@label="Bib de la plage"]/following-sibling::option[@value="12"][@label="Bib de la plage 2"]');
/** @test */
public function noLibraryShouldHaveBeenSelectedByDefault() {
$this->assertXPath('//form//select[@name="bib_id"]//option[1][@value="0"]');
}
}
class AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaNotCommunityTest extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
$sigb_plage = $this->fixture('Class_IntBib',
[
'id' => 3,
'comm_params' => ['url_serveur' => 'http://plage.com/cgi-bin/koha/ilsdi.pl'],
'comm_sigb' => Class_IntBib::COM_KOHA_LEGACY
]);
$this->fixture('Class_Bib', ['id' => 12,
'libelle' => 'Bib de la plage 2',
'int_bib' => $sigb_plage]);
$user = $this->fixture('Class_Users', [
'id' => 3,
'login' => 'test',
'password' => 'test',
'id_site' => 12,
'int_bib' => $sigb_plage,
]);
ZendAfi_Auth::getInstance()->logUser($user);
$this->dispatch('/opac/abonne/suggestion-achat-add', true);
}
/** @test */
public function formShouldContainsTextAreaForCommentaire() {
$this->assertXPath('//form//textarea[@name="commentaire"]');
}
/** @test */
public function pageShouldNotContainsDivHelpText() {
$this->assertNotXPath('//div[@class="help-text"]');
}
abstract class AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
$sigb_plage =
$this->fixture(Class_IntBib::class,
['id' => 3,
'comm_params' => ['url_serveur' => 'http://plage.com/cgi-bin/koha/ilsdi.pl',
'api_user' => 'koha_admin',
'api_pass' => 'koha_password'],
'comm_sigb' => Class_IntBib::COM_KOHA
]);
$this->fixture(Class_Bib::class,
['id' => 11,
'libelle' => 'Bib de la plage',
'int_bib' => $sigb_plage]);
$this->fixture(Class_Bib::class,
['id' => 12,
'libelle' => 'Bib de la plage 2',
'int_bib' => $sigb_plage]);
$this->fixture(Class_Bib::class,
['id' => 14,
'libelle' => 'Bib de la montagne']);
$istres =
$this->fixture(Class_CodifAnnexe::class,
['id' => 15,
'libelle' => 'Istres',
'id_origine' => 'IST']);
$borrower = new Class_WebService_SIGB_Emprunteur('2341', 'test');
$borrower->setLibraryCode('IST');
$user = $this->fixture(Class_Users::class,
['id' => 3,
'login' => 'test',
'password' => 'test',
'id_site' => 12,
'id_sigb' => 'azerty',
'int_bib' => $sigb_plage,
'fiche_sigb' => ['type_comm' => 0,
'fiche' => $borrower]]);
ZendAfi_Auth::getInstance()->logUser($user);
$this->mock_web_client = $this->mock();
$sigb_comm = Class_IntBib::find(3)->getSIGBComm();
$sigb_comm->setWebClient($this->mock_web_client);
}
public function tearDown() {
Class_IntBib::find(3)->getSIGBComm()->setWebClient(null);
parent::tearDown();
}
class AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTest
extends AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase {
public function setUp() {
parent::setup();
$this->dispatch('/opac/abonne/suggestion-achat-add');
public function formShouldContainsTextAreaForNote() {
$this->assertXPath('//form//textarea[@name="Note"]');
/** @test */
public function formShouldContainsInputForTitle() {
$this->assertXPath('//form//input[@name="Title"][@placeholder="ex: Harry Potter à l\'école des sorciers"]');
}
/** @test */
public function formShouldContainsInputForAuthor() {
$this->assertXPath('//form//input[@name="Author"][@placeholder="ex: Joanne Kathleen Rowling"]');
}
/** @test */
public function formShouldContainsInputForIsbn() {
$this->assertXPath('//form//input[@name="Isbn"][@placeholder="ex: 2-07-054127-4"]');
}
/** @test */
public function formShouldContainsInputForPublicationYear() {
$this->assertXPath('//form//input[@name="PublicationYear"][@placeholder="2015"]');
}
/** @test */
public function formShouldContainsBranchNameIstres() {
$this->assertXPath('//form//input[@name="BranchName"][@value="Istres"]');
}
/** @test */
public function formShouldContainsSelectForDocType() {
$this->assertXPathContentContains('//form//select[@name="DocType"]//option[@value="3"]',
'Disques');
}
/** @test */
public function docTypeForDiscsShouldBeAtFirstPlace() {
$this->assertXPathContentContains('//form//select[@name="DocType"]//option[1]', 'Disques');
}
/** @test */
public function defaultDocTypeShouldBeBook() {
$this->assertXPathContentContains('//form//select[@name="DocType"]//option[@value="1"][@selected]',
'Livres');
}
class AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaCommunityPostTest extends AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase {
public function setUp() {
parent::setUp();
->whenCalled('postRawData')
->with('http://plage.com/api/v1/suggestions',
'{"suggested_by":"2341","title":"Harry Potter","item_type":"Livres","author":"J.K.Rowling","isbn":"2-07-0541 27_4","note":"Je veux le lire","publication_year":"2014","library_id":"IST"}',
Class_WebService_SIGB_Koha_CommunityService::JSON_ENCODED,
['auth' => ['user' => 'koha_admin',
'password' => 'koha_password']])
->answers(KohaCommunityFixtures::suggestionSuccess())
->beStrict();
$sigb_comm = Class_IntBib::find(3)->getSIGBComm();
$sigb_comm->setWebClient($this->mock_web_client);
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['Title' => 'Harry Potter',
'Author' => 'J.K.Rowling',
'Isbn' => '2-07-0541 27_4',
'Note' => 'Je veux le lire',
'BranchCode' => 'IST',
/** @test */
public function dataShouldHaveBeenPosted() {
$this->assertTrue($this->mock_web_client->methodHasBeenCalled('postRawData'));
}
/** @test */
public function dataShouldBeJsonEncoded() {
$datas = json_decode($this->mock_web_client->getAttributesForLastCallOn('postRawData')[1],
$this->assertEquals(['title' => 'Harry Potter',
'item_type' => 'Livres',
'author' => 'J.K.Rowling',
'isbn' => '2-07-0541 27_4',
'publication_year' => '2014',
'suggested_by' => '2341',
'library_id' => 'IST'],
class AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaPostWrongDataTest
extends AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase {
public function setUp() {
parent::setUp();
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['Title' => '',
'Author' => '',
'Isbn' => '',
'PublicationYear' => 'toto',
'submit' => 'Envoyer']);
}
/** @test */
public function inputTitleShouldHaveErrorRequiredValue() {
$this->assertXPathContentContains('//input[@id="Title"]/following-sibling::ul/li',
'Une valeur est requise');
}
/** @test */
public function inputAuthorShouldHaveErrorRequiredValue() {
$this->assertXPathContentContains('//input[@id="Author"]/following-sibling::ul/li',
'Une valeur est requise');
}
/** @test */
public function inputPublicationYearShouldHaveErrorBeInt() {
$this->assertXPathContentContains('//input[@id="PublicationYear"]/following-sibling::ul/li',
"'toto' n'est pas un nombre entier");
}
abstract class AbonneControllerSuggestionAchatAddPostTestCase extends AbstractControllerTestCase {
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
protected
$_suggestion,
$_storm_default_to_volatile = true,
$_mail;
protected function _loginHook($account) {
$account->username = 'Arnaud';
$account->ID_USER = 666;
}
public function setUp() {
parent::setUp();
Class_CosmoVar::newInstanceWithId('types_docs', ['liste' => '']);
$codif_type_doc=$this->fixture('Class_CodifTypeDoc', ['id' => 102,
'famille_id' => Class_CodifTypeDoc::LIVRE,
'bibliotheques' => '2;3',
'annexes' => '4;8',
'sections' => '9;10']);
$this->fixture('Class_TypeDoc', ['id' => Class_TypeDoc::LIVRE,
'codif_type_doc' => $codif_type_doc,
'label'=> 'Livres Numériques']);
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_SuggestionAchat')
->whenCalled('save')
->willDo(
function($suggestion){
$this->_suggestion = $suggestion->setId(66);
});
}
}
class AbonneControllerSuggestionAchatAddPostValidDataTest extends AbonneControllerSuggestionAchatAddPostTestCase {
public function setUp() {
parent::setUp();
$this->fixture('Class_Bib', ['id' => 11,
'libelle' => 'Bib de la plage',
'mail' => 'albert@jean.fr',
'mail_suggestions' => '']);
$mock_transport = new MockMailTransport();
Zend_Mail::setDefaultTransport($mock_transport);
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['titre' => 'Harry Potter',
'auteur' => 'J.K.Rowling',
'type_doc_id' => Class_TypeDoc::LIVRE,
'description_url' => 'http://harrypotter.fr',
'isbn' => '2-07-0541 27_4',
'bib_id' => '11',
'commentaire' => 'Je veux le lire',
'submit' => 'Envoyer']);
$this->_mail = $mock_transport->sent_mail;
}
/** @test */
public function newSuggestionShouldHaveTitreHarryPotter() {
$this->assertEquals('Harry Potter', $this->_suggestion->getTitre());
}
/** @test */
public function newSuggestionShouldHaveAuteurJKRowling() {
$this->assertEquals('J.K.Rowling', $this->_suggestion->getAuteur());
}
/** @test */
public function newSuggetionShouldHaveDescriptionUrlHarryPotterDotFr() {
$this->assertEquals('http://harrypotter.fr', $this->_suggestion->getDescriptionUrl());
}
/** @test */
public function newSuggestionsShouldHaveIsbn2070541274() {
$this->assertEquals('2070541274', $this->_suggestion->getIsbn());
}
/** @test */
public function newSuggestionsShouldHaveDocumentType2() {
$this->assertEquals('Livres Numériques', $this->_suggestion->getTypeDoc()->getLibelle());
}
/** @test */
public function shouldNotHaveSubmitAttribute() {
$this->assertNotContains('submit', array_keys($this->_suggestion->toArray()));
}
/** @test */
public function newSuggestionShouldHaveCommentaireJeVeuxLeLire() {
$this->assertEquals('Je veux le lire', $this->_suggestion->getCommentaire());
}
/** @test */
public function newSuggestionShouldBelongsToArnaud() {
$this->assertEquals('Arnaud', $this->_suggestion->getUser()->getLogin());
}
/** @test */
public function newSuggetionShouldDateCreationShouldBeToday() {
$this->assertEquals(date('Y-m-d'), $this->_suggestion->getDateCreation());
}
/** @test */
public function responseShouldRedirectToSuggestionAchatId66() {
$this->assertRedirectTo(Class_Url::absolute('/abonne/suggestion-achat'));
/** @test */
public function sentMailSubjectShouldBeSuggestionAchatHarryPotter() {
$this->assertEquals('Suggestion d\'achat: Harry Potter', $this->_mail->getSubject());
}
/** @test */
public function fromShouldBeNoReplyAtLocalhost() {
$this->assertEquals('noreply@localhost', $this->_mail->getFrom());
}

llaffont
committed
/** @test */
public function toShouldBeJeanJeanFr() {
$this->assertEquals('albert@jean.fr', $this->_mail->getRecipients()[0]);
}
/** @test */
public function saveShouldBeNotified() {
$this->assertFlashMessengerContentContains('Suggestion d\'achat enregistrée');
}

llaffont
committed
}
class AbonneControllerSuggestionAchatAddPostWithMailSuggestions extends AbonneControllerSuggestionAchatAddPostTestCase {
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
public function setUp() {
parent::setUp();
$this->fixture('Class_Bib', ['id' => 11,
'libelle' => 'Bib de la plage',
'mail' => 'jean@jean.fr',
'mail_suggestions' => 'jean@jean.fr']);
$mock_transport = new MockMailTransport();
Zend_Mail::setDefaultTransport($mock_transport);
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['titre' => 'Harry Potter',
'auteur' => 'J.K.Rowling',
'type_doc_id' => Class_TypeDoc::LIVRE,
'description_url' => 'http://harrypotter.fr',
'isbn' => '2-07-0541 27_4',
'bib_id' => '11',
'commentaire' => 'Je veux le lire',
'submit' => 'Envoyer']);
$this->_mail = $mock_transport->sent_mail;
}
/** @test */
public function toShouldBeJeanJeanFr() {
$this->assertEquals('jean@jean.fr', $this->_mail->getRecipients()[0]);
}
}

gloas
committed
class AbonneControllerSuggestionAchatAddPostValidDataButNoMailSentTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
protected $_suggestion;
protected $_mail;

llaffont
committed
public function setUp() {
parent::setUp();

llaffont
committed
Class_Users::getIdentity()->setMail('');
Class_Profil::getPortail()->setMailSite('');
Class_Profil::getCurrentProfil()->setMailSite('');

llaffont
committed
$mock_transport = new MockMailTransport();
Zend_Mail::setDefaultTransport($mock_transport);
$mock_transport->onSendDo(function() {throw new Zend_Mail_Exception('some error');});

llaffont
committed
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['titre' => 'Harry Potter',
'description_url' => '',
'type_doc_id' => 2,
'isbn' => '',
'commentaire' => '',
'submit' => 'Envoyer']);
}

llaffont
committed
/** @test */
public function notificationShouldContainsAucunCourrielEnvoye() {
$this->assertFlashMessengerContentContains('Aucun courriel envoyé, erreur: some error');
}

llaffont
committed
/** @test */
public function newSuggestionShouldHaveTitreHarryPotter() {
$this->assertNotNull(Class_SuggestionAchat::findFirstBy(['titre' => 'Harry Potter']));
}

gloas
committed
class AbonneControllerSuggestionAchatAddPostWrongDataTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
Class_Profil::getCurrentProfil()
->setCfgModules(['index' => ['formulairecontact' => ['bib_selector' => 1]]]);
$this->fixture('Class_Bib',
['id' => 2,
'libelle' => 'My Bib',
'mail' => 'my_bib@afi-sa.fr']);
Class_SuggestionAchat::beVolatile();
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['titre' => '',
'auteur' => '',
'bib_id' => '0',
'description_url' => 'h p',
'isbn' => '207',
'commentaire' => '']);
}
/** @test */
public function errorForTitreAndCommentaireShouldBeTitreOuCommentaireRequis() {
$this->assertXPathContentContains('//li', 'Titre ou commentaire requis');
}
/** @test */
public function errorForDescriptionUrlShouldBeURLInvalide() {
$this->assertXPathContentContains('//li', '\'h p\' n\'est pas une URL valide');
}
/** @test */
public function errorForIsbnShouldBeFormatIncorrect() {
$this->assertXPathContentContains('//li', '\'207\' n\'est pas un ISBN valide');
}
/** @test */
public function errorForBibSelectorShouldBePresent() {
$this->assertXPathContentContains('//li', 'Veuillez sélectionner une bibliothèque');
}
}

gloas
committed
class AbonneControllerSuggestionAchatAddDataWithEmptyFieldsNotRequiredTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_SuggestionAchat')
->whenCalled('save')
->answers(true);
$this->postDispatch('/opac/abonne/suggestion-achat-add',
['titre' => 'Millenium',
'auteur' => 'Stieg Larsson',
'type_doc_id' => 2,
'description_url' => '',
'isbn' => '',
'commentaire' => ''],
true);
}
/** @test */
public function responseShouldBeARedirect() {
$this->assertRedirect();
}

gloas
committed
class AbonneControllerSuggestionAchatAddWithIdTest extends AbstractControllerTestCase {
public function setUp() {
parent::setUp();
Class_SuggestionAchat::newInstanceWithId(66);
$this->dispatch('/opac/abonne/suggestion-achat-add/id/66', true);
}
public function pageShouldDisplaySuggestionPriseEnCompte() {
$this->assertXPathContentContains('//p', 'Votre suggestion d\'achat');
}
/** @test **/
public function pageShouldContainsALinkToSuggestionAchat() {
$this->assertXPath('//a[contains(@href, "/abonne/suggestion-achat")]',$this->_response->getBody());
}

gloas
committed
class AbonneControllerSuggestionAchatWithOutSuggestionTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();

gloas
committed
$this->dispatch('/opac/abonne/suggestion-achat', true);
}

gloas
committed
/** @test */
public function pageShouldDisplayLinkForSuggererSuggestion() {
$this->assertXPath('//a[contains(@href,"/abonne/suggestion-achat-add")]');
}

gloas
committed
/** @test **/
public function pageShouldDisplayPasDeSuggestion() {
$this->assertXpathContentContains('//div/span', 'Vous n\'avez pas encore fait de suggestion.',$this->_response->getBody());
}

gloas
committed
}
class AbonneControllerSuggestionAchatWithOneSuggestionTest extends AbstractControllerTestCase {
protected $_storm_default_to_volatile = true;
public function setUp() {
parent::setUp();
$user = $this->fixture('Class_Users',
['id' => 1,
'login' => 'Tom',
'password' => 'pwd']);
ZendAfi_Auth::getInstance()->logUser($user);
$suggestion = $this->fixture('Class_SuggestionAchat',
['id' => 1,
'commentaire' => 'New edition is available.',
'description_url' => '',
'isbn' => '',
'type_doc_id' => Class_CodifTypeDoc::VIDEO]);
$user->setSuggestionAchat([$suggestion])->save();
$this->dispatch('/opac/abonne/suggestion-achat', true);
}
/** @test */
public function loggedUserShouldHaveOneSuggestion() {
$this->assertXPathContentContains('//table[@class="tablesorter"]/thead/th', 'Commentaire');
}
/** @test */
public function suggestionShouldHaveTypeDocDVD() {
$this->assertXPathContentContains('//table/tbody/tr/td', 'DVD');
}
class AbonneControllerSuggestionAchatWithOneKohaSuggestionTest
extends AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase {
public function setUp() {
parent::setUp();
$logger = $this->mock()
->whenCalled('log')->answers(true)
->whenCalled('logError')
->willDo(
function($url, $message) {
throw new RuntimeException($url . ' :: ' . $message);
});
Class_WebService_SIGB_AbstractService::setLogger($logger);
$this->mock_web_client
->whenCalled('open_url')
->with('http://plage.com/api/v1/suggestions?q=' . urlencode('{"suggested_by":"2341"}'),
['auth' => ['user' => 'koha_admin', 'password' => 'koha_password']])
"date" : "2014-04-01T16:08:36+02:00",
"status" : "ASKED",
"suggestion_id" : "6197",
"accepted_date" : "",
"managed_by" : "",
"library_id" : "IST",
"copyright_date" : "0",
"reason" : null,
"total" : "",
"price" : "",
"title" : "En piste ! : Créations en couture pour petits et grands Enfant",
"publication_year" : "2012",
"itemtype" : "",
"place" : "",
"author" : "Laëtitia Gheno",
"suggested_date" : "2013-11-14",
"biblio_id" : "",
"suggested_by" : "2341",
"rejected_date" : null,
"rejected_by" : null,
"patron_reason" : "Je veux le lire",
"volumedesc" : null,
"mailoverseeing" : "0",
"managedby" : ""}]')
$this->fixture('Class_CodifAnnexe',
['id' => 15,
'libelle' => 'Istres',
$this->dispatch('/opac/abonne/suggestion-achat', true);
}
public function tearDown() {
Class_WebService_SIGB_AbstractService::setLogger(null);
parent::tearDown();
}
/** @test */
public function titleShouldBePresent() {
$this->assertXPathContentContains('//td', 'En piste ! : Créations en couture pour petits et grands Enfant');
}
/** @test */
public function authorShouldBePrensent() {
$this->assertXPathContentContains('//td', 'Laëtitia Gheno');
}
/** @test */
public function publicationYearShouldBePresent() {
$this->assertXPathContentContains('//td', '2012');
}
/** @test */
public function libraryShouldBePresent() {
$this->assertXPathContentContains('//td', 'Istres');
}
/** @test */
public function suggestDateShouldBePresent() {
$this->assertXPathContentContains('//td', '2013-11-14');
}
public function noteShouldBePresent() {
$this->assertXPathContentContains('//td', 'Je veux le lire');
}
/** @test */
public function statusShouldBePresent() {
$this->assertXPathContentContains('//td', 'En attente');
}
class AbonneControllerSuggestionAchatWithKohaErrorTest
extends AbonneControllerSuggestionAchatAddFormMultipleBibsAndKohaTestCase {
public function setUp() {
parent::setUp();
$logger = $this->mock()
->whenCalled('log')->answers(true)
->whenCalled('logError')
->willDo(
function($url, $message) {
throw new RuntimeException($url . ' :: ' . $message);
});
Class_WebService_SIGB_AbstractService::setLogger($logger);
$this->mock_web_client
->whenCalled('open_url')
->with('http://plage.com/api/v1/suggestions?q=' . urlencode('{"suggested_by":"2341"}'),
['auth' => ['user' => 'koha_admin', 'password' => 'koha_password']])
->answers('{"errors":"Forbidden. 178.16.171.35 is not allowed to use this service. Are you sure configuration variable \'authorizedips\' is correctly configured?"}');
['id' => 15,
'libelle' => 'Istres',
public function tearDown() {
Class_WebService_SIGB_AbstractService::setLogger(null);
parent::tearDown();
}
/** @test */
public function shouldNotDisplaySuggestionsList() {
$this->assertNotXPath('//div[@class="suggestion-achat-liste"]//table');
}