package mocks import ( "context" "github.com/food-ai/backend/internal/domain/diary" ) // MockDishRepository is a test double implementing diary.DishRepository. type MockDishRepository struct { FindOrCreateFn func(ctx context.Context, name string) (string, bool, error) } func (m *MockDishRepository) FindOrCreate(ctx context.Context, name string) (string, bool, error) { if m.FindOrCreateFn != nil { return m.FindOrCreateFn(ctx, name) } return "", false, nil } // MockRecipeRepository is a test double implementing diary.RecipeRepository. type MockRecipeRepository struct { FindOrCreateRecipeFn func(ctx context.Context, dishID string, calories, proteinG, fatG, carbsG float64) (string, bool, error) } func (m *MockRecipeRepository) FindOrCreateRecipe(ctx context.Context, dishID string, calories, proteinG, fatG, carbsG float64) (string, bool, error) { if m.FindOrCreateRecipeFn != nil { return m.FindOrCreateRecipeFn(ctx, dishID, calories, proteinG, fatG, carbsG) } return "", false, nil } // MockDiaryRepository is a test double implementing diary.DiaryRepository. type MockDiaryRepository struct { ListByDateFn func(ctx context.Context, userID, date string) ([]*diary.Entry, error) CreateFn func(ctx context.Context, userID string, req diary.CreateRequest) (*diary.Entry, error) DeleteFn func(ctx context.Context, id, userID string) error GetRecentFn func(ctx context.Context, userID string, limit int) ([]*diary.RecentDiaryItem, error) } func (m *MockDiaryRepository) ListByDate(ctx context.Context, userID, date string) ([]*diary.Entry, error) { return m.ListByDateFn(ctx, userID, date) } func (m *MockDiaryRepository) Create(ctx context.Context, userID string, req diary.CreateRequest) (*diary.Entry, error) { return m.CreateFn(ctx, userID, req) } func (m *MockDiaryRepository) Delete(ctx context.Context, id, userID string) error { return m.DeleteFn(ctx, id, userID) } func (m *MockDiaryRepository) GetRecent(ctx context.Context, userID string, limit int) ([]*diary.RecentDiaryItem, error) { if m.GetRecentFn != nil { return m.GetRecentFn(ctx, userID, limit) } return []*diary.RecentDiaryItem{}, nil }