2022-10-11 03:47:53 +08:00
|
|
|
package foldertest
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
2022-10-26 22:15:14 +08:00
|
|
|
"github.com/grafana/grafana/pkg/services/folder"
|
2025-01-30 07:44:42 +08:00
|
|
|
"github.com/grafana/grafana/pkg/services/search/model"
|
2022-10-11 03:47:53 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
type FakeService struct {
|
2025-04-02 12:30:17 +08:00
|
|
|
ExpectedFoldersRef []*folder.FolderReference
|
2023-04-27 23:00:09 +08:00
|
|
|
ExpectedFolders []*folder.Folder
|
|
|
|
ExpectedFolder *folder.Folder
|
2025-01-30 07:44:42 +08:00
|
|
|
ExpectedHitList model.HitList
|
2023-04-27 23:00:09 +08:00
|
|
|
ExpectedError error
|
|
|
|
ExpectedDescendantCounts map[string]int64
|
2025-03-18 18:56:06 +08:00
|
|
|
LastQuery folder.GetFoldersQuery
|
2025-07-30 05:52:57 +08:00
|
|
|
foldersByUID map[string]*folder.Folder
|
2022-10-11 03:47:53 +08:00
|
|
|
}
|
|
|
|
|
2022-11-11 21:28:24 +08:00
|
|
|
func NewFakeService() *FakeService {
|
2025-07-30 05:52:57 +08:00
|
|
|
return &FakeService{
|
|
|
|
foldersByUID: make(map[string]*folder.Folder),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FakeService) AddFolder(f *folder.Folder) {
|
|
|
|
if s.foldersByUID == nil {
|
|
|
|
s.foldersByUID = make(map[string]*folder.Folder)
|
|
|
|
}
|
|
|
|
s.foldersByUID[f.UID] = f
|
|
|
|
s.ExpectedFolders = append(s.ExpectedFolders, f)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *FakeService) SetFolders(folders map[string]*folder.Folder) {
|
|
|
|
s.foldersByUID = folders
|
|
|
|
s.ExpectedFolders = make([]*folder.Folder, 0, len(folders))
|
|
|
|
for _, f := range folders {
|
|
|
|
s.ExpectedFolders = append(s.ExpectedFolders, f)
|
|
|
|
}
|
2022-11-11 21:28:24 +08:00
|
|
|
}
|
|
|
|
|
2022-10-26 22:15:14 +08:00
|
|
|
var _ folder.Service = (*FakeService)(nil)
|
|
|
|
|
2025-04-02 12:30:17 +08:00
|
|
|
func (s *FakeService) GetChildren(ctx context.Context, q *folder.GetChildrenQuery) ([]*folder.FolderReference, error) {
|
2025-07-30 05:52:57 +08:00
|
|
|
if s.ExpectedError != nil {
|
|
|
|
return nil, s.ExpectedError
|
|
|
|
}
|
|
|
|
|
|
|
|
if s.ExpectedFoldersRef != nil {
|
|
|
|
return s.ExpectedFoldersRef, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
var result []*folder.FolderReference
|
|
|
|
for _, f := range s.ExpectedFolders {
|
|
|
|
if f.OrgID == q.OrgID && f.ParentUID == q.UID {
|
|
|
|
result = append(result, f.ToFolderReference())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result, nil
|
2022-10-11 03:47:53 +08:00
|
|
|
}
|
2025-04-02 12:30:17 +08:00
|
|
|
func (s *FakeService) GetChildrenLegacy(ctx context.Context, q *folder.GetChildrenQuery) ([]*folder.FolderReference, error) {
|
|
|
|
return s.ExpectedFoldersRef, s.ExpectedError
|
2025-01-14 05:15:35 +08:00
|
|
|
}
|
2023-01-26 16:21:10 +08:00
|
|
|
|
|
|
|
func (s *FakeService) GetParents(ctx context.Context, q folder.GetParentsQuery) ([]*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolders, s.ExpectedError
|
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) GetParentsLegacy(ctx context.Context, q folder.GetParentsQuery) ([]*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolders, s.ExpectedError
|
|
|
|
}
|
2023-01-26 16:21:10 +08:00
|
|
|
|
2022-11-10 17:41:03 +08:00
|
|
|
func (s *FakeService) Create(ctx context.Context, cmd *folder.CreateFolderCommand) (*folder.Folder, error) {
|
2022-10-11 03:47:53 +08:00
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) CreateLegacy(ctx context.Context, cmd *folder.CreateFolderCommand) (*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
|
|
|
|
2024-01-18 22:12:49 +08:00
|
|
|
func (s *FakeService) Get(ctx context.Context, q *folder.GetFolderQuery) (*folder.Folder, error) {
|
2025-07-30 05:52:57 +08:00
|
|
|
if q.UID != nil && s.foldersByUID != nil {
|
|
|
|
if f, exists := s.foldersByUID[*q.UID]; exists {
|
|
|
|
return f, nil
|
|
|
|
}
|
|
|
|
}
|
2022-11-11 21:28:24 +08:00
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) GetLegacy(ctx context.Context, q *folder.GetFolderQuery) (*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
|
|
|
|
2022-12-20 21:00:33 +08:00
|
|
|
func (s *FakeService) Update(ctx context.Context, cmd *folder.UpdateFolderCommand) (*folder.Folder, error) {
|
2022-11-11 21:28:24 +08:00
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
2022-10-11 03:47:53 +08:00
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) UpdateLegacy(ctx context.Context, cmd *folder.UpdateFolderCommand) (*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
|
|
|
|
2022-12-20 23:38:09 +08:00
|
|
|
func (s *FakeService) Delete(ctx context.Context, cmd *folder.DeleteFolderCommand) error {
|
2022-11-10 16:42:32 +08:00
|
|
|
return s.ExpectedError
|
2022-10-11 03:47:53 +08:00
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) DeleteLegacy(ctx context.Context, cmd *folder.DeleteFolderCommand) error {
|
|
|
|
return s.ExpectedError
|
|
|
|
}
|
2022-10-26 22:15:14 +08:00
|
|
|
|
2022-11-10 22:06:52 +08:00
|
|
|
func (s *FakeService) Move(ctx context.Context, cmd *folder.MoveFolderCommand) (*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) MoveLegacy(ctx context.Context, cmd *folder.MoveFolderCommand) (*folder.Folder, error) {
|
|
|
|
return s.ExpectedFolder, s.ExpectedError
|
|
|
|
}
|
2023-04-14 17:17:23 +08:00
|
|
|
|
|
|
|
func (s *FakeService) RegisterService(service folder.RegistryService) error {
|
|
|
|
return s.ExpectedError
|
|
|
|
}
|
2023-04-24 21:57:28 +08:00
|
|
|
|
2024-01-18 22:12:49 +08:00
|
|
|
func (s *FakeService) GetDescendantCounts(ctx context.Context, q *folder.GetDescendantCountsQuery) (folder.DescendantCounts, error) {
|
2023-04-27 23:00:09 +08:00
|
|
|
return s.ExpectedDescendantCounts, s.ExpectedError
|
2023-04-24 21:57:28 +08:00
|
|
|
}
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) GetDescendantCountsLegacy(ctx context.Context, q *folder.GetDescendantCountsQuery) (folder.DescendantCounts, error) {
|
|
|
|
return s.ExpectedDescendantCounts, s.ExpectedError
|
|
|
|
}
|
2024-01-25 15:27:13 +08:00
|
|
|
|
|
|
|
func (s *FakeService) GetFolders(ctx context.Context, q folder.GetFoldersQuery) ([]*folder.Folder, error) {
|
2025-07-30 05:52:57 +08:00
|
|
|
if s.foldersByUID != nil && len(q.UIDs) > 0 {
|
|
|
|
var result []*folder.Folder
|
|
|
|
for _, uid := range q.UIDs {
|
|
|
|
if f, exists := s.foldersByUID[uid]; exists {
|
|
|
|
result = append(result, f)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
folders := make([]*folder.Folder, 0, len(s.ExpectedFolders))
|
|
|
|
for _, f := range s.ExpectedFolders {
|
|
|
|
if f.OrgID == q.OrgID {
|
|
|
|
folders = append(folders, f)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return folders, s.ExpectedError
|
2024-01-25 15:27:13 +08:00
|
|
|
}
|
2025-01-30 07:44:42 +08:00
|
|
|
|
|
|
|
func (s *FakeService) SearchFolders(ctx context.Context, q folder.SearchFoldersQuery) (model.HitList, error) {
|
|
|
|
return s.ExpectedHitList, s.ExpectedError
|
|
|
|
}
|
|
|
|
|
2025-01-14 05:15:35 +08:00
|
|
|
func (s *FakeService) GetFoldersLegacy(ctx context.Context, q folder.GetFoldersQuery) ([]*folder.Folder, error) {
|
2025-03-18 18:56:06 +08:00
|
|
|
s.LastQuery = q
|
2025-01-14 05:15:35 +08:00
|
|
|
return s.ExpectedFolders, s.ExpectedError
|
|
|
|
}
|
2025-03-29 09:17:50 +08:00
|
|
|
|
|
|
|
func (s *FakeService) CountFoldersInOrg(ctx context.Context, orgID int64) (int64, error) {
|
|
|
|
return int64(len(s.ExpectedFolders)), s.ExpectedError
|
|
|
|
}
|