# Integration Tests for Vendor Bill Editable Totals ## Overview This document describes the integration tests implemented for the `vendor_bill_editable_totals` module. ## Test Coverage The integration tests verify the following workflows and requirements: ### 1. Full Workflow - Modify price_subtotal (Requirement 4.3) - Creates a vendor bill with invoice lines - Modifies the `price_subtotal` field - Verifies that `price_unit` is automatically recalculated - Saves the bill and verifies persistence - Validates that `price_total` is correctly computed with taxes ### 2. Full Workflow - Modify price_total (Requirement 4.3) - Creates a vendor bill with invoice lines and taxes - Modifies the `price_total` field - Verifies that `price_unit` is automatically recalculated - Ensures `price_subtotal` is correctly derived from `price_total` - Saves the bill and verifies persistence ### 3. Multiple Lines Workflow (Requirement 4.3) - Creates a vendor bill with multiple invoice lines - Modifies different fields on different lines - Verifies that each line is calculated independently - Ensures no interference between lines ### 4. Compatibility with Standard Validations (Requirement 4.3) - Verifies that standard Odoo validations still work - Tests that standard compute methods function correctly - Ensures the module doesn't break existing Odoo behavior - Validates that bills can be saved after modifications ### 5. Refund Workflow (Requirement 4.3) - Creates a vendor refund (credit note) - Tests with negative values - Verifies calculations work correctly with negative amounts - Ensures refunds can be saved ### 6. No Interference with Other Move Types (Requirement 4.2) - Creates a customer invoice (out_invoice) - Attempts to modify totals - Verifies that the module only affects vendor bills - Ensures customer invoices are not affected ## Running the Tests ### Standalone Tests The standalone integration tests can be run without a full Odoo database: ```bash python3 customaddons/vendor_bill_editable_totals/tests/run_integration_tests.py ``` ### Full Odoo Integration Tests For complete integration testing with Odoo's test framework: ```bash python3 odoo/odoo-bin -c odoo.conf --test-enable --stop-after-init \ -d odoo17 -u vendor_bill_editable_totals --log-level=test ``` Or to run only the integration tests: ```bash python3 odoo/odoo-bin -c odoo.conf --test-enable --stop-after-init \ -d odoo17 --test-tags vendor_bill_editable_totals.test_integration ``` ## Test Files - `test_integration.py` - Full Odoo integration tests using TransactionCase - `run_integration_tests.py` - Standalone test runner with mock objects ## Test Results All integration tests pass successfully: - ✓ Full workflow - modify price_subtotal - ✓ Full workflow - modify price_total - ✓ Multiple lines workflow - ✓ Compatibility with standard validations - ✓ Refund workflow - ✓ No interference with other move types ## Requirements Validated These integration tests validate the following requirements: - **Requirement 4.2**: Module doesn't interfere with standard Odoo flows - **Requirement 4.3**: Standard Odoo validations and computations work correctly ## Notes The integration tests complement the existing test suite: - **Unit tests** (`test_edge_cases.py`) - Test specific scenarios and edge cases - **Property-based tests** - Test universal properties across random inputs - **Integration tests** - Test full workflows from creation to save - **View tests** (`test_view_configuration.py`) - Test UI configuration Together, these tests provide comprehensive coverage of the module's functionality.