Skip to content
Snippets Groups Projects
JavaControllerTest.php 5.92 KiB
Newer Older
<?php
/**
 * Copyright (c) 2012, Agence Française Informatique (AFI). All rights reserved.
 *
 * AFI-OPAC 2.0 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).
 *
 * AFI-OPAC 2.0 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 AFI-OPAC 2.0; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
class JavaControllerWidthDefaultKiosqueTest extends AbstractControllerTestCase {
		$cfg_accueil = ['modules' => ['1' => ['division' => 1,
																					'type_module' => 'KIOSQUE']],
										'options' => 	[]];
		$this->profil_cache = Class_Profil::getLoader()->newInstanceWithId(5345)
			->setBrowser('opac')
			->setLibelle('Profil cache')
			->setCfgAccueil($cfg_accueil);

		Class_Profil::setCurrentProfil(Class_Profil::getLoader()->newInstanceWithId(2)
																	 ->setLibelle('Accueil'));
		$_SESSION['id_profil'] = 2;

		$this->dispatch('java/kiosque?id_module=1&id_profil=5345', true);
	}


	/** @test */
	public function sessionIdProfilShouldBeProfil2() {
		$this->assertEquals(2, $_SESSION['id_profil']);
	}


	/** @test */
	public function vueShouldDefaultsToDiaporama() {
		$this->assertXPath('//script[contains(@src, "diaporama")]');
	}
}


class JavaControllerCarrouselHorizontalTest extends AbstractControllerTestCase {
	public function setUp() {
		parent::setUp();
		$this->fixture('Class_Profil',
									 ['id' => 3,
										'browser' => 'opac',
										'libelle' => 'kiosque test',
										'cfg_accueil' => ['modules' => ['1' => ['division' => 1,
																														'type_module' => 'KIOSQUE',
																														'titre' => '',
Laurent's avatar
Laurent committed
																														'vue' => 'mycarousel_horizontal',
																														'preferences' => ['op_speed' => 400]]],
																			'options' => 	[]]])
				 ->beCurrentProfil();

		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Catalogue')
			->whenCalled('getNoticesByPreferences')
			->answers([
								 ['id_notice' => 4,
									'titre' => 'Madagascar',
									'vignette' => 'http://thumbnail.com/madagascar.jpg'
									]
								 ]);
		$this->dispatch('java/kiosque/id_module/1/titre/title+%2F+with+some+%2F+slashes/vue/mycarousel_horizontal', true);
	}


	/** @test */
	public function titleShouldBeRemovedBecauseOfPossibleApacheMisconfigurationOfAllowEncodedSlashes() {
		$this->assertXPath('//div[@class="jMyCarousel"]//a[@href="/recherche/viewnotice/id_module/1/vue/mycarousel_horizontal/id/4"]');
	}

	/** @test */
	public function jMyCarouselShouldBeLoaded() {
		$this->assertContains('jMyCarousel', $this->_response->getBody());
class JavaControllerWithKiosqueMurPageTest extends AbstractControllerTestCase {
	public function setUp() {
		parent::setUp();
gloas's avatar
gloas committed

		$cfg_accueil = ['modules' => ['1' => ['division' => 1,
																					'type_module' => 'KIOSQUE',
																					'preferences' => 	['style_liste' => 'mur',
																														 'nb_notices' => 10,
																														 'nb_analyse' => 50]]]];

		Class_Profil::getCurrentProfil()->setCfgAccueil($cfg_accueil);

		$this->dispatch('java/page/no/2/id_module/1', true);
	}


	/** @test */
	public function firstControlShouldLinkToPageOne() {
		$this->assertXPath('//div[@class="controls"]/a[1][contains(@href, "java/page/no/1/id_module/1")]');
	}


	/** @test */
	public function lastControlShouldLinkToPageThree() {
		$this->assertXPath('//div[@class="controls"]/a[2][contains(@href, "java/page/no/3/id_module/1")]');
	}
}




class JavaControllerWithKiosqueMurAndPanierDeletedTest extends AbstractControllerTestCase {
	public function setUp() {
		parent::setUp();
		$cfg_accueil = ['modules' => ['1' => ['division' => 1,
																					'type_module' => 'KIOSQUE',
																					'preferences' => 	['style_liste' => 'mur',
																														 'id_panier' => 99999,
																														 'nb_notices' => 10,
																														 'nb_analyse' => 50,
																														 'titre' => 'Mon panier']]]];

		Class_Profil::getCurrentProfil()->setCfgAccueil($cfg_accueil);

		$this->dispatch('/', true);
	}


	/** @test */
	public function titreMonPanierShouldBeDisplayed() {
		$this->assertXPathContentContains('//h1', 'Mon panier', $this->_response->getBody());
	}
}




class JavaControllerKiosqueSlideShowWidthWrongParamsTest extends AbstractControllerTestCase {
	public function setUp() {
		parent::setUp();
		$cfg_accueil = ['modules' => ['1' => ['division' => 1,
																					'type_module' => 'MENU']],
		$this->profil = Class_Profil::newInstanceWithId(5345, ['browser' => 'opac',
																													 'libelle' => 'Profil cache',
																													 'cfg_acceuil' => $cfg_accueil]);


		$this->mock_sql = Storm_Test_ObjectWrapper::mock();
		Zend_Registry::set('sql', $this->mock_sql);


		$this->mock_sql
			->whenCalled('fetchAll')
Patrick Barroca's avatar
Patrick Barroca committed
			->with("select notices.id_notice, notices.editeur, notices.annee, notices.date_creation, notices.date_maj, notices.facettes, notices.clef_oeuvre from notices where url_vignette > '' and url_vignette != 'NO' order by date_creation DESC  LIMIT 0,50",
							false)
			->answers([])
			->beStrict();

		$this->dispatch('java/kiosque?id_module=1&id_profil=5345', true);
	}


	/** @test */
	public function vueShouldDefaultsToDiaporama() {
		$this->assertXPathContentContains('//script', 'slideshow');
	}
}