|
|
|
@@ -60,16 +60,14 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
require.Equal(t, savedDash.Slug, "test-dash-23")
|
|
|
|
|
require.NotEqual(t, savedDash.ID, 0)
|
|
|
|
|
require.False(t, savedDash.IsFolder)
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.Positive(t, savedDash.FolderID)
|
|
|
|
|
require.NotEmpty(t, savedDash.FolderUID)
|
|
|
|
|
require.Positive(t, len(savedDash.UID))
|
|
|
|
|
|
|
|
|
|
require.Equal(t, savedFolder.Title, "1 test dash folder")
|
|
|
|
|
require.Equal(t, savedFolder.Slug, "1-test-dash-folder")
|
|
|
|
|
require.NotEqual(t, savedFolder.ID, 0)
|
|
|
|
|
require.True(t, savedFolder.IsFolder)
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.EqualValues(t, savedFolder.FolderID, 0)
|
|
|
|
|
require.Empty(t, savedFolder.FolderUID)
|
|
|
|
|
require.Positive(t, len(savedFolder.UID))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@@ -90,41 +88,6 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
require.False(t, queryResult.IsFolder)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Should be able to get dashboard by title and folderID", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardQuery{
|
|
|
|
|
Title: util.Pointer("test dash 23"),
|
|
|
|
|
FolderID: &savedFolder.ID, // nolint:staticcheck
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
queryResult, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, queryResult.Title, "test dash 23")
|
|
|
|
|
require.Equal(t, queryResult.Slug, "test-dash-23")
|
|
|
|
|
require.Equal(t, queryResult.ID, savedDash.ID)
|
|
|
|
|
require.Equal(t, queryResult.UID, savedDash.UID)
|
|
|
|
|
require.False(t, queryResult.IsFolder)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Should be able to get dashboard by title and folderUID", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardQuery{
|
|
|
|
|
Title: util.Pointer("test dash 23"),
|
|
|
|
|
FolderUID: savedFolder.UID,
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
}
|
|
|
|
|
queryResult, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, queryResult.Title, "test dash 23")
|
|
|
|
|
require.Equal(t, queryResult.Slug, "test-dash-23")
|
|
|
|
|
require.Equal(t, queryResult.ID, savedDash.ID)
|
|
|
|
|
require.Equal(t, queryResult.UID, savedDash.UID)
|
|
|
|
|
require.False(t, queryResult.IsFolder)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Should not be able to get dashboard by title alone", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardQuery{
|
|
|
|
@@ -136,16 +99,21 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
require.ErrorIs(t, err, dashboards.ErrDashboardIdentifierNotSet)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Folder=0 should not be able to get a dashboard in a folder", func(t *testing.T) {
|
|
|
|
|
t.Run("Should be able to get dashboard by title and folderUID", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardQuery{
|
|
|
|
|
Title: util.Pointer("test dash 23"),
|
|
|
|
|
FolderID: util.Pointer(int64(0)), // nolint:staticcheck
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
Title: util.Pointer("test dash 23"),
|
|
|
|
|
FolderUID: savedFolder.UID,
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
}
|
|
|
|
|
queryResult, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
_, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.ErrorIs(t, err, dashboards.ErrDashboardNotFound)
|
|
|
|
|
require.Equal(t, queryResult.Title, "test dash 23")
|
|
|
|
|
require.Equal(t, queryResult.Slug, "test-dash-23")
|
|
|
|
|
require.Equal(t, queryResult.ID, savedDash.ID)
|
|
|
|
|
require.Equal(t, queryResult.UID, savedDash.UID)
|
|
|
|
|
require.False(t, queryResult.IsFolder)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Should be able to get dashboard by uid", func(t *testing.T) {
|
|
|
|
@@ -183,6 +151,18 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
require.Equal(t, err, dashboards.ErrDashboardIdentifierNotSet)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Folder=0 should not be able to get a dashboard in a folder", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardQuery{
|
|
|
|
|
Title: util.Pointer("test dash 23"),
|
|
|
|
|
FolderUID: "",
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.Error(t, err, dashboards.ErrDashboardNotFound)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("Should be able to get dashboards by IDs & UIDs", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.GetDashboardsQuery{DashboardIDs: []int64{savedDash.ID, savedDash2.ID}}
|
|
|
|
@@ -235,13 +215,12 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
"tags": []interface{}{},
|
|
|
|
|
}),
|
|
|
|
|
Overwrite: true,
|
|
|
|
|
FolderID: 2, // nolint:staticcheck
|
|
|
|
|
FolderUID: "2",
|
|
|
|
|
UserID: 100,
|
|
|
|
|
}
|
|
|
|
|
dash, err := dashboardStore.SaveDashboard(context.Background(), cmd)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.EqualValues(t, dash.FolderID, 2)
|
|
|
|
|
require.EqualValues(t, dash.FolderUID, "2")
|
|
|
|
|
|
|
|
|
|
cmd = dashboards.SaveDashboardCommand{
|
|
|
|
|
OrgID: 1,
|
|
|
|
@@ -250,7 +229,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
"title": "folderId",
|
|
|
|
|
"tags": []interface{}{},
|
|
|
|
|
}),
|
|
|
|
|
FolderID: 0, // nolint:staticcheck
|
|
|
|
|
FolderUID: "",
|
|
|
|
|
Overwrite: true,
|
|
|
|
|
UserID: 100,
|
|
|
|
|
}
|
|
|
|
@@ -264,8 +243,7 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
queryResult, err := dashboardStore.GetDashboard(context.Background(), &query)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.Equal(t, queryResult.FolderID, int64(0))
|
|
|
|
|
require.Equal(t, queryResult.FolderUID, "")
|
|
|
|
|
require.Equal(t, queryResult.CreatedBy, savedDash.CreatedBy)
|
|
|
|
|
require.WithinDuration(t, queryResult.Created, savedDash.Created, 3*time.Second)
|
|
|
|
|
require.Equal(t, queryResult.UpdatedBy, int64(100))
|
|
|
|
@@ -415,8 +393,8 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
t.Run("Should be able to find a dashboard folder's children", func(t *testing.T) {
|
|
|
|
|
setup()
|
|
|
|
|
query := dashboards.FindPersistedDashboardsQuery{
|
|
|
|
|
OrgId: 1,
|
|
|
|
|
FolderIds: []int64{savedFolder.ID}, // nolint:staticcheck
|
|
|
|
|
OrgId: 1,
|
|
|
|
|
FolderUIDs: []string{savedFolder.UID},
|
|
|
|
|
SignedInUser: &user.SignedInUser{
|
|
|
|
|
OrgID: 1,
|
|
|
|
|
OrgRole: org.RoleEditor,
|
|
|
|
@@ -433,8 +411,6 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
hit := hits[0]
|
|
|
|
|
require.Equal(t, hit.ID, savedDash.ID)
|
|
|
|
|
require.Equal(t, hit.URL, fmt.Sprintf("/d/%s/%s", savedDash.UID, savedDash.Slug))
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.Equal(t, hit.FolderID, savedFolder.ID)
|
|
|
|
|
require.Equal(t, hit.FolderUID, savedFolder.UID)
|
|
|
|
|
require.Equal(t, hit.FolderTitle, savedFolder.Title)
|
|
|
|
|
require.Equal(t, hit.FolderURL, fmt.Sprintf("/dashboards/f/%s/%s", savedFolder.UID, savedFolder.Slug))
|
|
|
|
@@ -461,8 +437,6 @@ func TestIntegrationDashboardDataAccess(t *testing.T) {
|
|
|
|
|
hit := hits[0]
|
|
|
|
|
require.Equal(t, hit.ID, savedDash.ID)
|
|
|
|
|
require.Equal(t, hit.URL, fmt.Sprintf("/d/%s/%s", savedDash.UID, savedDash.Slug))
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
require.Equal(t, hit.FolderID, savedFolder.ID)
|
|
|
|
|
require.Equal(t, hit.FolderUID, savedFolder.UID)
|
|
|
|
|
require.Equal(t, hit.FolderTitle, savedFolder.Title)
|
|
|
|
|
require.Equal(t, hit.FolderURL, fmt.Sprintf("/dashboards/f/%s/%s", savedFolder.UID, savedFolder.Slug))
|
|
|
|
@@ -888,43 +862,6 @@ func TestIntegrationFindDashboardsByFolder(t *testing.T) {
|
|
|
|
|
expectedResult map[string][]res
|
|
|
|
|
typ string
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general using folder id",
|
|
|
|
|
folderIDs: []int64{0}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under general"}},
|
|
|
|
|
featuremgmt.FlagNestedFolders: {{title: "dashboard under general"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general using folder id",
|
|
|
|
|
folderIDs: []int64{0}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under general"}},
|
|
|
|
|
featuremgmt.FlagNestedFolders: {{title: "dashboard under general"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under f0 using folder id",
|
|
|
|
|
folderIDs: []int64{f0.ID}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under f0 or f1 using folder id",
|
|
|
|
|
folderIDs: []int64{f0.ID, f1.ID}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under f1", folderUID: f1.UID, folderTitle: f1.Title}},
|
|
|
|
|
featuremgmt.FlagNestedFolders: {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under f1", folderUID: f1.UID, folderTitle: f1.Title}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general using folder UID",
|
|
|
|
|
folderUIDs: []string{folder.GeneralFolderUID},
|
|
|
|
@@ -963,30 +900,6 @@ func TestIntegrationFindDashboardsByFolder(t *testing.T) {
|
|
|
|
|
{title: "dashboard under f1", folderUID: f1.UID, folderTitle: f1.Title}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general or f0 using folder id",
|
|
|
|
|
folderIDs: []int64{0, f0.ID}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under general"}},
|
|
|
|
|
featuremgmt.FlagNestedFolders: {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under general"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general or f0 or f1 using folder id",
|
|
|
|
|
folderIDs: []int64{0, f0.ID, f1.ID}, // nolint:staticcheck
|
|
|
|
|
typ: searchstore.TypeDashboard,
|
|
|
|
|
expectedResult: map[string][]res{
|
|
|
|
|
"": {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under f1", folderUID: f1.UID, folderTitle: f1.Title},
|
|
|
|
|
{title: "dashboard under general"}},
|
|
|
|
|
featuremgmt.FlagNestedFolders: {{title: "dashboard under f0", folderUID: f0.UID, folderTitle: f0.Title},
|
|
|
|
|
{title: "dashboard under f1", folderUID: f1.UID, folderTitle: f1.Title},
|
|
|
|
|
{title: "dashboard under general"}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
desc: "find dashboard under general or f0 using folder UID",
|
|
|
|
|
folderUIDs: []string{folder.GeneralFolderUID, f0.UID},
|
|
|
|
@@ -1030,7 +943,6 @@ func TestIntegrationFindDashboardsByFolder(t *testing.T) {
|
|
|
|
|
res, err := dashboardStore.FindDashboards(context.Background(), &dashboards.FindPersistedDashboardsQuery{
|
|
|
|
|
SignedInUser: user,
|
|
|
|
|
Type: tc.typ,
|
|
|
|
|
FolderIds: tc.folderIDs, // nolint:staticcheck
|
|
|
|
|
FolderUIDs: tc.folderUIDs,
|
|
|
|
|
})
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
@@ -1199,14 +1111,12 @@ func makeQueryResult(query *dashboards.FindPersistedDashboardsQuery, res []dashb
|
|
|
|
|
URI: "db/" + item.Slug,
|
|
|
|
|
URL: dashboards.GetDashboardFolderURL(item.IsFolder, item.UID, item.Slug),
|
|
|
|
|
Type: hitType,
|
|
|
|
|
FolderID: item.FolderID, // nolint:staticcheck
|
|
|
|
|
FolderUID: item.FolderUID,
|
|
|
|
|
FolderTitle: item.FolderTitle,
|
|
|
|
|
Tags: []string{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// nolint:staticcheck
|
|
|
|
|
if item.FolderID > 0 {
|
|
|
|
|
if item.FolderUID != "" {
|
|
|
|
|
hit.FolderURL = dashboards.GetFolderURL(item.FolderUID, item.FolderSlug)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|