f = $this->get_inst_om_application(); $this->edition = $this->f->get_inst__om_edition(); } public function tearDown(): void { $this->f->__destruct(); parent::common_tearDown(); parent::tearDown(); } public function onNotSuccessfulTest(Throwable $e): void { parent::common_onNotSuccessfulTest($e); parent::onNotSuccessfulTest($e); } // ----------------------------------------------------------------------------- function test_format_simple_jour_numero_mois_numero_annee() { $bloc = "Date: &formate_date(champ_fusion=date_field_name, format=jour_numero/mois_numero/annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("Date: 04/11/2025", $result); } function test_tous_jours_et_mois_sont_bien_traduits() { $merge_fields_values = [ // Jours de la semaine du lundi au dimanche (sur une semaine type de novembre 2025) 'jour0' => '2025-11-03', // lundi 'jour1' => '2025-11-04', // mardi 'jour2' => '2025-11-05', // mercredi 'jour3' => '2025-11-06', // jeudi 'jour4' => '2025-11-07', // vendredi 'jour5' => '2025-11-08', // samedi 'jour6' => '2025-11-09', // dimanche // Mois de janvier à décembre, toujours le 1er de chaque mois 'mois0' => '2025-01-01', 'mois1' => '2025-02-01', 'mois2' => '2025-03-01', 'mois3' => '2025-04-01', 'mois4' => '2025-05-01', 'mois5' => '2025-06-01', 'mois6' => '2025-07-01', 'mois7' => '2025-08-01', 'mois8' => '2025-09-01', 'mois9' => '2025-10-01', 'mois10' => '2025-11-01', 'mois11' => '2025-12-01', ]; $bloc = <<<'BLOC' Jours: &formate_date(champ_fusion=jour0, format=jour_nom) / &formate_date(champ_fusion=jour1, format=jour_nom) / &formate_date(champ_fusion=jour2, format=jour_nom) / &formate_date(champ_fusion=jour3, format=jour_nom) / &formate_date(champ_fusion=jour4, format=jour_nom) / &formate_date(champ_fusion=jour5, format=jour_nom) / &formate_date(champ_fusion=jour6, format=jour_nom) Mois: &formate_date(champ_fusion=mois0, format=mois_nom) / &formate_date(champ_fusion=mois1, format=mois_nom) / &formate_date(champ_fusion=mois2, format=mois_nom) / &formate_date(champ_fusion=mois3, format=mois_nom) / &formate_date(champ_fusion=mois4, format=mois_nom) / &formate_date(champ_fusion=mois5, format=mois_nom) / &formate_date(champ_fusion=mois6, format=mois_nom) / &formate_date(champ_fusion=mois7, format=mois_nom) / &formate_date(champ_fusion=mois8, format=mois_nom) / &formate_date(champ_fusion=mois9, format=mois_nom) / &formate_date(champ_fusion=mois10, format=mois_nom) / &formate_date(champ_fusion=mois11, format=mois_nom) BLOC; $expected = <<<'EXPECTED' Jours: lundi / mardi / mercredi / jeudi / vendredi / samedi / dimanche Mois: janvier / février / mars / avril / mai / juin / juillet / août / septembre / octobre / novembre / décembre EXPECTED; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals($expected, $result); } function test_format_d_autres_caracteres_peuvent_etre_presents_dans_la_chaine() { $bloc = "Le &formate_date(champ_fusion=date_field_name, format=jour_nom, qui est le jour_numero, de mois_nom de l'an de grâce annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("Le mardi, qui est le 04, de novembre de l'an de grâce 2025", $result); } function test_format_d_autres_caracteres_peuvent_etre_presents_dans_la_chaine_memes_des_codes_php() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_numero-mdXXX-mois_numero-YYY-annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("04-mdXXX-11-YYY-2025", $result); } function test_format_separateurs_personnalises_tirets() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_numero-mois_numero-annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("04-11-2025", $result); } function test_multiple_occurrences_sur_meme_ligne() { $bloc = "Début: &formate_date(champ_fusion=date_field_name, format=jour_numero/mois_numero/annee) - Fin: &formate_date(champ_fusion=end_date, format=jour_numero/mois_numero/annee)"; $merge_fields_values = ['date_field_name' => '2025-01-01', 'end_date' => '2025-12-31']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("Début: 01/01/2025 - Fin: 31/12/2025", $result); } function test_format_repetition_code_semantique() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_numero/jour_numero/mois_numero/mois_numero/annee/annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("04/04/11/11/2025/2025", $result); } function test_format_caracteres_speciaux() { $bloc = "&formate_date(champ_fusion=date_field_name, format=Le jour_numero, ~!!qdsf mois_numero **annee**)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("Le 04, ~!!qdsf 11 **2025**", $result); } function test_format_parentheses_imbriquees_refusees() { $bloc = "&formate_date(champ_fusion=date_field_name, format=(jour_numero)/mois_numero/annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("(04/mois_numero/annee)", $result); } function test_format_avec_guillemets() { $bloc = '&formate_date(champ_fusion=date_field_name, format="jour_numero/mois_numero/annee")'; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals('"04/11/2025"', $result); $bloc = "&formate_date(champ_fusion=date_field_name, format='jour_numero/mois_numero/annee')"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("'04/11/2025'", $result); } function test_date_champ_fusion_peut_etre_au_format_iso8601() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_nom jour_numero mois_nom annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("mardi 04 novembre 2025", $result); } function test_date_champ_fusion_peut_etre_au_format_fr() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_nom jour_numero mois_nom annee)"; $merge_fields_values = ['date_field_name' => '04/11/2025']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("mardi 04 novembre 2025", $result); } function test_date_champ_fusion_dans_un_autre_format_n_est_pas_remplacee() { $bloc = "&formate_date(champ_fusion=date_field_name, format=jour_nom jour_numero mois_nom annee)"; $merge_fields_values = ['date_field_name' => 'je suis le 4 novembre 2025']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals($bloc, $result); } function test_cas_limite_definition_avec_espaces_en_trop() { $bloc = "&formate_date( champ_fusion=date_field_name , format=jour_numero/mois_numero/annee)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("04/11/2025", $result); } function test_cas_limite_champ_fusion_manquant_n_est_pas_remplace() { $bloc = "&formate_date(champ_fusion=ce_nom_de_champ_nexiste_pas, format=jour_numero/mois_numero/annee)"; $merge_fields_values = []; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals($bloc, $result); } function test_cas_limite_format_vide_est_remplace_par_du_vide_comme_demande() { $bloc = "&formate_date(champ_fusion=date_field_name, format=)"; $merge_fields_values = ['date_field_name' => '2025-11-04']; $result = $this->edition->replace_formate_date($bloc, $merge_fields_values); $this->assertEquals("", $result); } function test_fonctionne_avec_d_autres_champs_et_variables_sur_la_meme_ligne() { $bloc = "Le &formate_date(champ_fusion=date_field_name, format=jour_numero/mois_numero/annee), la réponse sera &réponse et tout le monde sera [humeur]."; $substitution_vars_values = ['réponse' => '42']; $merge_fields_values = ['date_field_name' => '2025-11-04', 'humeur' => 'heureux']; $result = $this->edition->replace_all_elements($bloc, $substitution_vars_values, $merge_fields_values); $this->assertEquals("Le 04/11/2025, la réponse sera 42 et tout le monde sera heureux.", $result); } }