113 lines
5.4 KiB
Markdown
113 lines
5.4 KiB
Markdown
# REQ-001 Test Catalog
|
|
|
|
Test ID: TC-REQ-001-001
|
|
Verifies:
|
|
- REQ-001.01-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_updates_only_profit_buffer_and_records_executed_at_and_tax
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_tax_defaults_to_zero_when_omitted
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_tax_omitted_persists_zero_on_real_postgres
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-002
|
|
Verifies:
|
|
- REQ-001.01-AC02
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_rejects_invalid_amount_tax_and_unrelated_fields_without_state_change
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_rejects_sub_minimum_numeric_precision
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_rejects_amount_exceeding_numeric_20_8
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-003
|
|
Verifies:
|
|
- REQ-001.02-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_updates_only_profit_buffer_and_records_executed_at_and_tax
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_tax_defaults_to_zero_when_omitted
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_precision_and_reversal_round_trip_on_real_postgres
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-004
|
|
Verifies:
|
|
- REQ-001.03-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_executed_at_uses_utc_midnight_independent_of_server_timezone
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-005
|
|
Verifies:
|
|
- REQ-001.04-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_unified_ledger_includes_dividend_fields
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_unified_ledger_openapi_contains_nullable_amount
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_unified_ledger_history_item_rejects_dividend_numeric_branch_payload
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-006
|
|
Verifies:
|
|
- REQ-001.05-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_duplicate_requires_confirmation
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_with_different_decimal_amount_is_not_treated_as_duplicate
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-007
|
|
Verifies:
|
|
- REQ-001.05-AC02
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_duplicate_requires_confirmation
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_reversed_dividend_is_excluded_from_future_duplicate_candidate_matching
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-008
|
|
Verifies:
|
|
- REQ-001.05-AC03
|
|
Test reference:
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_cold_repositories_concurrent_dividend_requests_follow_duplicate_contract
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-009
|
|
Verifies:
|
|
- REQ-001.06-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_reversal_decreases_profit_buffer
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_duplicate_reversal_is_rejected_without_state_change
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_reversal_insufficient_buffer_is_rejected_without_state_change
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_precision_and_reversal_round_trip_on_real_postgres
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-010
|
|
Verifies:
|
|
- REQ-001.07-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_duplicate_check_does_not_collapse_decimals_that_can_alias_in_float
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_tax_does_not_collapse_decimals_that_can_alias_in_float
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_dividend_with_different_decimal_amount_is_not_treated_as_duplicate
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_amount_alias_prone_decimals_are_not_misdetected_as_duplicate_in_api_on_real_postgres
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_precision_and_reversal_round_trip_on_real_postgres
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_large_existing_buffer_plus_min_dividend_is_rejected_before_snapshot_divergence
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_dividend_tax_alias_prone_decimals_round_trip_distinctly_on_real_postgres
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-011
|
|
Verifies:
|
|
- REQ-001.08-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_confirm_duplicate_false_is_accepted_for_non_dividend_actions
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_confirm_duplicate_true_is_rejected_for_non_dividend_actions
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_unified_ledger_keeps_non_dividend_amount_as_number
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_existing_high_precision_snapshot_still_allows_legacy_manual_actions
|
|
- tests/test_bat025_portfolio_ledger_manual_metadata_migration.py::test_large_invest_and_large_dividend_tax_metadata_are_accepted_when_snapshot_is_safe
|
|
Automated: true
|
|
|
|
Test ID: TC-REQ-001-012
|
|
Verifies:
|
|
- REQ-001.09-AC01
|
|
Test reference:
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_manual_write_rejects_service_token
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_owner_mismatch_returns_403
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_daemon_managed_requires_confirmation_then_records_evidence
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_manual_ledger_conflict_message_is_sanitized
|
|
- tests/test_v1_portfolios_manual_ledger.py::test_manual_ledger_conflict_secret_is_not_rendered_in_logs
|
|
Automated: true
|