| 
									
										
										
										
											2018-01-29 20:51:01 +08:00
										 |  |  | package api | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | import ( | 
					
						
							| 
									
										
										
										
											2021-09-14 22:08:04 +08:00
										 |  |  | 	"context" | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/api/dtos" | 
					
						
							| 
									
										
										
										
											2021-01-15 21:43:20 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/api/response" | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/api/routing" | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/models" | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/services/dashboards" | 
					
						
							| 
									
										
										
										
											2022-03-03 22:05:47 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/services/featuremgmt" | 
					
						
							| 
									
										
										
										
											2019-03-06 15:09:34 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/setting" | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	"github.com/stretchr/testify/assert" | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 	"github.com/stretchr/testify/mock" | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	"github.com/stretchr/testify/require" | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | func TestFoldersAPIEndpoint(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 	folderService := &dashboards.FakeFolderService{} | 
					
						
							|  |  |  | 	defer folderService.AssertExpectations(t) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	t.Run("Given a correct request for creating a folder", func(t *testing.T) { | 
					
						
							|  |  |  | 		cmd := models.CreateFolderCommand{ | 
					
						
							|  |  |  | 			Uid:   "uid", | 
					
						
							|  |  |  | 			Title: "Folder", | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 		folderResult := &models.Folder{Id: 1, Uid: "uid", Title: "Folder"} | 
					
						
							|  |  |  | 		folderService.On("CreateFolder", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(folderResult, nil).Once() | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 		createFolderScenario(t, "When calling POST on", "/api/folders", "/api/folders", folderService, cmd, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			func(sc *scenarioContext) { | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 				callCreateFolder(sc) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 				folder := dtos.Folder{} | 
					
						
							|  |  |  | 				err := json.NewDecoder(sc.resp.Body).Decode(&folder) | 
					
						
							|  |  |  | 				require.NoError(t, err) | 
					
						
							|  |  |  | 				assert.Equal(t, int64(1), folder.Id) | 
					
						
							|  |  |  | 				assert.Equal(t, "uid", folder.Uid) | 
					
						
							|  |  |  | 				assert.Equal(t, "Folder", folder.Title) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 			}) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	t.Run("Given incorrect requests for creating a folder", func(t *testing.T) { | 
					
						
							|  |  |  | 		testCases := []struct { | 
					
						
							|  |  |  | 			Error              error | 
					
						
							|  |  |  | 			ExpectedStatusCode int | 
					
						
							|  |  |  | 		}{ | 
					
						
							| 
									
										
										
										
											2021-07-06 17:11:29 +08:00
										 |  |  | 			{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 409}, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			{Error: models.ErrFolderTitleEmpty, ExpectedStatusCode: 400}, | 
					
						
							| 
									
										
										
										
											2021-07-06 17:11:29 +08:00
										 |  |  | 			{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 409}, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			{Error: models.ErrDashboardInvalidUid, ExpectedStatusCode: 400}, | 
					
						
							|  |  |  | 			{Error: models.ErrDashboardUidTooLong, ExpectedStatusCode: 400}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderAccessDenied, ExpectedStatusCode: 403}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderNotFound, ExpectedStatusCode: 404}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderVersionMismatch, ExpectedStatusCode: 412}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderFailedGenerateUniqueUid, ExpectedStatusCode: 500}, | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		cmd := models.CreateFolderCommand{ | 
					
						
							|  |  |  | 			Uid:   "uid", | 
					
						
							|  |  |  | 			Title: "Folder", | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		for _, tc := range testCases { | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 			folderService.On("CreateFolder", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, tc.Error).Once() | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			createFolderScenario(t, fmt.Sprintf("Expect '%s' error when calling POST on", tc.Error.Error()), | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 				"/api/folders", "/api/folders", folderService, cmd, func(sc *scenarioContext) { | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 					callCreateFolder(sc) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 					assert.Equalf(t, tc.ExpectedStatusCode, sc.resp.Code, "Wrong status code for error %s", tc.Error) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	t.Run("Given a correct request for updating a folder", func(t *testing.T) { | 
					
						
							|  |  |  | 		cmd := models.UpdateFolderCommand{ | 
					
						
							|  |  |  | 			Title: "Folder upd", | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 		folderService.On("UpdateFolder", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Run(func(args mock.Arguments) { | 
					
						
							|  |  |  | 			cmd := args.Get(4).(*models.UpdateFolderCommand) | 
					
						
							|  |  |  | 			cmd.Result = &models.Folder{Id: 1, Uid: "uid", Title: "Folder upd"} | 
					
						
							|  |  |  | 		}).Return(nil).Once() | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 		updateFolderScenario(t, "When calling PUT on", "/api/folders/uid", "/api/folders/:uid", folderService, cmd, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			func(sc *scenarioContext) { | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 				callUpdateFolder(sc) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 				folder := dtos.Folder{} | 
					
						
							|  |  |  | 				err := json.NewDecoder(sc.resp.Body).Decode(&folder) | 
					
						
							|  |  |  | 				require.NoError(t, err) | 
					
						
							|  |  |  | 				assert.Equal(t, int64(1), folder.Id) | 
					
						
							|  |  |  | 				assert.Equal(t, "uid", folder.Uid) | 
					
						
							|  |  |  | 				assert.Equal(t, "Folder upd", folder.Title) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 			}) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	t.Run("Given incorrect requests for updating a folder", func(t *testing.T) { | 
					
						
							|  |  |  | 		testCases := []struct { | 
					
						
							|  |  |  | 			Error              error | 
					
						
							|  |  |  | 			ExpectedStatusCode int | 
					
						
							|  |  |  | 		}{ | 
					
						
							| 
									
										
										
										
											2021-07-06 17:11:29 +08:00
										 |  |  | 			{Error: models.ErrFolderWithSameUIDExists, ExpectedStatusCode: 409}, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			{Error: models.ErrFolderTitleEmpty, ExpectedStatusCode: 400}, | 
					
						
							| 
									
										
										
										
											2021-07-06 17:11:29 +08:00
										 |  |  | 			{Error: models.ErrFolderSameNameExists, ExpectedStatusCode: 409}, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			{Error: models.ErrDashboardInvalidUid, ExpectedStatusCode: 400}, | 
					
						
							|  |  |  | 			{Error: models.ErrDashboardUidTooLong, ExpectedStatusCode: 400}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderAccessDenied, ExpectedStatusCode: 403}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderNotFound, ExpectedStatusCode: 404}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderVersionMismatch, ExpectedStatusCode: 412}, | 
					
						
							|  |  |  | 			{Error: models.ErrFolderFailedGenerateUniqueUid, ExpectedStatusCode: 500}, | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		cmd := models.UpdateFolderCommand{ | 
					
						
							|  |  |  | 			Title: "Folder upd", | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		for _, tc := range testCases { | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 			folderService.On("UpdateFolder", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(tc.Error).Once() | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			updateFolderScenario(t, fmt.Sprintf("Expect '%s' error when calling PUT on", tc.Error.Error()), | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 				"/api/folders/uid", "/api/folders/:uid", folderService, cmd, func(sc *scenarioContext) { | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 					callUpdateFolder(sc) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 					assert.Equalf(t, tc.ExpectedStatusCode, sc.resp.Code, "Wrong status code for %s", tc.Error) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func callCreateFolder(sc *scenarioContext) { | 
					
						
							|  |  |  | 	sc.fakeReqWithParams("POST", sc.url, map[string]string{}).exec() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func createFolderScenario(t *testing.T, desc string, url string, routePattern string, folderService dashboards.FolderService, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	cmd models.CreateFolderCommand, fn scenarioFunc) { | 
					
						
							|  |  |  | 	t.Run(fmt.Sprintf("%s %s", desc, url), func(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2019-03-06 15:09:34 +08:00
										 |  |  | 		hs := HTTPServer{ | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 			Cfg:           setting.NewCfg(), | 
					
						
							|  |  |  | 			folderService: folderService, | 
					
						
							| 
									
										
										
										
											2022-03-03 22:05:47 +08:00
										 |  |  | 			Features:      featuremgmt.WithFeatures(), | 
					
						
							| 
									
										
										
										
											2019-03-06 15:09:34 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		sc := setupScenarioContext(t, url) | 
					
						
							| 
									
										
										
										
											2021-01-15 21:43:20 +08:00
										 |  |  | 		sc.defaultHandler = routing.Wrap(func(c *models.ReqContext) response.Response { | 
					
						
							| 
									
										
										
										
											2021-11-29 17:18:01 +08:00
										 |  |  | 			c.Req.Body = mockRequestBody(cmd) | 
					
						
							| 
									
										
										
										
											2022-02-09 20:44:38 +08:00
										 |  |  | 			c.Req.Header.Add("Content-Type", "application/json") | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 			sc.context = c | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			sc.context.SignedInUser = &models.SignedInUser{OrgId: testOrgID, UserId: testUserID} | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-29 17:18:01 +08:00
										 |  |  | 			return hs.CreateFolder(c) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 		}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		sc.m.Post(routePattern, sc.defaultHandler) | 
					
						
							| 
									
										
										
										
											2018-02-20 20:57:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 		fn(sc) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func callUpdateFolder(sc *scenarioContext) { | 
					
						
							|  |  |  | 	sc.fakeReqWithParams("PUT", sc.url, map[string]string{}).exec() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-02-20 20:57:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func updateFolderScenario(t *testing.T, desc string, url string, routePattern string, folderService dashboards.FolderService, | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 	cmd models.UpdateFolderCommand, fn scenarioFunc) { | 
					
						
							|  |  |  | 	t.Run(fmt.Sprintf("%s %s", desc, url), func(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2021-03-17 23:06:10 +08:00
										 |  |  | 		hs := HTTPServer{ | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | 			Cfg:           setting.NewCfg(), | 
					
						
							|  |  |  | 			folderService: folderService, | 
					
						
							| 
									
										
										
										
											2021-03-17 23:06:10 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 		sc := setupScenarioContext(t, url) | 
					
						
							| 
									
										
										
										
											2021-01-15 21:43:20 +08:00
										 |  |  | 		sc.defaultHandler = routing.Wrap(func(c *models.ReqContext) response.Response { | 
					
						
							| 
									
										
										
										
											2021-11-29 17:18:01 +08:00
										 |  |  | 			c.Req.Body = mockRequestBody(cmd) | 
					
						
							| 
									
										
										
										
											2022-02-09 20:44:38 +08:00
										 |  |  | 			c.Req.Header.Add("Content-Type", "application/json") | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 			sc.context = c | 
					
						
							| 
									
										
										
										
											2020-11-13 16:52:38 +08:00
										 |  |  | 			sc.context.SignedInUser = &models.SignedInUser{OrgId: testOrgID, UserId: testUserID} | 
					
						
							| 
									
										
										
										
											2018-02-20 20:57:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-29 17:18:01 +08:00
										 |  |  | 			return hs.UpdateFolder(c) | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2018-02-20 20:57:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 		sc.m.Put(routePattern, sc.defaultHandler) | 
					
						
							| 
									
										
										
										
											2018-02-20 20:57:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 		fn(sc) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | type fakeFolderService struct { | 
					
						
							| 
									
										
										
										
											2021-03-17 23:06:10 +08:00
										 |  |  | 	dashboards.FolderService | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	GetFoldersResult     []*models.Folder | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	GetFoldersError      error | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	GetFolderByUIDResult *models.Folder | 
					
						
							| 
									
										
										
										
											2018-03-23 05:13:46 +08:00
										 |  |  | 	GetFolderByUIDError  error | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	GetFolderByIDResult  *models.Folder | 
					
						
							| 
									
										
										
										
											2018-03-23 05:13:46 +08:00
										 |  |  | 	GetFolderByIDError   error | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	CreateFolderResult   *models.Folder | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	CreateFolderError    error | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	UpdateFolderResult   *models.Folder | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	UpdateFolderError    error | 
					
						
							| 
									
										
										
										
											2020-03-04 19:57:20 +08:00
										 |  |  | 	DeleteFolderResult   *models.Folder | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	DeleteFolderError    error | 
					
						
							|  |  |  | 	DeletedFolderUids    []string | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) GetFolders(ctx context.Context, user *models.SignedInUser, orgID int64, limit int64, page int64) ([]*models.Folder, error) { | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	return s.GetFoldersResult, s.GetFoldersError | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) GetFolderByID(ctx context.Context, user *models.SignedInUser, id int64, orgID int64) (*models.Folder, error) { | 
					
						
							| 
									
										
										
										
											2018-03-23 05:13:46 +08:00
										 |  |  | 	return s.GetFolderByIDResult, s.GetFolderByIDError | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) GetFolderByUID(ctx context.Context, user *models.SignedInUser, orgID int64, uid string) (*models.Folder, error) { | 
					
						
							| 
									
										
										
										
											2018-03-23 05:13:46 +08:00
										 |  |  | 	return s.GetFolderByUIDResult, s.GetFolderByUIDError | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) CreateFolder(ctx context.Context, user *models.SignedInUser, orgID int64, title, uid string) (*models.Folder, error) { | 
					
						
							| 
									
										
										
										
											2021-03-17 23:06:10 +08:00
										 |  |  | 	return s.CreateFolderResult, s.CreateFolderError | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) UpdateFolder(ctx context.Context, user *models.SignedInUser, orgID int64, existingUid string, cmd *models.UpdateFolderCommand) error { | 
					
						
							| 
									
										
										
										
											2018-02-21 18:24:54 +08:00
										 |  |  | 	cmd.Result = s.UpdateFolderResult | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	return s.UpdateFolderError | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-16 21:15:44 +08:00
										 |  |  | func (s *fakeFolderService) DeleteFolder(ctx context.Context, user *models.SignedInUser, orgID int64, uid string, forceDeleteRules bool) (*models.Folder, error) { | 
					
						
							| 
									
										
										
										
											2018-02-21 01:11:50 +08:00
										 |  |  | 	s.DeletedFolderUids = append(s.DeletedFolderUids, uid) | 
					
						
							|  |  |  | 	return s.DeleteFolderResult, s.DeleteFolderError | 
					
						
							|  |  |  | } |