github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/test/libraryelements_integration_test.go (about) 1 package test 2 3 import ( 4 "github.com/esnet/gdg/internal/service" 5 "github.com/gosimple/slug" 6 "github.com/grafana/grafana-openapi-client-go/models" 7 "github.com/stretchr/testify/assert" 8 "log/slog" 9 "testing" 10 ) 11 12 func TestLibraryElementsCRUD(t *testing.T) { 13 if testing.Short() { 14 t.Skip("skipping integration test") 15 } 16 17 apiClient, _, cleanup := initTest(t, nil) 18 defer cleanup() 19 apiClient.DeleteAllDashboards(service.NewDashboardFilter("", "", "")) 20 filtersEntity := service.NewDashboardFilter("", "", "") 21 slog.Info("Exporting all Library Elements") 22 apiClient.UploadLibraryElements(filtersEntity) 23 slog.Info("Listing all library elements") 24 boards := apiClient.ListLibraryElements(filtersEntity) 25 slog.Info("Imported library elements", "count", len(boards)) 26 var generalBoard *models.LibraryElementDTO 27 var otherBoard *models.LibraryElementDTO 28 for ndx, board := range boards { 29 slog.Info(board.Name) 30 if slug.Make(board.Name) == "dashboard-makeover-extra-cleaning-duty-assignment-today" { 31 generalBoard = boards[ndx] 32 } 33 if slug.Make(board.Name) == "extreme-dashboard-makeover-mac-oven" { 34 otherBoard = boards[ndx] 35 } 36 } 37 assert.NotNil(t, otherBoard) 38 assert.NotNil(t, generalBoard) 39 validateLibraryElement(t, generalBoard, map[string]interface{}{"Name": "Dashboard Makeover - Extra Cleaning Duty Assignment Today", 40 "Type": "table", "UID": "T47RSwQnz", "Kind": int64(1)}) 41 validateLibraryElement(t, otherBoard, map[string]interface{}{"Name": "Extreme Dashboard Makeover - Mac Oven", 42 "Type": "stat", "UID": "VvzpJ5X7z", "Kind": int64(1)}) 43 44 //Import Library Elements 45 slog.Info("Importing Library Elements") 46 list := apiClient.DownloadLibraryElements(filtersEntity) 47 assert.Equal(t, len(list), len(boards)) 48 //Export all Dashboards 49 apiClient.UploadDashboards(service.NewDashboardFilter("", "", "")) 50 //List connection 51 connections := apiClient.ListLibraryElementsConnections(nil, "T47RSwQnz") 52 assert.Equal(t, len(connections), 1) 53 connection := connections[0] 54 55 assert.Equal(t, connection.Meta.FolderTitle, "Other") 56 assert.True(t, len(connection.Meta.FolderUID) > 0) 57 assert.Equal(t, connection.Meta.Slug, "dashboard-makeover-challenge") 58 assert.Equal(t, connection.Dashboard.(map[string]interface{})["uid"].(string), "F3eInwQ7z") 59 assert.Equal(t, connection.Dashboard.(map[string]interface{})["title"].(string), "Dashboard Makeover Challenge") 60 61 //Delete All Dashboards 62 apiClient.DeleteAllDashboards(service.NewDashboardFilter("", "", "")) 63 slog.Info("Deleting Library Elements") 64 deleteList := apiClient.DeleteAllLibraryElements(filtersEntity) 65 assert.Equal(t, len(deleteList), len(boards)) 66 slog.Info("List Dashboards again") 67 boards = apiClient.ListLibraryElements(filtersEntity) 68 assert.Equal(t, len(boards), 0) 69 70 } 71 72 func validateLibraryElement(t *testing.T, board *models.LibraryElementDTO, data map[string]interface{}) { 73 assert.Equal(t, board.Name, data["Name"].(string)) 74 assert.Equal(t, board.Type, data["Type"].(string)) 75 assert.Equal(t, board.UID, data["UID"].(string)) 76 assert.Equal(t, board.Kind, data["Kind"].(int64)) 77 78 }