Commit graph

211 commits

Author SHA1 Message Date
Frédéric FRANCE
c8aa61198b
NEW Add PHPUnit test for getElementProperties() (#39550)
getElementProperties() is the central registry used across the
codebase (fetchObjectByElement(), generic links/extrafields, document
generation...) to resolve an element type string into its module,
classpath, classfile, classname, table and parent element, but it had
no test coverage despite being a ~480 line function with about 60
special-case branches plus several generic fallback paths.

Covers the representative paths rather than every branch:
- the generic completion of classfile/classname from subelement
  (project)
- the 'myobject@mymodule' external-module syntax, including the
  surprising fact that table_element keeps the raw '@'-string
- the 'myobject_mysubobject' syntax combined with a dedicated case
  branch overriding module (project_task)
- the generic '...det' object-line fallback for an unknown module,
  including the non-capitalized classname it produces (myobjectdet)
- a real '...det' case where the generic fallback runs first and a
  dedicated branch only adds parent_element on top (contratdet)
- a real '...det' case where the dedicated branch instead overrides
  classpath and classname set by the generic fallback (facturedet)
- the action/actioncomm special case, where table_element differs
  from the raw input element
2026-08-17 04:44:13 +02:00
Frédéric FRANCE
0df696dbf6
NEW Add PHPUnit tests for price() and dol_print_date() (#39548)
These are two of the most heavily used display functions in the whole
codebase (every page showing an amount or a date calls one of them),
yet neither had any test coverage.

testPrice covers: default rounding (min of MAIN_MAX_DECIMALS_UNIT/TOT),
keeping extra decimals present in the input, en_US vs fr_FR separators,
HTML mode ( ), international separators via $outlangs='none',
forcerounding (explicit decimal count and 'MU'), and currency symbol
placement (before for USD, after for EUR).

testDolPrintDate covers: empty input returning '', timestamp 0 being a
valid date, the language-independent format shortcuts (dayrfc,
standard, dayhourrfc, dayhourlog), a literal strftime-style format
string, and tzoutput=true (GMT) vs tzoutput=false (server TZ, forced
to UTC for the comparison) producing the same result.
2026-08-15 16:09:30 +02:00
Frédéric FRANCE
2df7fd755c
FIX flaky testIsValidMXRecord (usace.army.mil DNS filtering) (#39546)
testIsValidMXRecord() does a real live DNS lookup via
isValidMXRecord(), which is inherently CI-environment dependent. In a
recent Travis run, the assertion for usace.army.mil (result expected
1) failed while the other three domains in the same test resolved
correctly, indicating the .mil zone specifically was filtered/
unreachable from that CI network rather than any bug in
isValidMXRecord() itself - .mil DNS is a known target for network
filtering on shared CI infrastructure.

Replace it with microsoft.com, which has the same "domain with a
valid MX record" semantics but a far more globally reachable, stable
DNS setup less likely to be blocked by CI network policies.
2026-08-15 16:04:58 +02:00
Laurent Destailleur
2469bb54ae Merge branch '24.0' of git@github.com:Dolibarr/dolibarr.git into 24.0 2026-08-13 17:48:25 +02:00
Laurent Destailleur
48958ae565 Automated merge from 22.0 to 23.0 by tool pullmerge.sh 2026-08-13 17:38:17 +02:00
Laurent Destailleur
d119dd688e Automated merge from 21.0 to 22.0 by tool pullmerge.sh 2026-08-13 17:18:40 +02:00
Laurent Destailleur
61ef9d017a Automated merge from 20.0 to 21.0 by tool pullmerge.sh 2026-08-13 15:52:37 +02:00
Laurent Destailleur
12687f8370 Fix CVE-2026-71510 forgeSQLFromUniversalSearchCriteria must disallow
some search criteria
2026-08-09 03:21:39 +02:00
TowyTowy
11a736d69e
FIX phone formatting dropping and duplicating digits for JO and PE (#39398)
The substr offsets in dol_print_phone did not line up with the segment
lengths, so formatted numbers repeated one digit and lost another.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 17:54:08 +02:00
Laurent Destailleur
f1515f5c80 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into 24.0 2026-08-06 00:35:00 +02:00
Laurent Destailleur
cad7be6dcb Merge branch '22.0' of git@github.com:Dolibarr/dolibarr.git into 23.0 2026-08-05 23:41:10 +02:00
Laurent Destailleur
d5dde5a7b2 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 22.0 2026-08-05 23:24:47 +02:00
Jam Balaya
4116c251da
FIX Buyer state/province VAT default (VATRULE 2) ignores active and entity filters (#39279)
get_default_tva() VATRULE 2 selects the VAT rate attached to the buyer
department (c_tva.fk_department_buyer) but filters only on the department id.
Unlike get_product_vat_for_country(), it omits t.active and t.entity, so a
disabled rate (or a rate from another entity) can be returned as the default,
and because of the taux DESC ordering an inactive higher rate wins over the
active one.

Add "AND t.active > 0" and "AND t.entity IN (getEntity('c_tva'))" to the query.
The ordering is unchanged, so the documented behaviour is preserved: the rate
flagged Default (use_default) wins, otherwise the highest active rate.

Add testGetDefaultTvaForBuyerState() covering VATRULE 2, which was previously
untested: it asserts the active department rate is selected and the inactive
one is ignored.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 13:04:30 +02:00
Laurent Destailleur
1d5acc6268 FIX bad dol_eval test when method is wrong 2026-07-13 13:17:41 +02:00
Laurent Destailleur
6eebb7f3d7 Doc 2026-06-18 19:40:33 +02:00
Laurent Destailleur
8ae3e40516 CI 2026-03-25 22:56:11 +01:00
Laurent Destailleur
bcedf595f3 Update phpunit tests 2026-03-02 04:49:12 +01:00
MDW
69e3d4b5df
UIUX: Interpret first token as thousands separator 21.500,00 (when French, ...). (#33832)
* Qual: Add testcase for price2num to convert '21.500,00' in FR

* NEW: Accept numbers like 1.213,00 in locales with whitespace/empty thousands separator

# NEW: Accept numbers like 1.213,00 in locales with whitespace/empty thousands separator

- Graceful handling of comma and dot as decimal points and thousands separators in the `price2num` function.
- Improved the `getNonEmptyString` function to include proper indentation and spacing (automatic).

* Add testcases for price2num

* en_US tests for invalid prices, add doc for price2num regex

* Restore lost test to validate compatibility

* Update FunctionsLibTest.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-04-21 11:57:13 +02:00
ldestailleur
f4d7ddaaf4 Add more phpunit tests 2025-04-16 18:54:43 +02:00
ldestailleur
57268af48e Add more phpunit tests 2025-04-16 18:42:20 +02:00
ldestailleur
c1649c04b4 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-04-16 18:28:45 +02:00
ldestailleur
df9fea28f1 Complete #33605 by adding phpunit tests 2025-03-27 10:39:08 +01:00
ldestailleur
33c7378d2d Add phpunit test 2025-03-26 21:01:46 +01:00
ldestailleur
7a0e9d4dc1 Accept utf8 chars in the natural_search in mode 3. Close #32930 2025-03-06 04:00:42 +01:00
ldestailleur
996770b8f2 Fix protect use of sanitize to make sql injection 2025-03-06 03:39:47 +01:00
ldestailleur
caead5de9f Fix protect use of sanitize to make sql injection 2025-03-06 03:29:54 +01:00
ldestailleur
1391c61a64 Remove test, not yet supported in v20 2025-03-05 19:11:34 +01:00
ldestailleur
86f836b652 Merge backport 2025-03-04 21:27:10 +01:00
ldestailleur
04b0b3d855 FIX in dev for #33324 2025-03-04 20:50:54 +01:00
Laurent Destailleur (aka Eldy)
4c6498b2f8 More phpunit test 2025-01-27 11:41:59 +01:00
Laurent Destailleur (aka Eldy)
c2d2de53f9 Accept img src=data into dolPrintHTML 2025-01-27 10:51:36 +01:00
Laurent Destailleur
3aff6cded3 More phpuint tests 2026-01-07 14:14:37 +01:00
Laurent Destailleur
d07581555a Fix travis 2025-11-20 21:13:14 +01:00
Laurent Destailleur
a94ab3874d Close #35819 by using a new function dol_clone_in_array() 2025-11-20 19:40:57 +01:00
Laurent Destailleur
5aaf9cd565 NEW Add hook on calcula_price() and get_default_tva() 2025-11-18 16:57:50 +01:00
Frédéric FRANCE
d8b167851c
add a combining character in dol_string_unaccent test (#35153)
* add a combining character in dol_string_unaccent test

* fix
2025-09-03 12:14:33 +02:00
Laurent Destailleur
ae52d75335 NEW Can add more tags to default tags in dolPrintHTML 2026-01-20 12:30:08 +01:00
Laurent Destailleur
c2a3a93342 Debug v21 - renameto avoid future conflit 2024-11-24 14:58:40 +01:00
Laurent Destailleur
eaf92c9fa4 FIX better regex to detect substitution key 2024-10-30 19:53:40 +01:00
Laurent Destailleur
33aabd271c Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into develop 2024-10-09 00:17:03 +02:00
Laurent Destailleur
67156d03ca Fix phpunit 2024-10-09 00:13:56 +02:00
Laurent Destailleur
2ad1c61976 Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into develop 2024-09-15 12:33:25 +02:00
Laurent Destailleur
3ee51d5311 Add test on domain .entreprises 2024-09-15 11:24:34 +02:00
hansemschnokeloch
4849e04fc9 Fix #29292 (#30720)
* fix #2810

* Fix #29292
2024-08-23 15:27:55 +02:00
hansemschnokeloch
cfb44ce196
Fix #29292 (#30720)
* fix #2810

* Fix #29292
2024-08-23 15:27:10 +02:00
Laurent Destailleur
bcb63ae7b4 Fix phpunit 2024-07-26 04:10:10 +02:00
Laurent Destailleur
d863d455b2 Fix phpunit 2024-07-25 17:51:45 +02:00
Laurent Destailleur
1cb57b03ae Debug v20 - fix dol_escape_htmltag 2024-07-22 20:12:35 +02:00
Lucas Marcouiller
d63687da6d
Fix dol_escape_htmltag to prevent bad strip of char (#29931)
Co-authored-by: Hystepik <lmarcouiller@nltechno.com>
2024-06-08 14:51:32 +02:00
Laurent Destailleur
27bc1cddad Debug v20 2024-05-08 15:43:46 +02:00