Scuemata: Simplify grafana-cli cue validation tests (#33913)

* Simplify tests

* Make PanelFieldConfig optional in missing panel scenario
This commit is contained in:
Dimitris Sotirakis 2021-05-11 15:11:17 +03:00 committed by GitHub
parent b55b3307c1
commit ff262ed3fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 54 deletions

View File

@ -1,8 +1,6 @@
package commands
import (
"embed"
"io/fs"
"os"
"path/filepath"
"testing"
@ -12,17 +10,13 @@ import (
"github.com/stretchr/testify/require"
)
//go:embed testdata/public/*/*.cue testdata/public/*/plugin.json
var base embed.FS
var pluginSchema, _ = fs.Sub(base, "testdata/public")
func TestValidateScuemataBasics(t *testing.T) {
t.Run("Testing scuemata validity with valid cue schemas", func(t *testing.T) {
tempDir := os.DirFS(filepath.Join("testdata", "valid_scuemata"))
var baseLoadPaths = load.BaseLoadPaths{
BaseCueFS: tempDir,
DistPluginCueFS: pluginSchema,
DistPluginCueFS: load.GetDefaultLoadPaths().DistPluginCueFS,
}
err := validate(baseLoadPaths, load.BaseDashboardFamily)
@ -37,7 +31,7 @@ func TestValidateScuemataBasics(t *testing.T) {
var baseLoadPaths = load.BaseLoadPaths{
BaseCueFS: tempDir,
DistPluginCueFS: pluginSchema,
DistPluginCueFS: load.GetDefaultLoadPaths().DistPluginCueFS,
}
err := validate(baseLoadPaths, load.BaseDashboardFamily)
@ -49,7 +43,7 @@ func TestValidateScuemataBasics(t *testing.T) {
var baseLoadPaths = load.BaseLoadPaths{
BaseCueFS: tempDir,
DistPluginCueFS: pluginSchema,
DistPluginCueFS: load.GetDefaultLoadPaths().DistPluginCueFS,
}
err := validate(baseLoadPaths, load.BaseDashboardFamily)

View File

@ -9,6 +9,7 @@ package scuemata
#PanelSchema: {
PanelOptions: {...}
PanelFieldConfig: {...}
...
}
// A lineage of panel schema

View File

@ -8,7 +8,8 @@ package scuemata
// the larger Dashboard schema.
#PanelSchema: {
PanelOptions: {...}
PanelFieldConfig: {...}
PanelFieldConfig?: {...}
...
}
// A lineage of panel schema

View File

@ -1,22 +0,0 @@
package grafanaschema
Family: {
lineages: [
[
{
PanelOptions: {
showStarred: bool | *true
showRecentlyViewed: bool | *false
showSearch: bool | *false
showHeadings: bool | *true
maxItems: int | *10
query: string | *""
folderId?: int
tags: [...string] | *[]
},
PanelFieldConfig: {}
}
]
]
migrations: []
}

View File

@ -1,17 +0,0 @@
{
"type": "panel",
"name": "Dashboard list",
"id": "dashlist",
"skipDataQuery": true,
"info": {
"description": "List of dynamic links to other dashboards",
"author": {
"name": "Grafana Labs",
"url": "https://grafana.com"
},
"logos": {
"small": "img/icn-dashlist-panel.svg",
"large": "img/icn-dashlist-panel.svg"
}
}
}

View File

@ -10,7 +10,7 @@ Family: scuemata.#Family & {
// TODO must isolate or remove identifiers local to a Grafana instance...?
id?: number
// Unique dashboard identifier that can be generated by anyone. string (8-40)
uid?: string
uid: string
// Title of dashboard.
title?: string
// Description of dashboard.

View File

@ -7,8 +7,9 @@ package scuemata
// rather, they are composed into panel structures as they are defined within
// the larger Dashboard schema.
#PanelSchema: {
PanelOptions: {...}
PanelFieldConfig: {...}
PanelOptions: {...}
PanelFieldConfig?: {...}
...
}
// A lineage of panel schema
@ -16,6 +17,6 @@ package scuemata
// Panel plugin-specific Family
#PanelFamily: {
lineages: [#PanelLineage, ...#PanelLineage]
migrations: [...#Migration]
lineages: [#PanelLineage, ...#PanelLineage]
migrations: [...#Migration]
}