My thinking was this:

- Tracking the count incrementally, there is a possibility that if something unexpected happens, a count may lose sync with reality. In that case, it will be quite valuable to have a manager method that can clean up the mess. So that's why the logic is in the manager.

- It's valuable to keep "integration" tests separate from unit tests. We haven't yet made a clear separation between tests that can be slow, and tests that should be very fast. (One day it would be nice to do so, and have only jenkins run the slow ones, with maybe a flag for "run-tests.sh" to include the slow ones) However, my expectation is that migration tests in particular will always be a good place for "slow" tests that hit the database and manipulate live data. So that's why I put the live-data test in the migration test.