Skip to content
Snippets Groups Projects
Commit 6ab820d6 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

SAV: source format and service mocking in tests

parent d2b7a1cc
No related merge requests found
...@@ -18,116 +18,94 @@ ...@@ -18,116 +18,94 @@
* along with AFI-OPAC 2.0; if not, write to the Free Software * along with AFI-OPAC 2.0; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
//////////////////////////////////////////////////////////////////////////////////////
// OPAC3 : REPERTOIRE DES WEB_SERVICES
//////////////////////////////////////////////////////////////////////////////////////
class Class_WebService_AllServices { class Class_WebService_AllServices {
const RETOUR_SERVICE_OK = 2; const RETOUR_SERVICE_OK = 2;
private static $_http_client; private static $_http_client;
private $services = array private $services = [
( 'Amazon' => ['valeurs' => ['isbn' => '2709624931', 'auteur' => 'zola', 'page' => '1'],
"Amazon" => array 'services' => ['rend_avis(@isbn,@page)',
( 'rend_analyses(@isbn)',
"valeurs" => array("isbn" => "2709624931","auteur" => "zola","page" => "1"), 'rend_bibliographies(@isbn)',
"services" => array("rend_avis(@isbn,@page)" 'rend_livres_auteur(@auteur,@page)',
,"rend_analyses(@isbn)" 'rend_livres_similaires(@isbn)',
,"rend_bibliographies(@isbn)" 'rend_images(@isbn)']],
,"rend_livres_auteur(@auteur,@page)"
,"rend_livres_similaires(@isbn)" 'AmazonSonores' => ['valeurs' => ['ean' => '0794881405923',
,"rend_images(@isbn)") 'asin' => 'B00005BH6V',
), 'volume' => '1',
"AmazonSonores" => array 'track' => '1'],
( 'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
"valeurs" => array("ean" => "0794881405923","asin" => "B00005BH6V","volume" => "1","track" => "1"),
"services" => array("rend_notice_ean(@ean)" 'AmazonVideo' => ['valeurs' => ['ean' => '3388334500012'],
,"getImages(@ean)") 'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
),
"AmazonVideo" => array 'AmazonCdrom' => ['valeurs' => ['ean' => '5030931031182'],
( 'services' => ['rend_notice_ean(@ean)', 'getImages(@ean)']],
"valeurs" => array("ean" => "3388334500012"),
"services" => array("rend_notice_ean(@ean)" 'Lastfm' => ['valeurs' => ['titre' => 'Unplugged', 'auteur' => 'Eric Clapton'],
,"getImages(@ean)") 'services' => ['getAlbum(@titre,@auteur)',
), 'getMorceaux(@titre,@auteur)',
"AmazonCdrom" => array 'getPhotos(@auteur)',
( 'getDiscographie(@auteur)']],
"valeurs" => array("ean" => "5030931031182"),
"services" => array("rend_notice_ean(@ean)" 'Premiere' => ['valeurs' => ['titre' => 'avatar'],
,"getImages(@ean)") 'services' => ['get_resume(@titre)', 'getImages(@titre)']],
),
"Lastfm" => array 'LibraryThing' => ['valeurs' => ['isbn' => '978-2-07-061239-0'],
( 'services' => ['rend_isbn_proches(@isbn)']],
"valeurs" => array("titre" => "Unplugged","auteur" => "Eric Clapton"),
"services" => array("getAlbum(@titre,@auteur)" 'Fnac' => ['valeurs' => ['isbn' => '978-2-7427-6501-0'],
,"getMorceaux(@titre,@auteur)" 'services' => ['getResume(@isbn)']],
,"getPhotos(@auteur)"
,"getDiscographie(@auteur)") 'OAI' => ['valeurs' => ['oai_handler' => 'http://oai.bnf.fr/oai2/OAIHandler',
), 'set' => 'gallica'],
"Premiere" => array 'services' => ['getSetsFromHandler(@oai_handler)',
( 'getRecordsFromHandlerAndSet(@oai_handler, @set)']],
"valeurs" => array("titre" => "avatar"),
"services" => array("get_resume(@titre)" 'SRU' => ['valeurs' => ['service_url' => 'http://bvpb.mcu.es/i18n/sru/sru.cmd',
,"getImages(@titre)") 'query' => 'spain'],
), 'services' => ['search(@service_url, @query)']]];
"LibraryThing" => array
(
"valeurs" => array("isbn" => "978-2-07-061239-0"), public static function runServiceAfiBiographie($args) {
"services" => array("rend_isbn_proches(@isbn)")
),
"Fnac" => array
(
"valeurs" => array("isbn" => "978-2-7427-6501-0"),
"services" => array("getResume(@isbn)")
),
"OAI" => array
(
"valeurs" => array("oai_handler" => 'http://oai.bnf.fr/oai2/OAIHandler', "set" => "gallica"),
"services" => array("getSetsFromHandler(@oai_handler)",
"getRecordsFromHandlerAndSet(@oai_handler, @set)")
),
"SRU" => array
(
"valeurs" => array("service_url" => 'http://bvpb.mcu.es/i18n/sru/sru.cmd', "query" => "spain"),
"services" => array("search(@service_url, @query)")
)
);
//------------------------------------------------------------------------------------------------------
// Lance un service AFI et renvoie le resultat
//------------------------------------------------------------------------------------------------------
static function runServiceAfiBiographie($args) {
return self::runServiceAfi(8, $args); return self::runServiceAfi(8, $args);
} }
static function runServiceAfiVideo($args) { public static function runServiceAfiVideo($args) {
return self::runServiceAfi(9, $args); return self::runServiceAfi(9, $args);
} }
static function runServiceAfiInterviews($args) {
public static function runServiceAfiInterviews($args) {
return self::runServiceAfi(7, $args); return self::runServiceAfi(7, $args);
} }
static function runServiceAfiUploadVignette($args) {
public static function runServiceAfiUploadVignette($args) {
return self::runServiceAfi(12, $args); return self::runServiceAfi(12, $args);
} }
static function runServiceAfiUploadBiographie($args) {
public static function runServiceAfiUploadBiographie($args) {
return self::runServiceAfi(13, $args); return self::runServiceAfi(13, $args);
} }
static function runServiceGetUrlVignette($args) {
public static function runServiceGetUrlVignette($args) {
return self::runServiceAfi(10, $args); return self::runServiceAfi(10, $args);
} }
static function setHttpClient($client) {
public static function setHttpClient($client) {
self::$_http_client = $client; self::$_http_client = $client;
} }
static function uploadVignetteForNotice($url, $id) { public static function uploadVignetteForNotice($url, $id) {
$notice = Class_Notice::find($id); $notice = Class_Notice::find($id);
$result = static::runServiceAfiUploadVignette(array_filter(['isbn' => $notice->getIsbn(), $result = static::runServiceAfiUploadVignette(array_filter(['isbn' => $notice->getIsbn(),
'ean' => $notice->getEan(), 'ean' => $notice->getEan(),
...@@ -149,7 +127,7 @@ class Class_WebService_AllServices { ...@@ -149,7 +127,7 @@ class Class_WebService_AllServices {
} }
static function uploadBiographieForNotice($url, $id) { public static function uploadBiographieForNotice($url, $id) {
$notice = Class_Notice::find($id); $notice = Class_Notice::find($id);
$result = static::runServiceAfiUploadBiographie(array_filter(['url_auteur' => $url, $result = static::runServiceAfiUploadBiographie(array_filter(['url_auteur' => $url,
'clef_oeuvre' => $notice->getClefOeuvre()])); 'clef_oeuvre' => $notice->getClefOeuvre()]));
...@@ -158,14 +136,14 @@ class Class_WebService_AllServices { ...@@ -158,14 +136,14 @@ class Class_WebService_AllServices {
} }
static function httpGet($url, $args) { public static function httpGet($url, $args) {
if (!isset(self::$_http_client)) if (!isset(self::$_http_client))
self::$_http_client = new Class_WebService_SimpleWebClient(); self::$_http_client = new Class_WebService_SimpleWebClient();
return self::$_http_client->open_url($url.'?'.http_build_query($args)); return self::$_http_client->open_url($url.'?'.http_build_query($args));
} }
static function runServiceAfi($service,$args) { public static function runServiceAfi($service,$args) {
if (!$url_service = Class_CosmoVar::get('url_services')) if (!$url_service = Class_CosmoVar::get('url_services'))
return false; return false;
...@@ -185,9 +163,6 @@ class Class_WebService_AllServices { ...@@ -185,9 +163,6 @@ class Class_WebService_AllServices {
} }
//------------------------------------------------------------------------------------------------------
// Test d'un service
//------------------------------------------------------------------------------------------------------
public function testService($id_service,$id_fonction) { public function testService($id_service,$id_fonction) {
if(!$id_service) return false; if(!$id_service) return false;
$instruction="\$cls=new Class_WebService_".$id_service."();"; $instruction="\$cls=new Class_WebService_".$id_service."();";
...@@ -215,12 +190,9 @@ class Class_WebService_AllServices { ...@@ -215,12 +190,9 @@ class Class_WebService_AllServices {
return $ret; return $ret;
} }
//------------------------------------------------------------------------------------------------------
// Liste des services public function getServices() {
//------------------------------------------------------------------------------------------------------
public function getServices()
{
return $this->services; return $this->services;
} }
}
} ?>
\ No newline at end of file \ No newline at end of file
...@@ -25,14 +25,19 @@ abstract class ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase extends ...@@ -25,14 +25,19 @@ abstract class ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase extends
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
$picsou = Class_Article::getLoader() $picsou = $this->fixture('Class_Article',
->newInstanceWithId(4) ['id' => 4,
->setTitre('Picsou fait faillite'); 'titre' => 'Picsou fait faillite',
'contenu' => 'un drame familiale']);
$donald = $this->fixture('Class_Article',
['id' => 5,
'titre' => 'Donald a la plage',
'contenu' => 'des vacances de rêve']);
Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article') Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Article')
->whenCalled('getArticlesByPreferences') ->whenCalled('getArticlesByPreferences')
->with(array('nb_aff' => '2')) ->with(['nb_aff' => '2'])
->answers(array($picsou)) ->answers([$picsou, $donald])
->getWrapper() ->getWrapper()
->whenCalled('filterByLocaleAndWorkflow') ->whenCalled('filterByLocaleAndWorkflow')
...@@ -51,6 +56,7 @@ abstract class ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase extends ...@@ -51,6 +56,7 @@ abstract class ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase extends
'picto' => 'vide.gif', 'picto' => 'vide.gif',
'preferences' => ['url' => 'http://www.google.com', 'preferences' => ['url' => 'http://www.google.com',
'target' => 0]], 'target' => 0]],
['type_menu' => 'NEWS', ['type_menu' => 'NEWS',
'libelle' => 'Actu', 'libelle' => 'Actu',
'picto' => 'vide.gif', 'picto' => 'vide.gif',
...@@ -175,7 +181,7 @@ class ProfilControllerProfilJeunesseAndAdultesWithMenusTestAccessors extends Pro ...@@ -175,7 +181,7 @@ class ProfilControllerProfilJeunesseAndAdultesWithMenusTestAccessors extends Pro
class ProfilControllerProfilJeunesseAndAdultesWithMenusTestRender extends ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase { class ProfilControllerProfilJeunesseAndAdultesWithMenusTestRender extends ProfilControllerProfilJeunesseAndAdultesWithMenusTestCase {
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
$this->dispatch('/opac?id_profil='.$this->page_musique->getId()); $this->dispatch('/opac?id_profil=' . $this->page_musique->getId());
} }
...@@ -210,12 +216,26 @@ class ProfilControllerProfilJeunesseAndAdultesWithMenusTestRender extends Profil ...@@ -210,12 +216,26 @@ class ProfilControllerProfilJeunesseAndAdultesWithMenusTestRender extends Profil
/** @test */ /** @test */
public function linkForArticlePicsouShouldBeCmsArticleViewFourAndNamedActu() { public function boiteMenuVerticalMenuActuShouldOpenSubmenu() {
$this->assertXPathContentContains('//a[contains(@href, "cms/articleview/id/4")]', $this->assertXPathContentContains('//ul[@class="menuGauche"]/li/a[contains(@onclick, "afficher_sous_menu")]',
'Actu'); 'Actu');
} }
/** @test */
public function linkForArticlePicsouShouldBePresent() {
$this->assertXPathContentContains('//a[contains(@href, "cms/articleview/id/4")]',
'Picsou fait faillite');
}
/** @test */
public function linkForArticleDonaldShouldBePresent() {
$this->assertXPathContentContains('//a[contains(@href, "cms/articleview/id/5")]',
'Donald a la plage');
}
/** @test */ /** @test */
public function articlesShouldHaveBeenFilterByLocaleAndWorkflow() { public function articlesShouldHaveBeenFilterByLocaleAndWorkflow() {
$this->assertTrue(Class_Article::getLoader()->methodHasBeenCalled('filterByLocaleAndWorkflow')); $this->assertTrue(Class_Article::getLoader()->methodHasBeenCalled('filterByLocaleAndWorkflow'));
......
...@@ -244,6 +244,23 @@ class Telephone_RechercheControllerHarryPotterTagsTest extends Telephone_Recherc ...@@ -244,6 +244,23 @@ class Telephone_RechercheControllerHarryPotterTagsTest extends Telephone_Recherc
class Telephone_RechercheControllerHarryPotterBiographieTest extends Telephone_RechercheControllerHarryPotterTestCase { class Telephone_RechercheControllerHarryPotterBiographieTest extends Telephone_RechercheControllerHarryPotterTestCase {
public function setUp() {
parent::setUp();
$httpClient = Storm_Test_ObjectWrapper::mock()
->whenCalled('open_url')
->answers(json_encode(['biographie' => [['texte' => 'Inspiration et controverse']],
'source' => 'afi',
'vignette' => '']));
Class_WebService_AllServices::setHttpClient($httpClient);
}
public function tearDown() {
Class_WebService_AllServices::setHttpClient(null);
parent::tearDown();
}
/** /**
* @group longtest * @group longtest
* @group integration * @group integration
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment