fix(dashboards): use index for schema migration datasource lookups (#113911)
This commit is contained in:
@@ -67,68 +67,13 @@ func TestGetDataSourceRef(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetDefaultDSInstanceSettings(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
datasources []schemaversion.DataSourceInfo
|
||||
expected *schemaversion.DataSourceInfo
|
||||
}{
|
||||
{
|
||||
name: "empty datasources list",
|
||||
datasources: []schemaversion.DataSourceInfo{},
|
||||
expected: nil,
|
||||
},
|
||||
{
|
||||
name: "no default datasource",
|
||||
datasources: []schemaversion.DataSourceInfo{
|
||||
{UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false},
|
||||
{UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false},
|
||||
},
|
||||
expected: nil,
|
||||
},
|
||||
{
|
||||
name: "single default datasource",
|
||||
datasources: []schemaversion.DataSourceInfo{
|
||||
{UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false},
|
||||
{UID: "default-ds-uid", Type: "prometheus", Name: "Default Test Datasource Name", Default: true, APIVersion: "v1"},
|
||||
{UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false},
|
||||
},
|
||||
expected: &schemaversion.DataSourceInfo{
|
||||
UID: "default-ds-uid",
|
||||
Type: "prometheus",
|
||||
Name: "Default Test Datasource Name",
|
||||
APIVersion: "v1",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "multiple default datasources returns first",
|
||||
datasources: []schemaversion.DataSourceInfo{
|
||||
{UID: "first-default", Type: "prometheus", Name: "First Default", Default: true, APIVersion: "v1"},
|
||||
{UID: "second-default", Type: "elasticsearch", Name: "Second Default", Default: true, APIVersion: "v2"},
|
||||
},
|
||||
expected: &schemaversion.DataSourceInfo{
|
||||
UID: "first-default",
|
||||
Type: "prometheus",
|
||||
Name: "First Default",
|
||||
APIVersion: "v1",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := schemaversion.GetDefaultDSInstanceSettings(tt.datasources)
|
||||
assert.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestMigrateDatasourceNameToRef(t *testing.T) {
|
||||
datasources := []schemaversion.DataSourceInfo{
|
||||
{UID: "default-ds-uid", Type: "prometheus", Name: "Default Test Datasource Name", Default: true, APIVersion: "v1"},
|
||||
{UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false, APIVersion: "v2"},
|
||||
{UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false, APIVersion: "v1"},
|
||||
}
|
||||
index := schemaversion.NewDatasourceIndex(datasources)
|
||||
|
||||
t.Run("returnDefaultAsNull: true", func(t *testing.T) {
|
||||
options := map[string]bool{"returnDefaultAsNull": true}
|
||||
@@ -193,7 +138,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, datasources)
|
||||
result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, index)
|
||||
assert.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
@@ -261,7 +206,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, datasources)
|
||||
result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, index)
|
||||
assert.Equal(t, tt.expected, result)
|
||||
})
|
||||
}
|
||||
@@ -274,7 +219,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) {
|
||||
nameOrRef := map[string]interface{}{
|
||||
"type": "prometheus",
|
||||
}
|
||||
result := schemaversion.MigrateDatasourceNameToRef(nameOrRef, options, datasources)
|
||||
result := schemaversion.MigrateDatasourceNameToRef(nameOrRef, options, index)
|
||||
expected := map[string]interface{}{
|
||||
"type": "prometheus",
|
||||
}
|
||||
@@ -282,13 +227,14 @@ func TestMigrateDatasourceNameToRef(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("integer input should return nil", func(t *testing.T) {
|
||||
result := schemaversion.MigrateDatasourceNameToRef(123, options, datasources)
|
||||
result := schemaversion.MigrateDatasourceNameToRef(123, options, index)
|
||||
expected := map[string]interface{}(nil)
|
||||
assert.Equal(t, expected, result)
|
||||
})
|
||||
|
||||
t.Run("empty datasources list", func(t *testing.T) {
|
||||
result := schemaversion.MigrateDatasourceNameToRef("any-ds", options, []schemaversion.DataSourceInfo{})
|
||||
emptyIndex := schemaversion.NewDatasourceIndex([]schemaversion.DataSourceInfo{})
|
||||
result := schemaversion.MigrateDatasourceNameToRef("any-ds", options, emptyIndex)
|
||||
expected := map[string]interface{}{
|
||||
"uid": "any-ds",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user