LibraryPanels: Fixes error when importing plugin dashboard (#34557)

This commit is contained in:
Hugo Häggmark
2021-05-24 09:31:34 +02:00
committed by GitHub
parent 7204a64717
commit 7b17801047
8 changed files with 11 additions and 123 deletions

View File

@@ -572,106 +572,6 @@ func TestConnectLibraryPanelsForDashboard(t *testing.T) {
})
}
func TestImportDashboard(t *testing.T) {
scenarioWithLibraryPanel(t, "When an admin tries to import a dashboard with a library panel, it should connect the two",
func(t *testing.T, sc scenarioContext) {
importedJSON := map[string]interface{}{
"panels": []interface{}{},
}
importedDashboard := models.Dashboard{
Title: "Dummy dash that simulates an imported dash",
Data: simplejson.NewFromAny(importedJSON),
}
importedDashInDB := createDashboard(t, sc.sqlStore, sc.user, &importedDashboard, sc.folder.Id)
elements, err := sc.elementService.GetElementsForDashboard(sc.reqContext, importedDashInDB.Id)
require.NoError(t, err)
require.Len(t, elements, 0)
dashJSON := map[string]interface{}{
"title": "Testing ImportDashboard",
"panels": []interface{}{
map[string]interface{}{
"id": int64(1),
"gridPos": map[string]interface{}{
"h": 6,
"w": 6,
"x": 0,
"y": 0,
},
},
map[string]interface{}{
"id": int64(2),
"gridPos": map[string]interface{}{
"h": 6,
"w": 6,
"x": 6,
"y": 0,
},
"datasource": "${DS_GDEV-TESTDATA}",
"libraryPanel": map[string]interface{}{
"uid": sc.initialResult.Result.UID,
"name": sc.initialResult.Result.Name,
},
"title": "Text - Library Panel",
"type": "text",
},
},
}
dash := simplejson.NewFromAny(dashJSON)
err = sc.service.ImportDashboard(sc.reqContext, dash, importedDashInDB.Id)
require.NoError(t, err)
elements, err = sc.elementService.GetElementsForDashboard(sc.reqContext, importedDashInDB.Id)
require.NoError(t, err)
require.Len(t, elements, 1)
require.Equal(t, sc.initialResult.Result.UID, elements[sc.initialResult.Result.UID].UID)
})
scenarioWithLibraryPanel(t, "When an admin tries to import a dashboard with a library panel without uid, it should fail",
func(t *testing.T, sc scenarioContext) {
importedJSON := map[string]interface{}{
"panels": []interface{}{},
}
importedDashboard := models.Dashboard{
Title: "Dummy dash that simulates an imported dash",
Data: simplejson.NewFromAny(importedJSON),
}
importedDashInDB := createDashboard(t, sc.sqlStore, sc.user, &importedDashboard, sc.folder.Id)
dashJSON := map[string]interface{}{
"panels": []interface{}{
map[string]interface{}{
"id": int64(1),
"gridPos": map[string]interface{}{
"h": 6,
"w": 6,
"x": 0,
"y": 0,
},
},
map[string]interface{}{
"id": int64(2),
"gridPos": map[string]interface{}{
"h": 6,
"w": 6,
"x": 6,
"y": 0,
},
"datasource": "${DS_GDEV-TESTDATA}",
"libraryPanel": map[string]interface{}{
"name": sc.initialResult.Result.Name,
},
"title": "Text - Library Panel",
"type": "text",
},
},
}
dash := simplejson.NewFromAny(dashJSON)
err := sc.service.ImportDashboard(sc.reqContext, dash, importedDashInDB.Id)
require.EqualError(t, err, errLibraryPanelHeaderUIDMissing.Error())
})
}
type libraryPanel struct {
ID int64
OrgID int64