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>
32 lines
1.0 KiB
Java
32 lines
1.0 KiB
Java
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"));
|
|
}
|
|
}
|