odoo/odoo#237861
Created by fw-bot
Statuses:
- legal/cla: Contributor License Agreement check
- ci/runbot: Odoo Test Suite
- ci/upgrade_enterprise: Test upgrades for enterprise master
- ci/template: Contact runbot team on discord for help.
- ci/style: Optional style check. Ignore it only if strictly necessary.
- ci/security: Required security check. Can only be ignored by security team.
- ci/l10n: (runtime 18s)
- label
- odoo-dev:19.0-18.0-bp-xmlsavehelp-yoni-480785-fw
- head
- d200f08e66f385a5b9961665bde4952db22c8726
- merged
- 3 days ago by Accounting, Laurent Smet (las)
| odoo/odoo | |
|---|---|
| 18.0 | #237285 |
| saas-18.2 | #237435 |
| saas-18.3 | #237834 |
| saas-18.4 | #237848 |
| 19.0 | #237861 |
| master | #238043 |
[IMP] account: assert or save XML test helpers
> This is a backport of the merged #235565 - with a couple of improvements & adaptations to the test files.
This commit adds helpers and improves on the way we assert XML files in AccountTestInvoicingCommon and all accounting test that extend from it. From now on, all accounting test code that assert an XML tree/string to an XML file should call the assert_xml helper, and design their test file name/location/etc. around this framework.
This approach has a few major benefits:
Assert / Save XML
When testing XML files, we often need to perform create/read/update operations on the asserted XML to make sure it corresponds to the most updated/intended data. Previously, to save something to an XML, a developer would need to write their own local helpers to save the XML in the right directory. This was cumbersome and error-prone, so we decided to design a helper that allows developer to immediately save AND/OR update the asserted XML: to save/update an XML, we can simply add SAVE_XML as an additional test tags.
Better test naming and optional subfolder management
To better organize test files, the assert_xml method allows us to write just the test key name (without .xml), and the framework will automatically get the XML to assert/save from the test_files directory. An optional subfolder parameter is also added to allow writing to specific subfolder within test_files.
Better ___ignore___ management in assertion XMLs
Sometimes, we want to ignore a few XML node that are not relevant, or have content that are not deterministic (changes on every test run). To handle this, previously, developers would need to modify the assertion XML content by hand or write their own local script to do so.
With this new framework, we just need to add an ignore_schema.xml file somewhere in the test_files directory. If put inside a subfolder, it will be applied with more priority towards the XML that are put on that specific subfolder.
Save "pure" XML (before applying ___ignore___) in temporary folder
When calling SAVE_XML, before applying the ignore patches, the XML will be saved in a temporary folder (same folder as the screenshots for tours), so that developers can use them in external tests in the future, and for any other saving reasons.
In addition, this commit also:
- add
extra_tagshelper to save all the common tags for EDIs, for a better way to enableEXTERNAL_MODEtesting inspired byl10n_mx_edi - convert some non-assert XML test helpers into a class method
- canonicalize the XML to ensure consistency of the generated test files following the C14N Version 2 standard. (Deterministic namespaces location, sorted attributes, etc.)