Pure-function invariants that example tests can't express at scale: - Weather.round_to_iemre_grid/2, HrrrClient.nearest_hrrr_hour/1, NexradClient.round_to_5min/1, NarrClient.snap_to_analysis_hour/1: each is idempotent, its output satisfies a grid/slot-membership predicate, and lies within a bounded distance of the input. - NarrClient.in_coverage?/1: coverage_end is an exclusive upper bound; any timestamp after it is out of coverage. - IemreFetchWorker.backoff/1: result is in [120, 21_600], monotonic non-decreasing in attempt, equals 120*2^(attempt-1) pre-cap. - Contact submission_changeset notes field: every non-blank string up to 2000 chars validates; any longer string is rejected. 22 new properties (139 → 161 including existing); all 2,300 tests green, credo clean. |
||
|---|---|---|
| .. | ||
| fixtures | ||
| microwaveprop | ||
| microwaveprop_web | ||
| mix/tasks | ||
| support | ||
| test_helper.exs | ||