2018-01-29 20:51:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								package  api  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"encoding/json" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fmt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/grafana/grafana/pkg/api/dtos" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/grafana/grafana/pkg/bus" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  "github.com/grafana/grafana/pkg/models" 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/grafana/grafana/pkg/services/dashboards" 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-06 15:09:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/grafana/grafana/pkg/setting" 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									.  "github.com/smartystreets/goconvey/convey" 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  TestFoldersApiEndpoint ( t  * testing . T )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Convey ( "Create/update folder response tests" ,  t ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Convey ( "Given a correct request for creating a folder" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmd  :=  m . CreateFolderCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Uid :    "uid" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Title :  "Folder" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mock  :=  & fakeFolderService { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												CreateFolderResult :  & m . Folder { Id :  1 ,  Uid :  "uid" ,  Title :  "Folder" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											createFolderScenario ( "When calling POST on" ,  "/api/folders" ,  "/api/folders" ,  mock ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												callCreateFolder ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Convey ( "It should return correct response data" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													folder  :=  dtos . Folder { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													err  :=  json . NewDecoder ( sc . resp . Body ) . Decode ( & folder ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( err ,  ShouldBeNil ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Id ,  ShouldEqual ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Uid ,  ShouldEqual ,  "uid" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Title ,  ShouldEqual ,  "Folder" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Convey ( "Given incorrect requests for creating a folder" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											testCases  :=  [ ] struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Error               error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ExpectedStatusCode  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderWithSameUIDExists ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderTitleEmpty ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderSameNameExists ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrDashboardInvalidUid ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrDashboardUidToLong ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderAccessDenied ,  ExpectedStatusCode :  403 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderNotFound ,  ExpectedStatusCode :  404 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderVersionMismatch ,  ExpectedStatusCode :  412 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderFailedGenerateUniqueUid ,  ExpectedStatusCode :  500 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmd  :=  m . CreateFolderCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Uid :    "uid" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Title :  "Folder" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  _ ,  tc  :=  range  testCases  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mock  :=  & fakeFolderService { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													CreateFolderError :  tc . Error , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												createFolderScenario ( fmt . Sprintf ( "Expect '%s' error when calling POST on" ,  tc . Error . Error ( ) ) ,  "/api/folders" ,  "/api/folders" ,  mock ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													callCreateFolder ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  sc . resp . Code  !=  tc . ExpectedStatusCode  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														t . Errorf ( "For error '%s' expected status code %d, actual %d" ,  tc . Error ,  tc . ExpectedStatusCode ,  sc . resp . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Convey ( "Given a correct request for updating a folder" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmd  :=  m . UpdateFolderCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Title :  "Folder upd" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mock  :=  & fakeFolderService { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												UpdateFolderResult :  & m . Folder { Id :  1 ,  Uid :  "uid" ,  Title :  "Folder upd" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											updateFolderScenario ( "When calling PUT on" ,  "/api/folders/uid" ,  "/api/folders/:uid" ,  mock ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												callUpdateFolder ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Convey ( "It should return correct response data" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													folder  :=  dtos . Folder { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													err  :=  json . NewDecoder ( sc . resp . Body ) . Decode ( & folder ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( err ,  ShouldBeNil ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Id ,  ShouldEqual ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Uid ,  ShouldEqual ,  "uid" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													So ( folder . Title ,  ShouldEqual ,  "Folder upd" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Convey ( "Given incorrect requests for updating a folder" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											testCases  :=  [ ] struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Error               error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ExpectedStatusCode  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderWithSameUIDExists ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderTitleEmpty ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderSameNameExists ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrDashboardInvalidUid ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrDashboardUidToLong ,  ExpectedStatusCode :  400 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderAccessDenied ,  ExpectedStatusCode :  403 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderNotFound ,  ExpectedStatusCode :  404 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderVersionMismatch ,  ExpectedStatusCode :  412 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												{ Error :  m . ErrFolderFailedGenerateUniqueUid ,  ExpectedStatusCode :  500 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmd  :=  m . UpdateFolderCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Title :  "Folder upd" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  _ ,  tc  :=  range  testCases  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mock  :=  & fakeFolderService { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													UpdateFolderError :  tc . Error , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												updateFolderScenario ( fmt . Sprintf ( "Expect '%s' error when calling PUT on" ,  tc . Error . Error ( ) ) ,  "/api/folders/uid" ,  "/api/folders/:uid" ,  mock ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													callUpdateFolder ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  sc . resp . Code  !=  tc . ExpectedStatusCode  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														t . Errorf ( "For error '%s' expected status code %d, actual %d" ,  tc . Error ,  tc . ExpectedStatusCode ,  sc . resp . Code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  callCreateFolder ( sc  * scenarioContext )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									sc . fakeReqWithParams ( "POST" ,  sc . url ,  map [ string ] string { } ) . exec ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  createFolderScenario ( desc  string ,  url  string ,  routePattern  string ,  mock  * fakeFolderService ,  cmd  m . CreateFolderCommand ,  fn  scenarioFunc )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Convey ( desc + " " + url ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										defer  bus . ClearBusHandlers ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-06 15:09:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										hs  :=  HTTPServer { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Bus :  bus . GetBus ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 20:59:53 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Cfg :  setting . NewCfg ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-06 15:09:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										sc  :=  setupScenarioContext ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-02 23:13:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										sc . defaultHandler  =  Wrap ( func ( c  * m . ReqContext )  Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sc . context  =  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sc . context . SignedInUser  =  & m . SignedInUser { OrgId :  TestOrgID ,  UserId :  TestUserID } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-03-06 15:09:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  hs . CreateFolder ( c ,  cmd ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										origNewFolderService  :=  dashboards . NewFolderService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mockFolderService ( mock ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sc . m . Post ( routePattern ,  sc . defaultHandler ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-20 20:57:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										defer  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											dashboards . NewFolderService  =  origNewFolderService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ( ) 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  updateFolderScenario ( desc  string ,  url  string ,  routePattern  string ,  mock  * fakeFolderService ,  cmd  m . UpdateFolderCommand ,  fn  scenarioFunc )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Convey ( desc + " " + url ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										defer  bus . ClearBusHandlers ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-29 20:51:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										sc  :=  setupScenarioContext ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-02 23:13:59 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										sc . defaultHandler  =  Wrap ( func ( c  * m . ReqContext )  Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sc . context  =  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sc . context . SignedInUser  =  & m . SignedInUser { OrgId :  TestOrgID ,  UserId :  TestUserID } 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-20 20:57:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  UpdateFolder ( c ,  cmd ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-20 20:57:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										origNewFolderService  :=  dashboards . NewFolderService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mockFolderService ( mock ) 
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										defer  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											dashboards . NewFolderService  =  origNewFolderService 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fn ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  fakeFolderService  struct  {  
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFoldersResult      [ ] * m . Folder 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFoldersError       error 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-23 05:13:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFolderByUIDResult  * m . Folder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GetFolderByUIDError   error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GetFolderByIDResult   * m . Folder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GetFolderByIDError    error 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CreateFolderResult    * m . Folder 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									CreateFolderError     error 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									UpdateFolderResult    * m . Folder 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									UpdateFolderError     error 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DeleteFolderResult    * m . Folder 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DeleteFolderError     error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DeletedFolderUids     [ ] string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-17 19:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  GetFolders ( limit  int64 )  ( [ ] * m . Folder ,  error )  {  
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  s . GetFoldersResult ,  s . GetFoldersError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-23 05:13:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  GetFolderByID ( id  int64 )  ( * m . Folder ,  error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  s . GetFolderByIDResult ,  s . GetFolderByIDError 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-23 05:13:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  GetFolderByUID ( uid  string )  ( * m . Folder ,  error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  s . GetFolderByUIDResult ,  s . GetFolderByUIDError 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  CreateFolder ( cmd  * m . CreateFolderCommand )  error  {  
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:24:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cmd . Result  =  s . CreateFolderResult 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  s . CreateFolderError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-23 05:13:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  UpdateFolder ( existingUID  string ,  cmd  * m . 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 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( s  * fakeFolderService )  DeleteFolder ( uid  string )  ( * m . Folder ,  error )  {  
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									s . DeletedFolderUids  =  append ( s . DeletedFolderUids ,  uid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  s . DeleteFolderResult ,  s . DeleteFolderError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  mockFolderService ( mock  * fakeFolderService )  {  
						 
					
						
							
								
									
										
										
										
											2018-03-07 06:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dashboards . NewFolderService  =  func ( orgId  int64 ,  user  * m . SignedInUser )  dashboards . FolderService  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 01:11:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  mock 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}