From f1baf67e429f03617179a30ae606e08131d02f4b Mon Sep 17 00:00:00 2001 From: sparkyx Date: Sun, 30 Jun 2024 13:57:59 +0200 Subject: [PATCH] Fix Bug : tva_code not retrieve from search --- html/ajax_misc.php | 2 +- html/fid.php | 4 +- include/ajax/ajax_card.php | 8 +- sql/upgrade.sql | 6 +- unit-test/include/Ajax/ajax_miscTest.php | 164 +++++++++++++++++++++++ unit-test/include/class/followupTest.php | 2 - unit-test/test-complet-9.ods | Bin 0 -> 22722 bytes 7 files changed, 175 insertions(+), 11 deletions(-) create mode 100644 unit-test/include/Ajax/ajax_miscTest.php create mode 100644 unit-test/test-complet-9.ods diff --git a/html/ajax_misc.php b/html/ajax_misc.php index c4d89c5e3..e111760f4 100644 --- a/html/ajax_misc.php +++ b/html/ajax_misc.php @@ -133,7 +133,7 @@ $html = var_export($_REQUEST, true); set_language(); if ( LOGINPUT) { - $file_loginput=fopen($_ENV['TMP'].'/scenario-'.$_SERVER['REQUEST_TIME'].'.php','a+'); + $file_loginput=fopen($_ENV['TMP'].'/scenario-ajax-'.$_SERVER['REQUEST_TIME'].'.php','a+'); fwrite ($file_loginput," + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * + * Author : Dany De Bontridder danydb@noalyss.eu $(DATE) + */ + +/** + * @file + * @brief noalyss + */ + +use PHPUnit\Framework\TestCase; + +require DIRTEST . '/global.php'; + +/** + * @testdox Class Ajax_MiscTest : used for testing the AJAX calls from ajax_misc + * @backupGlobals enabled + */ +class Ajax_MiscTest extends TestCase +{ + + /** + * @var Fiche + */ +// protected $object; +// protected $connection; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test method is executed. + */ +// protected function setUp(): void +// { +// +// +// } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test method is executed. + */ +// protected function tearDown(): void +// { +// /** +// * example +// * if ( ! is_object($this->object->fiche_def)) return; +// * include_once DIRTEST.'/global.php'; +// * $g_connection=Dossier::connect(); +// * $sql=new ArrayObject(); +// * $sql->append("delete from fiche_detail where f_id in (select f_id from fiche where fd_id =\$1 )"); +// * $sql->append("delete from fiche where f_id not in (select f_id from fiche_detail where \$1=\$1)"); +// * $sql->append("delete from jnt_fic_attr where fd_id = \$1 "); +// * $sql->append("delete from fiche_def where fd_id = \$1"); +// * foreach ($sql as $s) { +// * $g_connection->exec_sql($s,[$this->object->fiche_def->id]); +// * } +// */ +// } + + /** + * the setUpBeforeClass() template methods is called before the first test of the test case + * class is run + */ +// public static function setUpBeforeClass(): void +// { +// // include 'global.php'; +// } + + /** + * tearDownAfterClass() template methods is calleafter the last test of the test case class is run, + * + */ +// static function tearDownAfterClass(): void +// { +// // include 'global.php'; +// } + + private function createCard_MA1() + { + global $g_user, $g_connection; + + $fiche_id = $g_connection->get_value("select f_id from fiche_detail where ad_id=$1 and ad_value=$2", + array(ATTR_DEF_QUICKCODE, 'MA1')); + if (!empty ($fiche_id)) { + $this->cleanCard($fiche_id); + } + + + $g_user = new Noalyss_User($g_connection); + //insert a card + $fiche = new Fiche($g_connection); + // card for Merchandise + $fiche->set_fiche_def(1); + Card_Property::load($fiche); + $fiche->setAttribut(1, "Inserted by PHPUNIT-" . __CLASS__ . ":" . __FUNCTION__); + $fiche->setAttribut(ATTR_DEF_TVA, '210A'); + $fiche->setAttribut(ATTR_DEF_QUICKCODE, 'MA1'); + $fiche->insert(1, $fiche->to_array()); + return $fiche; + } + + private function cleanCard($fiche_id) + { + global $g_connection; + $g_connection->exec_sql("delete from fiche_detail where f_id = $1", array($fiche_id)); + $g_connection->exec_sql("delete from fiche where f_id = $1", array($fiche_id)); + } + /** + * @testdox Call fid.php + * @covers ajax call to fid.php + * @backupGlobals enabled + */ + public function testAJAX_retrieveCard() + { + global $g_user, $g_connection; + $fiche=$this->createCard_MA1(); + + $query = array( + 'gDossier' => DOSSIER, + 'FID' => 'MA1', + 'l' => 'e_march4_label', + 't' => 'e_march4_tva_id', + 'p' => 'e_march4_price', + 'b' => 'e_march4_price', + 'd' => 'deb', + 'j' => '3', + 'ctl' => 'undefined' + ); + + $_REQUEST = $_POST = $_GET = $query; + ob_start(); + require NOALYSS_HOME . '/fid.php'; + $content = ob_get_contents(); + ob_end_clean(); + + $expected = <<assertEquals($expected, $content, "Incorrect answer"); + + // clean card + $this->cleanCard($fiche->id); + } + +} \ No newline at end of file diff --git a/unit-test/include/class/followupTest.php b/unit-test/include/class/followupTest.php index c1fabef38..becff0b7d 100644 --- a/unit-test/include/class/followupTest.php +++ b/unit-test/include/class/followupTest.php @@ -150,8 +150,6 @@ class FollowupTest extends TestCase { global $g_user; $g_user=new Noalyss_User($this->connection); - $array_search= - $query=Follow_Up::create_query($this->connection,array( "ag_dest_query" => "-2", "qcode" => "CLIENT1", diff --git a/unit-test/test-complet-9.ods b/unit-test/test-complet-9.ods new file mode 100644 index 0000000000000000000000000000000000000000..d2365bb3055483d01bd95f5bef59f65e1b6da55b GIT binary patch literal 22722 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

uURymLqXbe)K`WAR;L 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 EANJEYwg3PC literal 0 HcmV?d00001