| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  | import { SceneGridItemLike } from '@grafana/scenes'; | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  | import { Panel } from '@grafana/schema'; | 
					
						
							|  |  |  | import { PanelModel } from 'app/features/dashboard/state'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-29 20:17:55 +08:00
										 |  |  | import dashboard_to_load1 from './testfiles/dashboard_to_load1.json'; | 
					
						
							| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  | import { buildGridItemForPanel, transformSaveModelToScene } from './transformSaveModelToScene'; | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  | import { gridItemToPanel, transformSceneToSaveModel } from './transformSceneToSaveModel'; | 
					
						
							| 
									
										
										
										
											2023-08-29 20:17:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | describe('transformSceneToSaveModel', () => { | 
					
						
							|  |  |  |   describe('Given a scene', () => { | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  |     it('Should transform back to peristed model', () => { | 
					
						
							| 
									
										
										
										
											2023-08-29 20:17:55 +08:00
										 |  |  |       const scene = transformSaveModelToScene({ dashboard: dashboard_to_load1 as any, meta: {} }); | 
					
						
							|  |  |  |       const saveModel = transformSceneToSaveModel(scene); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(saveModel).toMatchSnapshot(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe('Panel options', () => { | 
					
						
							|  |  |  |     it('Given panel with time override', () => { | 
					
						
							| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  |       const gridItem = buildGridItemFromPanelSchema({ | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  |         timeFrom: '2h', | 
					
						
							|  |  |  |         timeShift: '1d', | 
					
						
							|  |  |  |         hideTimeOverride: true, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const saveModel = gridItemToPanel(gridItem); | 
					
						
							|  |  |  |       expect(saveModel.timeFrom).toBe('2h'); | 
					
						
							|  |  |  |       expect(saveModel.timeShift).toBe('1d'); | 
					
						
							|  |  |  |       expect(saveModel.hideTimeOverride).toBe(true); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('transparent panel', () => { | 
					
						
							| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  |       const gridItem = buildGridItemFromPanelSchema({ transparent: true }); | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  |       const saveModel = gridItemToPanel(gridItem); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(saveModel.transparent).toBe(true); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('Given panel with repeat', () => { | 
					
						
							|  |  |  |       const gridItem = buildGridItemFromPanelSchema({ | 
					
						
							|  |  |  |         title: '', | 
					
						
							|  |  |  |         type: 'text-plugin-34', | 
					
						
							|  |  |  |         gridPos: { x: 1, y: 2, w: 12, h: 8 }, | 
					
						
							|  |  |  |         repeat: 'server', | 
					
						
							|  |  |  |         repeatDirection: 'v', | 
					
						
							|  |  |  |         maxPerRow: 8, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const saveModel = gridItemToPanel(gridItem); | 
					
						
							|  |  |  |       expect(saveModel.repeat).toBe('server'); | 
					
						
							|  |  |  |       expect(saveModel.repeatDirection).toBe('v'); | 
					
						
							|  |  |  |       expect(saveModel.maxPerRow).toBe(8); | 
					
						
							|  |  |  |       expect(saveModel.gridPos?.x).toBe(1); | 
					
						
							|  |  |  |       expect(saveModel.gridPos?.y).toBe(2); | 
					
						
							|  |  |  |       expect(saveModel.gridPos?.w).toBe(12); | 
					
						
							|  |  |  |       expect(saveModel.gridPos?.h).toBe(8); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2023-08-29 20:17:55 +08:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-05 19:51:46 +08:00
										 |  |  | export function buildGridItemFromPanelSchema(panel: Partial<Panel>): SceneGridItemLike { | 
					
						
							|  |  |  |   return buildGridItemForPanel(new PanelModel(panel)); | 
					
						
							| 
									
										
										
										
											2023-09-01 16:21:41 +08:00
										 |  |  | } |