diff --git a/dev/translation/ignore_translation_keys.lst b/dev/translation/ignore_translation_keys.lst index b4f1071bc6a..f1f33bb9f1c 100644 --- a/dev/translation/ignore_translation_keys.lst +++ b/dev/translation/ignore_translation_keys.lst @@ -145,8 +145,6 @@ Barcode BarcodeDesc BarcodeStickersMask BillOfMaterialsLine -BlockLogNeedAmountsValue -BlockLogNeedElement BlockedLogAuthorityNeededToStoreYouFingerprintsInNonAlterableRemote BlockedLogAuthorityUrl BlockedLogSetup diff --git a/htdocs/blockedlog/class/blockedlog.class.php b/htdocs/blockedlog/class/blockedlog.class.php index 86141ed72bd..7c3e965e266 100644 --- a/htdocs/blockedlog/class/blockedlog.class.php +++ b/htdocs/blockedlog/class/blockedlog.class.php @@ -990,19 +990,29 @@ class BlockedLog // Check parameters/properties if (!isset($this->amounts)) { // amount can be 0 for some events (like when module is disabled) - $this->error = $langs->trans("BlockLogNeedAmountsValue"); + $langs->load("errors"); + $this->error = $langs->trans("ErrorBlockLogNeedAmountsValue"); dol_syslog($this->error, LOG_WARNING); return -1; } if (empty($this->element)) { - $this->error = $langs->trans("BlockLogNeedElement"); + $langs->load("errors"); + $this->error = $langs->trans("ErrorBlockLogNeedElement"); + dol_syslog($this->error, LOG_WARNING); + return -2; + } + + if (empty($this->object_data)) { + $langs->load("errors"); + $this->error = $langs->trans("ErrorBlockLogNeedObject"); dol_syslog($this->error, LOG_WARNING); return -2; } if (empty($this->action)) { - $this->error = $langs->trans("BadParameterWhenCallingCreateOfBlockedLog"); + $langs->load("errors"); + $this->error = $langs->trans("ErrorBadParameterWhenCallingCreateOfBlockedLog"); dol_syslog($this->error, LOG_WARNING); return -3; } diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index c118bbd2457..20c66ad8f15 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -369,6 +369,10 @@ ErrorPaymentAmountMustNotBeNull=Error, payment amount must be defined and not ze ErrorOneLineContainsADisactivatedProduct=Error, at least one product is not or no more on sale or for purchase ErrorCalendarIsNotYetOpenOrHasBeenClosed=This calendar is not yet open or has been closed ErrorFieldClassNotFoundForClassName=The class "%s" managing the field type "%s" is not found. +ErrorBlockLogNeedAmountsValue=The unalterbale log object needs amounts values to be set +ErrorBlockLogNeedElement=The unalterbale log object needs element type to be set +ErrorBlockLogNeedObject=The unalterbale log object needs object to be set +ErrorBadParameterWhenCallingCreateOfBlockedLog=Bad parameter when calling create of blocked log # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. diff --git a/test/phpunit/AllTests.php b/test/phpunit/AllTests.php index f49d9994258..2c1c30bd9b5 100644 --- a/test/phpunit/AllTests.php +++ b/test/phpunit/AllTests.php @@ -253,6 +253,9 @@ class AllTests require_once dirname(__FILE__).'/AssetModelTest.php'; $suite->addTestSuite('AssetModelTest'); + require_once dirname(__FILE__).'/BlockedLogAndLNETest.php'; + $suite->addTestSuite('BlockedLogAndLNETest'); + // Rest require_once dirname(__FILE__).'/RestAPIUserTest.php'; $suite->addTestSuite('RestAPIUserTest'); diff --git a/test/phpunit/BlockedLogAndLNETest.php b/test/phpunit/BlockedLogAndLNETest.php new file mode 100644 index 00000000000..335a42ddd0d --- /dev/null +++ b/test/phpunit/BlockedLogAndLNETest.php @@ -0,0 +1,85 @@ + + * Copyright (C) 2023 Alexandre Janniaux + * Copyright (C) ---Put here your own copyright and developer email--- + * Copyright (C) 2024 Frédéric France + * + * 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 3 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, see . + */ + +/** + * \file test/unit/BlockedLogAndLNETest.php + * \ingroup core + * \brief PHPUnit test for the BlockedLog and LNE class. + */ + +global $conf,$user,$langs,$db; +//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver +//require_once 'PHPUnit/Autoload.php'; +require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; +require_once dirname(__FILE__).'/../../htdocs/compta/facture/class/facture.class.php'; +require_once dirname(__FILE__).'/../../htdocs/blockedlog/class/blockedlog.class.php'; +require_once dirname(__FILE__).'/CommonClassTest.class.php'; + +if (empty($user->id)) { + print "Load permissions for admin user nb 1\n"; + $user->fetch(1); + $user->loadRights(); +} +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; + +$langs->load("main"); + + +/** + * Class for PHPUnit tests + * + * @backupGlobals disabled + * @backupStaticAttributes enabled + * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. + */ +class BlockedLogAndLNETest extends CommonClassTest +{ + /** + * testBlockedLogAndLNETest + * + * @return int + */ + public function testBlockedLogAndLNETest() + { + global $conf,$user,$langs,$db; + $conf = $this->savconf; + $user = $this->savuser; + $langs = $this->savlangs; + $db = $this->savdb; + + $localobject = new BlockedLog($db); + $localobject->action = 'TEST'; + + $element = new Facture($db); + $element->initAsSpecimen(); + $localobject->element = $element->element; + $localobject->object_data = $element; + + $result = $localobject->create($user); + + print __METHOD__." result=".$result."\n"; + $this->assertLessThan($result, 0); + + return $result; + } + + + // TODO Add more tests +}