init_data_test(); // Instanciation de la classe *om_application* $this->f = $this->get_inst_om_application("admin", "admin"); // Instanciation de la classe à tester $this->inst = new import_specific(); } /** * Méthode lancée en fin de traitement */ public function common_tearDown() { parent::common_tearDown(); // $this->clean_session(); } /** * Jeu de données : deux tableaux pour chaque test : * colonnes et valeurs. * * Les colonnes sont commentées par un exemple du CSV comme suit : * COL (débute à 0) - Libellé header */ function init_data_test() { // check_required() $this->required_column = array( // COL 0 - Type "type" => array( "require" => true, "header" => "Type", ), // COL 1 - Numéro "numero" => array( "require" => true, "header" => "Numero", ), // COL 5 - INSEE "insee" => array( "require" => false, "header" => "INSEE", ), ); $this->required_row_data = array( "type" => "", "numero" => "10", "insee" => "", ); // check_type() $this->type_column = array( // COL 38 - Date envoi demande de pièces 0 => array( "type" => "date", "header" => "Date envoi demande de pieces", ), 1 => array( "type" => "date", "header" => "Date envoi demande de pieces", ), // COL 8 - Projet 2 => array( "type" => "string", "header" => "Projet", ), 3 => array( "type" => "string", "header" => "Projet", ), // COL 10 - Nb logements 4 => array( "type" => "integer", "header" => "Nb logements", ), 5 => array( "type" => "integer", "header" => "Nb logements", ), 6 => array( "type" => "integer", "header" => "Nb logements", ), // COL 11 - Surface terrain 7 => array( "type" => "float", "header" => "Surface terrain", ), 8 => array( "type" => "float", "header" => "Surface terrain", ), // COL 24 - Lotissement 9 => array( "type" => "boolean", "header" => "Lotissement", ), 10 => array( "type" => "boolean", "header" => "Lotissement", ), ); $this->type_row_data = array( 0 => "10/10/2015", 1 => "101/5/2015", 2 => "chaîne valide", 4 => "50", 5 => "50a", 6 => "50,5", 7 => "50,5", 8 => "50a", 9 => "Oui", 10 => "true", ); $this->type_return_expected = array( // Cas 1 : date valide 0 =>true, // Cas 2 : date invalide 1 =>false, // Cas 3 : chaîne de caractères valide 2 =>true, // Cas 5 : nombre entier valide 4 =>true, // Cas 6 : nombre entier invalide 5 =>false, // Cas 7 : nombre entier invalide 6 =>false, // Cas 8 : nombre décimal valide 7 =>true, // Cas 9 : nombre décimal invalide 8 =>false, // Cas 10 : booléen valide 9 =>true, // Cas 11 : booléen invalide 10 =>false ); // check_foreign_key() $this->fk_column = array( // COL 0 - Type 0 => array( "foreign_key" => array( "sql"=>"SELECT dossier_autorisation_type_detaille FROM openads.dossier_autorisation_type_detaille WHERE code =''", "table" => "dossier_autorisation_type_detaille", "field" => "code", ), "header" => "Type", ), 1 => array( "foreign_key" => array( "sql"=>"SELECT dossier_autorisation_type_detaille FROM openads.dossier_autorisation_type_detaille WHERE code =''", "table" => "dossier_autorisation_type_detaille", "field" => "code", ), "header" => "Type", ), ); $this->fk_row_data = array( 0 => "PCI", 1 => "lambda", ); // set_linked_value() $this->linked_values_column = array( // COL 0 - Type 0 => array( "link" => array( "PC MI" => "PI", ), "header" => "Type", ), 1 => array( "link" => array( "PC MI" => "PI", ), "header" => "Type", ), ); $this->linked_values_row_data = array( 0 => "PCI", 1 => "PC MI", ); } /** * Teste la méthode check_required() de la classe import_specific. * Est-ce qu'il y a une valeur si champ obligatoire ? * * @param $key [integer] colonne du fichier CSV * @param $value [string] valeur à tester * @return [string] message d'erreur ou chaîne vide si succès */ public function test_check_required() { // Message d'erreur $error = _("La colonne %s est obligatoire"); // Utilisation du jeu de données $this->inst->column = $this->required_column; $this->inst->line = $this->required_row_data; // Cas 1 : champ requis vide $ret = $this->inst->check_required("type"); $this->assertEquals($ret, false); // Cas 2 : champ requis renseigné $ret = $this->inst->check_required("numero"); $this->assertEquals($ret, true); // Cas 3 : champ non requis vide $ret = $this->inst->check_required("insee"); $this->assertEquals($ret, true); } /** * Teste la méthode set_linked_value() qui subsitue les valeurs du CSV * par le paramétrage. * * @param $key [integer] colonne du fichier CSV * @return [void] */ function test_set_linked_value(){ // Utilisation du jeu de données $this->inst->column = $this->linked_values_column; $this->inst->line = $this->linked_values_row_data; // Cas 1 : aucune correspondance // PCI reste PCI $this->inst->set_linked_value(0); $this->assertEquals($this->inst->line[0], "PCI"); // Cas 2 : existance d'une correspondance // PC MI devient PI $this->inst->set_linked_value(1); $this->assertEquals($this->inst->line[1], "PI"); } }