package service import ( "context" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestFolderService_Create(t *testing.T) { db, _, svc := setupFolderService(t) account := createTestAccount(t, db) portal := createTestPortal(t, db, account.ID) folder, err := svc.Create(context.Background(), portal.ID, &CreateFolderRequest{ Name: "My Folder", Slug: "my-folder", Position: 1, }) require.NoError(t, err) assert.Equal(t, "My Folder", folder.Name) assert.Equal(t, "my-folder", folder.Slug) assert.Equal(t, portal.ID, folder.PortalID) } func TestFolderService_GetByID(t *testing.T) { db, _, svc := setupFolderService(t) account := createTestAccount(t, db) portal := createTestPortal(t, db, account.ID) folder := createTestFolder(t, db, portal.ID) found, err := svc.GetByID(context.Background(), folder.ID) require.NoError(t, err) assert.Equal(t, folder.Name, found.Name) } func TestFolderService_GetByID_NotFound(t *testing.T) { _, _, svc := setupFolderService(t) _, err := svc.GetByID(context.Background(), 99999) assert.Error(t, err) } func TestFolderService_Update(t *testing.T) { db, _, svc := setupFolderService(t) account := createTestAccount(t, db) portal := createTestPortal(t, db, account.ID) folder := createTestFolder(t, db, portal.ID) pos := 5 updated, err := svc.Update(context.Background(), folder.ID, &UpdateFolderRequest{ Name: "Updated Folder", Position: &pos, }) require.NoError(t, err) assert.Equal(t, "Updated Folder", updated.Name) assert.Equal(t, 5, updated.Position) } func TestFolderService_Delete(t *testing.T) { db, _, svc := setupFolderService(t) account := createTestAccount(t, db) portal := createTestPortal(t, db, account.ID) folder := createTestFolder(t, db, portal.ID) err := svc.Delete(context.Background(), folder.ID) require.NoError(t, err) _, err = svc.GetByID(context.Background(), folder.ID) assert.Error(t, err) } func TestFolderService_ListByPortalID(t *testing.T) { db, _, svc := setupFolderService(t) account := createTestAccount(t, db) portal := createTestPortal(t, db, account.ID) _, err := svc.Create(context.Background(), portal.ID, &CreateFolderRequest{Name: "F1", Slug: "f1"}) require.NoError(t, err) _, err = svc.Create(context.Background(), portal.ID, &CreateFolderRequest{Name: "F2", Slug: "f2"}) require.NoError(t, err) folders, count, err := svc.ListByPortalID(context.Background(), portal.ID, 0, 10) require.NoError(t, err) assert.Equal(t, int64(2), count) assert.Len(t, folders, 2) }