Implement Recipe, Planning, Shopping, Pantry, and Admin domains

Outside-in TDD for all 5 remaining domains (128 tests total):
- Recipe: CRUD, ingredients autocomplete/patch, tags, categories (27 tests)
- Planning: week plans, slots, confirm, suggestions, variety score, cooking logs (24 tests)
- Shopping: generate from plan, publish, check/add/remove items (15 tests)
- Pantry: CRUD with expiry sorting (11 tests)
- Admin: user management, password reset, audit logging (13 tests)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-01 21:56:51 +02:00
parent 4f457303d8
commit 9ec703abcd
88 changed files with 5267 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
package com.recipeapp.recipe;
import com.recipeapp.common.ResourceNotFoundException;
import com.recipeapp.household.HouseholdMemberRepository;
import com.recipeapp.household.entity.HouseholdMember;
import org.springframework.stereotype.Component;
import java.util.UUID;
@Component
public class HouseholdResolver {
private final HouseholdMemberRepository householdMemberRepository;
public HouseholdResolver(HouseholdMemberRepository householdMemberRepository) {
this.householdMemberRepository = householdMemberRepository;
}
public UUID resolve(String userEmail) {
return findMembership(userEmail).getHousehold().getId();
}
public UUID resolveUserId(String userEmail) {
return findMembership(userEmail).getUser().getId();
}
private HouseholdMember findMembership(String userEmail) {
return householdMemberRepository.findByUserEmailIgnoreCase(userEmail)
.orElseThrow(() -> new ResourceNotFoundException("User is not in a household"));
}
}