EmpruntsControllerTest.php 8.43 KB
<?php
namespace App\Test\TestCase\Controller;

use App\Controller\EmpruntsController;
use Cake\TestSuite\IntegrationTestCase;
use Cake\ORM\TableRegistry;

/**
 * App\Controller\EmpruntsController Test Case
 */
//class EmpruntsControllerTest extends IntegrationTestCase
class EmpruntsControllerTest extends General
{
    
    /**
     * Fixtures
     *
     * @var array
     */
    public $fixtures = [
    	'app.Configurations',
        
        'app.Emprunts',
        
        'app.Materiels',
        
        'app.Suivis',

        'app.SurCategories',
        'app.Categories',
        'app.SousCategories',
        //'app.sous_categories',
        
        'app.GroupesThematiques',
        'app.GroupesMetiers',
        //'app.groupes_metiers',
        
        //'app.fakeldapusers',
        'app.Fakeldapusers',
        'app.Users',

        'app.Organismes',
        'app.Sites',
        'app.Documents',
		'app.Fournisseurs',
		'app.Unites'
    ];

    /*
     public function authUser() {
     	     $user = [
     	     		'Auth' => [
     	     				'User' => [
     	     						'sn' => [0 => 'test2'],
									'mail' => [0 => 'test@test.fr'],
									'givenname' => [0 => 'test1'],
									'cn' => [0 => 'user1_SUPER'],
									'userpassword' => [0 => 'test'],
     	     				]
     	     		]
     	     ];
     	   $this->session($user);
     	   
     	   $authType = ['authType' => 'cn'];
     	   $this->session($authType);
     }
     */
     
     
    //@Implement
    //protected function getEntitiesName() { return 'Emprunts'; }
    
    //@Implement
    protected function getNewEntityWithAllMandatoryFields() {
        $matos_created_id = 1;
        $matos_validated_id = 3;
        return [
            // (EP) pas utile car auto
            //'id' => 5,
            //'materiel_id' => 1, // created
            'materiel_id' => $matos_validated_id, // validated
            'date_emprunt' => '2016-04-19',
            'date_retour_emprunt' => '2016-04-19',
            'emprunt_interne' => 0,
            'laboratoire' => 'Lorem ipsum dolor sit amet',
            'site_id' => 1, // Roche
            'e_lieu_detail' => 'Lorem ipsum dolor sit amet',
            'nom_emprunteur' => 'Lorem ipsum dolor sit amet',
            'email_emprunteur' => 'Lorem ipsum dolor sit amet',
            'tel' => 'Lorem ipsum dolor ',
            'commentaire' => 'TEST ADD EMPRUNT',
            'nom_createur' => 'Lorem ipsum dolor sit amet',
            'nom_modificateur' => 'Lorem ipsum dolor sit amet',
            'created' => '2016-04-19 09:09:26',
            'modified' => '2016-04-19 09:09:26'
        ];
    }
    
    
    
    

    
    /**
     * Test index method
     *
     * @return void
     */
    public function testIndex()
    {
    	//$this->authUser();
    	$this->authSuperAdmin();
    	
    	//1) On doit pouvoir accéder à la page une fois authentifié
    	$this->get('/emprunts/index');
    	$this->assertNoRedirect("Authentifier mais redirection vers /users/login.");
    	 
    	//2) On doit avoir 3 matériels
    	$this->assertResponseContains("Liste des emprunts (2)", "Le nombre d'emprunt renvoyé est incorrect.");
    }

    /**
     * Test view method
     *
     * @return void
     */
    public function testView()
    {
        //$this->authUser();
        $this->authSuperAdmin();
        
    	$this->get('/emprunts/view/2');
    	$this->assertResponseContains("TEST VIEW EMPRUNT VALIDE", "L'emprunt retourné n'est pas celui demandé.");
    }

    /**
     * Test add method
     *
     * @return void
     */
    public function OFF_testAdd()
    {
        $matos_created_id = 1;
        $matos_validated_id = 3;
    	$data = [
    	    // (EP) optionnel :
    		////'id' => 5,
    		
    		//'materiel_id' => 1, // created
    	    'materiel_id' => $matos_validated_id, // validated
    	    'date_emprunt' => '2016-04-19',
    		'date_retour_emprunt' => '2016-04-19',
    		'emprunt_interne' => 0,
    		'laboratoire' => 'Lorem ipsum dolor sit amet',
    	    'site_id' => 1, // Roche
    		'e_lieu_detail' => 'Lorem ipsum dolor sit amet',
    		'nom_emprunteur' => 'Lorem ipsum dolor sit amet',
    		'email_emprunteur' => 'Lorem ipsum dolor sit amet',
    		'tel' => 'Lorem ipsum dolor ',
    		'commentaire' => 'TEST ADD EMPRUNT',
    		'nom_createur' => 'Lorem ipsum dolor sit amet',
    		'nom_modificateur' => 'Lorem ipsum dolor sit amet',
    		'created' => '2016-04-19 09:09:26',
    		'modified' => '2016-04-19 09:09:26'
    	];
    	
    	//$this->authUser();
    	$this->authSuperAdmin();
    	

    	//debug($data);
    	// Nb emprunts au départ dans la fixture
    	$nb_emprunts = 2;
    	// Methode commune de la classe parente
    	$this->_testAddEntitiesRelatedToMateriel("emprunt", $nb_emprunts, $data);
    	/*

    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts ($nb_emprunts)", "Le nombre initial (fixture) d'emprunts dans la BD devrait être de $nb_emprunts !");

    	// Ajout d'un 1er emprunt (matériel VALIDATED) => OK
    	//$data['materiel_id'] = $matos_validated_id;
    	//$this->assertTextEquals($data['materiel_id'], $matos_validated_id);
    	$this->post("/emprunts/add/$matos_validated_id", $data);
    	$nb_emprunts++;
    	//debug($nb_emprunts);
    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts ($nb_emprunts)", "L'emprunt1 d'un materiel VALIDATED ne s'ajoute pas correctement alors que ça devrait !");
    	
    	// Ajout d'un 2ème emprunt (matériel VALIDATED) => OK
    	$this->post("/emprunts/add/$matos_validated_id", $data);
    	$nb_emprunts++;
    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts ($nb_emprunts)", "L'emprunt2 d'un materiel VALIDATED ne s'ajoute pas correctement alors que ça devrait !");

    	// Ajout d'un 3ème emprunt (matériel CREATED) => KO
    	$data['materiel_id'] = $matos_created_id;
    	$this->assertTextEquals($data['materiel_id'], $matos_created_id);
    	$this->post("/emprunts/add/$matos_created_id", $data);
    	//$nb_emprunts++;
    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts ($nb_emprunts)", "L'emprunt3 d'un materiel CREATED s'ajoute correctement alors que ça ne devrait pas !");

    	// Ajout d'un 4ème emprunt (matériel VALIDATED) => OK
    	$data['materiel_id'] = $matos_validated_id;
    	$this->assertTextEquals($data['materiel_id'], $matos_validated_id);
    	$this->post("/emprunts/add/$matos_validated_id", $data);
    	$nb_emprunts++;
    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts ($nb_emprunts)", "L'emprunt4 d'un materiel VALIDATED ne s'ajoute pas correctement alors que ça devrait !");
    	*/
    }

    /**
     * Test edit method
     *
     * @return void
     */
    public function OFF_testEdit()
    {
    //$this->authUser();
    $this->authSuperAdmin();
        
    	$data = [
    		'materiel_id' => 1,
    		'date_emprunt' => '2016-04-19',
    		'date_retour_emprunt' => '2016-04-19',
    		'emprunt_interne' => 0,
    		'laboratoire' => 'Lorem ipsum dolor sit amet',
    	    'site_id' => 1, // Roche
    		'e_lieu_detail' => 'Lorem ipsum dolor sit amet',
    		'nom_emprunteur' => 'Lorem ipsum dolor sit amet',
    		'email_emprunteur' => 'Lorem ipsum dolor sit amet',
    		'tel' => 'Lorem ipsum dolor ',
    		'commentaire' => 'TEST EDIT EMPRUNT VALIDE',
    		'nom_createur' => 'Lorem ipsum dolor sit amet',
    		'nom_modificateur' => 'Lorem ipsum dolor sit amet',
    		'created' => '2016-04-19 09:09:26',
    		'modified' => '2016-04-19 09:09:26'
    	];
    	$this->post('/emprunts/edit/1', $data);
    	$this->get('/emprunts/view/1');
    	$this->assertResponseContains("TEST EDIT EMPRUNT VALIDE", "L'emprunt n'a pas était édité correctement");

    }

    /**
     * Test delete method
     *
     * @return void
     */
    public function OFF_testDelete()
    {
    //$this->authUser();
    $this->authSuperAdmin();
        
    	$this->post('/emprunts/delete/2');
    	$this->get('/emprunts/index');
    	$this->assertResponseContains("Liste des emprunts (1)", "L' emprunt n'as pas été supprimé.");
    }
    
    
    /**
     * Test (automatique) de (presque) TOUTES les actions de CE controleur
     *
     * @return void
     *
     * @dataProvider dataProviderActionsAndRoles4
     */
    public function testAuthorizationsForAllActionsOnEmprunts($action, $role_short, $role_long) {
        // call parent General
        $this->_testAuthorizationsForAllControllerActions($action, $role_short, $role_long);
    }
    
}