hass.tibber_prices/tests
Julian Pawlowski 9c3c094305 fix(calculations): handle negative electricity prices correctly
Fixed multiple calculation issues with negative prices (Norway/Germany
renewable surplus scenarios):

Bug #6: Rating threshold validation with dead code
- Added threshold validation (low >= high) with warning
- Returns NORMAL as fallback for misconfigured thresholds

Bug #7: Min/Max functions returning 0.0 instead of None
- Changed default from 0.0 to None when window is empty
- Prevents misinterpretation (0.0 looks like price with negatives)

Bug #9: Period price diff percentage wrong sign with negative reference
- Use abs(ref_price) in percentage calculation
- Correct percentage direction for negative prices

Bug #10: Trend diff percentage wrong sign with negative current price
- Use abs(current_interval_price) in percentage calculation
- Correct trend direction when prices cross zero

Bug #11: later_half_diff calculation failed for negative prices
- Changed condition from `if current_interval_price > 0` to `!= 0`
- Use abs(current_interval_price) for percentage

Changes:
- utils/price.py: Add threshold validation, use abs() in percentages
- utils/average.py: Return None instead of 0.0 for empty windows
- period_statistics.py: Use abs() for reference prices
- trend.py: Use abs() for current prices, fix zero-check condition
- tests: 95+ new tests covering negative/zero/mixed price scenarios

Impact: All calculations work correctly with negative electricity prices.
Percentages show correct direction regardless of sign.
2025-11-22 04:45:23 +00:00
..
__init__.py test: add pytest framework and midnight-crossing tests 2025-11-21 23:47:01 +00:00
test_avg_none_fallback.py fix(calculations): handle negative electricity prices correctly 2025-11-22 04:45:23 +00:00
test_cache_age.py fix(coordinator): use coordinator update timestamp for cache validity 2025-11-22 04:44:22 +00:00
test_cache_validity.py fix(coordinator): use coordinator update timestamp for cache validity 2025-11-22 04:44:22 +00:00
test_cache_validity_after_midnight.py fix(coordinator): use coordinator update timestamp for cache validity 2025-11-22 04:44:22 +00:00
test_chart_data_push_updates.py feat(sensors): add lifecycle callback for chart_data_export sensor 2025-11-22 04:44:38 +00:00
test_config_validators.py refactor(config): use negative values for Best Price min_distance 2025-11-22 04:44:57 +00:00
test_midnight_periods.py test: add pytest framework and midnight-crossing tests 2025-11-21 23:47:01 +00:00
test_midnight_turnover.py refactor(config): use negative values for Best Price min_distance 2025-11-22 04:44:57 +00:00
test_minmax_none_fallback.py fix(calculations): handle negative electricity prices correctly 2025-11-22 04:45:23 +00:00
test_percentage_calculations.py fix(calculations): handle negative electricity prices correctly 2025-11-22 04:45:23 +00:00
test_price_calculations.py fix(calculations): handle negative electricity prices correctly 2025-11-22 04:45:23 +00:00
test_rating_threshold_validation.py fix(calculations): handle negative electricity prices correctly 2025-11-22 04:45:23 +00:00