Spaces:
Running
Running
| """Source refresh tests.""" | |
| from datetime import datetime, timezone | |
| from coastwise.schemas import RefreshStatus | |
| from coastwise.source_cache import DEFAULT_SEED_CACHE_DIR, load_seed_cache | |
| from coastwise.source_refresh import refresh_official_sources | |
| from coastwise.source_registry import load_official_sources | |
| NOW = datetime(2026, 6, 14, 13, tzinfo=timezone.utc) | |
| def test_refresh_official_sources_reports_updated_unchanged_failed_and_partial(): | |
| sources = load_official_sources()[:3] | |
| cache = load_seed_cache(DEFAULT_SEED_CACHE_DIR) | |
| def fetcher(source): | |
| if source.id == sources[0].id: | |
| return cache.snapshots_by_source_id[source.id].raw_text + " updated" | |
| if source.id == sources[1].id: | |
| return cache.snapshots_by_source_id[source.id].raw_text | |
| raise OSError("network unavailable") | |
| result, refreshed_cache = refresh_official_sources(sources, cache, NOW, fetcher) | |
| assert result.source_results[sources[0].id] is RefreshStatus.UPDATED | |
| assert result.source_results[sources[1].id] is RefreshStatus.UNCHANGED | |
| assert result.source_results[sources[2].id] is RefreshStatus.FAILED | |
| assert sources[2].id in result.cache_preserved_source_ids | |
| assert refreshed_cache.snapshots_by_source_id[sources[2].id].content_hash | |
| assert "failed" in result.user_message.lower() | |