Problem
CONTRIBUTING.md requires a "does not fire when it shouldn't" test per cleaning step, but there's no shared harness asserting the broad invariant: an already-clean frame should pass through fd.clean unchanged (idempotence / zero Actions).
Expected outcome
A parametrized test that feeds several already-clean frames through fd.clean and asserts the result is unchanged and records no data-modifying Actions.
Relevant files
- New test module under
tests/
- Reads the
Action model in src/freshdata/report.py
Acceptance criteria
Difficulty / skills
🧪 intermediate — pytest, pandas; optional hypothesis for generated clean frames.
Problem
CONTRIBUTING.mdrequires a "does not fire when it shouldn't" test per cleaning step, but there's no shared harness asserting the broad invariant: an already-clean frame should pass throughfd.cleanunchanged (idempotence / zeroActions).Expected outcome
A parametrized test that feeds several already-clean frames through
fd.cleanand asserts the result is unchanged and records no data-modifyingActions.Relevant files
tests/Actionmodel insrc/freshdata/report.pyAcceptance criteria
main.pytest -m "not online and not large") stays green; coverage gate holds.Difficulty / skills
🧪 intermediate — pytest, pandas; optional
hypothesisfor generated clean frames.