@ -2,8 +2,10 @@ package cloudmigrationimpl
import (
"context"
"maps"
"os"
"path/filepath"
"slices"
"testing"
"time"
@ -392,6 +394,7 @@ func Test_NonCoreDataSourcesHaveWarning(t *testing.T) {
Results : [ ] cloudmigration . CloudMigrationResource {
{
Name : "1 name" ,
ParentName : "1 parent name" ,
Type : cloudmigration . DatasourceDataType ,
RefID : "1" , // this will be core
Status : cloudmigration . ItemStatusOK ,
@ -399,6 +402,7 @@ func Test_NonCoreDataSourcesHaveWarning(t *testing.T) {
} ,
{
Name : "2 name" ,
ParentName : "" ,
Type : cloudmigration . DatasourceDataType ,
RefID : "2" , // this will be non-core
Status : cloudmigration . ItemStatusOK ,
@ -406,6 +410,7 @@ func Test_NonCoreDataSourcesHaveWarning(t *testing.T) {
} ,
{
Name : "3 name" ,
ParentName : "3 parent name" ,
Type : cloudmigration . DatasourceDataType ,
RefID : "3" , // this will be non-core with an error
Status : cloudmigration . ItemStatusError ,
@ -414,6 +419,7 @@ func Test_NonCoreDataSourcesHaveWarning(t *testing.T) {
} ,
{
Name : "4 name" ,
ParentName : "4 folder name" ,
Type : cloudmigration . DatasourceDataType ,
RefID : "4" , // this will be deleted
Status : cloudmigration . ItemStatusOK ,
@ -564,6 +570,121 @@ func TestReportEvent(t *testing.T) {
require . Equal ( t , 1 , gmsMock . reportEventCalled )
} )
}
func TestGetFolderNamesForFolderUIDs ( t * testing . T ) {
s := setUpServiceTest ( t , false ) . ( * Service )
ctx , cancel := context . WithCancel ( context . Background ( ) )
t . Cleanup ( cancel )
user := & user . SignedInUser { OrgID : 1 }
testcases := [ ] struct {
folders [ ] * folder . Folder
folderUIDs [ ] string
expectedFolderNames [ ] string
} {
{
folders : [ ] * folder . Folder {
{ UID : "folderUID-A" , Title : "Folder A" , OrgID : 1 } ,
{ UID : "folderUID-B" , Title : "Folder B" , OrgID : 1 } ,
} ,
folderUIDs : [ ] string { "folderUID-A" , "folderUID-B" } ,
expectedFolderNames : [ ] string { "Folder A" , "Folder B" } ,
} ,
{
folders : [ ] * folder . Folder {
{ UID : "folderUID-A" , Title : "Folder A" , OrgID : 1 } ,
} ,
folderUIDs : [ ] string { "folderUID-A" } ,
expectedFolderNames : [ ] string { "Folder A" } ,
} ,
{
folders : [ ] * folder . Folder { } ,
folderUIDs : [ ] string { "folderUID-A" } ,
expectedFolderNames : [ ] string { "" } ,
} ,
{
folders : [ ] * folder . Folder {
{ UID : "folderUID-A" , Title : "Folder A" , OrgID : 1 } ,
} ,
folderUIDs : [ ] string { "folderUID-A" , "folderUID-B" } ,
expectedFolderNames : [ ] string { "Folder A" , "" } ,
} ,
{
folders : [ ] * folder . Folder { } ,
folderUIDs : [ ] string { "" } ,
expectedFolderNames : [ ] string { "" } ,
} ,
{
folders : [ ] * folder . Folder { } ,
folderUIDs : [ ] string { } ,
expectedFolderNames : [ ] string { } ,
} ,
}
for _ , tc := range testcases {
s . folderService = & foldertest . FakeService { ExpectedFolders : tc . folders }
folderUIDsToFolders , err := s . getFolderNamesForFolderUIDs ( ctx , user , tc . folderUIDs )
require . NoError ( t , err )
resFolderNames := slices . Collect ( maps . Values ( folderUIDsToFolders ) )
require . Len ( t , resFolderNames , len ( tc . expectedFolderNames ) )
require . ElementsMatch ( t , resFolderNames , tc . expectedFolderNames )
}
}
func TestGetParentNames ( t * testing . T ) {
s := setUpServiceTest ( t , false ) . ( * Service )
ctx , cancel := context . WithCancel ( context . Background ( ) )
t . Cleanup ( cancel )
user := & user . SignedInUser { OrgID : 1 }
libraryElementFolderUID := "folderUID-A"
testcases := [ ] struct {
fakeFolders [ ] * folder . Folder
folders [ ] folder . CreateFolderCommand
dashboards [ ] dashboards . Dashboard
libraryElements [ ] libraryElement
expectedDashParentNames [ ] string
expectedFoldParentNames [ ] string
} {
{
fakeFolders : [ ] * folder . Folder {
{ UID : "folderUID-A" , Title : "Folder A" , OrgID : 1 , ParentUID : "" } ,
{ UID : "folderUID-B" , Title : "Folder B" , OrgID : 1 , ParentUID : "folderUID-A" } ,
} ,
folders : [ ] folder . CreateFolderCommand {
{ UID : "folderUID-C" , Title : "Folder A" , OrgID : 1 , ParentUID : "folderUID-A" } ,
} ,
dashboards : [ ] dashboards . Dashboard {
{ UID : "dashboardUID-0" , OrgID : 1 , FolderUID : "" } ,
{ UID : "dashboardUID-1" , OrgID : 1 , FolderUID : "folderUID-A" } ,
{ UID : "dashboardUID-2" , OrgID : 1 , FolderUID : "folderUID-B" } ,
} ,
libraryElements : [ ] libraryElement {
{ UID : "libraryElementUID-0" , FolderUID : & libraryElementFolderUID } ,
} ,
expectedDashParentNames : [ ] string { "" , "Folder A" , "Folder B" } ,
expectedFoldParentNames : [ ] string { "Folder A" } ,
} ,
}
for _ , tc := range testcases {
s . folderService = & foldertest . FakeService { ExpectedFolders : tc . fakeFolders }
dataUIDsToParentNamesByType , err := s . getParentNames ( ctx , user , tc . dashboards , tc . folders , tc . libraryElements )
require . NoError ( t , err )
resDashParentNames := slices . Collect ( maps . Values ( dataUIDsToParentNamesByType [ cloudmigration . DashboardDataType ] ) )
require . Len ( t , resDashParentNames , len ( tc . expectedDashParentNames ) )
require . ElementsMatch ( t , resDashParentNames , tc . expectedDashParentNames )
resFoldParentNames := slices . Collect ( maps . Values ( dataUIDsToParentNamesByType [ cloudmigration . FolderDataType ] ) )
require . Len ( t , resFoldParentNames , len ( tc . expectedFoldParentNames ) )
require . ElementsMatch ( t , resFoldParentNames , tc . expectedFoldParentNames )
}
}
func TestGetLibraryElementsCommands ( t * testing . T ) {
s := setUpServiceTest ( t , false ) . ( * Service )