//go:build integration package diary_test import ( "context" "testing" "github.com/food-ai/backend/internal/domain/diary" "github.com/food-ai/backend/internal/testutil" ) func TestDiaryRepository_Create_Defaults(t *testing.T) { pool := testutil.SetupTestDB(t) repo := diary.NewRepository(pool) requestContext := context.Background() // portions=0 → repository sets 1; source="" → repository sets "manual" entry, createError := repo.Create(requestContext, "test-user", diary.CreateRequest{ Date: "2026-03-15", MealType: "breakfast", Name: "Oatmeal", Portions: 0, Source: "", }) if createError != nil { t.Fatalf("create diary entry: %v", createError) } if entry.Portions != 1 { t.Errorf("expected portions=1, got %v", entry.Portions) } if entry.Source != "manual" { t.Errorf("expected source=manual, got %q", entry.Source) } } func TestDiaryRepository_ListByDate(t *testing.T) { pool := testutil.SetupTestDB(t) repo := diary.NewRepository(pool) requestContext := context.Background() userID := "list-date-user" date := "2026-03-15" _, createError := repo.Create(requestContext, userID, diary.CreateRequest{ Date: date, MealType: "breakfast", Name: "Oatmeal", }) if createError != nil { t.Fatalf("create first entry: %v", createError) } _, createError = repo.Create(requestContext, userID, diary.CreateRequest{ Date: date, MealType: "lunch", Name: "Salad", }) if createError != nil { t.Fatalf("create second entry: %v", createError) } entries, listError := repo.ListByDate(requestContext, userID, date) if listError != nil { t.Fatalf("list by date: %v", listError) } if len(entries) != 2 { t.Errorf("expected 2 entries, got %d", len(entries)) } } func TestDiaryRepository_ListByDate_OtherUserNotReturned(t *testing.T) { pool := testutil.SetupTestDB(t) repo := diary.NewRepository(pool) requestContext := context.Background() date := "2026-03-15" _, createError := repo.Create(requestContext, "user-A", diary.CreateRequest{ Date: date, MealType: "breakfast", Name: "Eggs", }) if createError != nil { t.Fatalf("create entry for user-A: %v", createError) } entries, listError := repo.ListByDate(requestContext, "user-B", date) if listError != nil { t.Fatalf("list by date for user-B: %v", listError) } if len(entries) != 0 { t.Errorf("expected 0 entries for user-B, got %d", len(entries)) } } func TestDiaryRepository_Delete_NotFound(t *testing.T) { pool := testutil.SetupTestDB(t) repo := diary.NewRepository(pool) requestContext := context.Background() deleteError := repo.Delete(requestContext, "00000000-0000-0000-0000-000000000000", "any-user") if deleteError != diary.ErrNotFound { t.Errorf("expected ErrNotFound, got %v", deleteError) } } func TestDiaryRepository_Delete_WrongUser(t *testing.T) { pool := testutil.SetupTestDB(t) repo := diary.NewRepository(pool) requestContext := context.Background() entry, createError := repo.Create(requestContext, "owner-user", diary.CreateRequest{ Date: "2026-03-15", MealType: "dinner", Name: "Pasta", }) if createError != nil { t.Fatalf("create entry: %v", createError) } // Attempt to delete another user's entry — should return ErrNotFound. deleteError := repo.Delete(requestContext, entry.ID, "different-user") if deleteError != diary.ErrNotFound { t.Errorf("expected ErrNotFound when deleting another user's entry, got %v", deleteError) } }