Day 200๐ฎ
VapeShopInventoryAPI โ tested the public catalog's IsInStock
โ seeded stock vs no stock, called anonymously
โ mutation check failed the out-of-stock assert; 140 tests passing
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee
Day 199 ๐ฎ
VapeShopInventoryAPI โ 9 controllers now protected by role, + a public catalog endpoint (shows IsInStock instead of exact stock)
โ every role test mutation-checked
โ 139 tests
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee
Day 198๐ฎ
VapeShopInventoryAPI โ role-based access on 7 controllers
โ SaleItems, Settlements, Expenses restricted to Owner + Cashier
โ 8 new role tests, all mutation-checked Suite 133/133
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee
@drunk_vibecoder Thanks, good point. Today I added role tests (anonymous 401, Cashier 403), each mutation-checked: removing the attribute turns a 403 into a 404, so the check runs before the action. A DB-unchanged assertion on rejected writes is next on my list.
Day 197๐ฎ
VapeShopInventoryAPI โ role-based access, one controller at a time
โ 4 controllers restricted by role, 13 role tests, each mutation-checked
โ 125 tests, auth still in progress
https://t.co/fMHu5coXOD
#BuildInPublic#1000DaysOfCode#DevCommunity#dreckieee
Day 195 ๐ฎ
VapeShopInventoryAPI โ shared test login helper for auth
โ Tests mint Owner and Cashier tokens from the real TokenService
โ auth tests, mutation-checked
โ + C# concept reviews and a small practice API
https://t.co/fMHu5coXOD
#CSharp#1000DaysOfCode#dreckieee
@jmeans_business Fair point. The API came from a real shop's weekly headaches such as stock, restocks, unpaid receivables, and especially cash balance where there is a balance for digital cash and cash on hand. I am excited if this will be the solution for their headaches
@fngly343149 I still got a long way to go I think but Thanks! Honestly, after. I'm doing auth in small steps (entity, migration, seeding, login...) and the tests land in step 5, so I'm a retrofitter too. I have a safety net anyways, the shared test factory keeps the old 108 tests alive.
Day 190 ๐ฎ
VapeShopInventoryAPI โ scoped JWT auth + roles (Owner/Cashier) before coding
โ public catalog endpoint with fewer fields
โ first Owner seeded from env vars, HTTPS before deploy
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee
Day 189๐ฎ
VapeShopInventoryAPI โ aligned my Postman scripts to one convention, mutation-checked each change
โ status test first, one parse, expected values as literals
โ 36 tests passing locally
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#DevCommunity#dreckieee#postman
Day 188 ๐ฎ
VapeShopInventoryAPI โ end-to-end Postman cash flow check
โ restock, sale, close, then cash on hand moves by exactly 3000
โ hand-calculated expected values, mutation-checked
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee
Day 187 ๐ฎ
VapeShopInventoryAPI: started a cash flow test in Postman, 3 of 7 requests done.
Learned: save chained variables only on success; expected values are hand-calculated, never copied from the response.
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#postman#dreckieee
Day 186 ๐ฎ
VapeShopInventoryAPI โ 4 negative Postman requests (each expects 400) + a README guide
โ expected messages come from my code, not the response
โ every test mutation-checked
https://t.co/fMHu5coXOD
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#Postman
Day 185 ๐ฎ
Progress on my C# practice repo
โ Documented GradeBook (console app #68): Dictionary with a case-insensitive key comparer
โ TypeScript warm-up: union types + typeof narrowing
https://t.co/QsBNqHg7UW
#BuildInPublic#CSharp#1000DaysOfCode#DevCommunity#dreckieee