central/tests
Matt Johnson c39e3174b8 fix: preserve last_completed_poll across adapter disable/enable
Previously, _stop_adapter() used pop() to remove adapter state,
which lost last_completed_poll. On re-enable, a fresh state was
created, causing immediate poll and violating rate-limit guarantee.

Changes:
- Add is_running property to AdapterState
- _stop_adapter: preserve state, just cancel task
- _start_adapter: reuse existing stopped state if present
- Add _remove_adapter for full cleanup when adapter is deleted
- _on_config_change: call _remove_adapter for deleted adapters

Integration tests verify:
- Test A: gap > cadence -> immediate poll (correct)
- Test B: gap < cadence -> wait until last_poll + cadence (was broken)
- Test C: delete + re-add -> fresh state (correct)

Tests-fail-before-fix verified: Test A/B failed on unfixed code
with "State was removed on stop!", pass with fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-16 02:37:57 +00:00
..
__init__.py
README.md docs(tests): add README documenting CENTRAL_TEST_DB_DSN env var 2026-05-16 01:36:40 +00:00
test_bootstrap_config.py feat(config): add bootstrap config from environment 2026-05-15 23:07:33 +00:00
test_config_source.py test: add ConfigSource and hot-reload rate-limit tests 2026-05-16 01:55:47 +00:00
test_config_store.py feat(config_store): add listener reconnect with exponential backoff 2026-05-16 01:36:35 +00:00
test_crypto.py feat(config): add AES-256-GCM crypto primitives 2026-05-15 23:07:41 +00:00
test_models.py fix(tests): replace echo6 reference with central.local 2026-05-16 01:36:44 +00:00
test_nws_normalization.py
test_supervisor_hotreload.py test: add ConfigSource and hot-reload rate-limit tests 2026-05-16 01:55:47 +00:00
test_supervisor_integration.py fix: preserve last_completed_poll across adapter disable/enable 2026-05-16 02:37:57 +00:00

Central Tests

Test Database

Some tests (notably test_config_store.py) require a real PostgreSQL database. By default, tests connect to:

postgresql://central_test:testpass@localhost/central_test

If your test database uses different credentials, set the CENTRAL_TEST_DB_DSN environment variable:

export CENTRAL_TEST_DB_DSN="postgresql://myuser:mypass@localhost/mydb"
uv run pytest tests/test_config_store.py