Your break-it-on-purpose check is exactly right, keep doing that (it's called mutation testing, the manual version).
Prompt that works for me:
Write tests for
calculatePriceinlib/pricing.ts. Do not mock anything fromlib/pricing.ts. Only mock network and database. Each test states input and exact expected output. After writing, change the function to return 0, run the tests, confirm they fail, then revert.
Pure calculations like price shouldn't need mocks at all; a test is just "these inputs give this number". If it can't be tested without mocks, the function probably mixes calculation with a database call, and splitting those makes both easier.