Files
2025-04-23 20:54:35 +03:00

77 lines
2.4 KiB
Go

package dualwrite
import (
"context"
"testing"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"k8s.io/apimachinery/pkg/runtime/schema"
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
)
func TestIsReadingLegacyDashboardsAndFolders(t *testing.T) {
tests := []struct {
name string
setupMockSvc func(*MockService)
expectedResult bool
}{
{
name: "both folders and dashboards are read from unified storage",
setupMockSvc: func(svc *MockService) {
svc.On("ReadFromUnified", mock.Anything, folders.FolderResourceInfo.GroupResource()).Return(true, nil)
svc.On("ReadFromUnified", mock.Anything, schema.GroupResource{
Group: dashboard.GROUP,
Resource: dashboard.DASHBOARD_RESOURCE,
}).Return(true, nil)
},
expectedResult: false,
},
{
name: "only folders are read from unified storage",
setupMockSvc: func(svc *MockService) {
svc.On("ReadFromUnified", mock.Anything, folders.FolderResourceInfo.GroupResource()).Return(true, nil)
svc.On("ReadFromUnified", mock.Anything, schema.GroupResource{
Group: dashboard.GROUP,
Resource: dashboard.DASHBOARD_RESOURCE,
}).Return(false, nil)
},
expectedResult: true,
},
{
name: "only dashboards are read from unified storage",
setupMockSvc: func(svc *MockService) {
svc.On("ReadFromUnified", mock.Anything, folders.FolderResourceInfo.GroupResource()).Return(false, nil)
svc.On("ReadFromUnified", mock.Anything, schema.GroupResource{
Group: dashboard.GROUP,
Resource: dashboard.DASHBOARD_RESOURCE,
}).Return(true, nil)
},
expectedResult: true,
},
{
name: "neither folders nor dashboards are read from unified storage",
setupMockSvc: func(svc *MockService) {
svc.On("ReadFromUnified", mock.Anything, folders.FolderResourceInfo.GroupResource()).Return(false, nil)
svc.On("ReadFromUnified", mock.Anything, schema.GroupResource{
Group: dashboard.GROUP,
Resource: dashboard.DASHBOARD_RESOURCE,
}).Return(false, nil)
},
expectedResult: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mockSvc := NewMockService(t)
tt.setupMockSvc(mockSvc)
result := IsReadingLegacyDashboardsAndFolders(context.Background(), mockSvc)
require.Equal(t, tt.expectedResult, result)
})
}
}