2025-04-01 10:38:02 +09:00

365 lines
12 KiB
TypeScript

import { filterFolders, groupDashboards } from '../internal/utils';
import {
alternativeDashboardWithRootFolder,
alternativeDashboardWithTwoFolders,
dashboardWithOneFolder,
dashboardWithoutFolder,
dashboardWithRootFolder,
dashboardWithRootFolderAndOtherFolder,
dashboardWithTwoFolders,
} from './utils/mocks';
describe('Utils', () => {
describe('groupDashboards', () => {
it('Assigns dashboards without groups to root folder', () => {
expect(groupDashboards([dashboardWithoutFolder])).toEqual({
'': {
title: '',
isExpanded: true,
folders: {},
dashboards: {
[dashboardWithoutFolder.spec.dashboard]: {
dashboard: dashboardWithoutFolder.spec.dashboard,
dashboardTitle: dashboardWithoutFolder.status.dashboardTitle,
items: [dashboardWithoutFolder],
},
},
},
});
});
it('Assigns dashboards with root group to root folder', () => {
expect(groupDashboards([dashboardWithRootFolder])).toEqual({
'': {
title: '',
isExpanded: true,
folders: {},
dashboards: {
[dashboardWithRootFolder.spec.dashboard]: {
dashboard: dashboardWithRootFolder.spec.dashboard,
dashboardTitle: dashboardWithRootFolder.status.dashboardTitle,
items: [dashboardWithRootFolder],
},
},
},
});
});
it('Merges folders from multiple dashboards', () => {
expect(groupDashboards([dashboardWithOneFolder, dashboardWithTwoFolders])).toEqual({
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: false,
folders: {},
dashboards: {
[dashboardWithOneFolder.spec.dashboard]: {
dashboard: dashboardWithOneFolder.spec.dashboard,
dashboardTitle: dashboardWithOneFolder.status.dashboardTitle,
items: [dashboardWithOneFolder],
},
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders],
},
},
},
'Folder 2': {
title: 'Folder 2',
isExpanded: false,
folders: {},
dashboards: {
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders],
},
},
},
},
dashboards: {},
},
});
});
it('Merges scopes from multiple dashboards', () => {
expect(groupDashboards([dashboardWithTwoFolders, alternativeDashboardWithTwoFolders])).toEqual({
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: false,
folders: {},
dashboards: {
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders, alternativeDashboardWithTwoFolders],
},
},
},
'Folder 2': {
title: 'Folder 2',
isExpanded: false,
folders: {},
dashboards: {
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders, alternativeDashboardWithTwoFolders],
},
},
},
},
dashboards: {},
},
});
});
it('Matches snapshot', () => {
expect(
groupDashboards([
dashboardWithoutFolder,
dashboardWithOneFolder,
dashboardWithTwoFolders,
alternativeDashboardWithTwoFolders,
dashboardWithRootFolder,
alternativeDashboardWithRootFolder,
dashboardWithRootFolderAndOtherFolder,
])
).toEqual({
'': {
dashboards: {
[dashboardWithRootFolderAndOtherFolder.spec.dashboard]: {
dashboard: dashboardWithRootFolderAndOtherFolder.spec.dashboard,
dashboardTitle: dashboardWithRootFolderAndOtherFolder.status.dashboardTitle,
items: [dashboardWithRootFolderAndOtherFolder],
},
[dashboardWithRootFolder.spec.dashboard]: {
dashboard: dashboardWithRootFolder.spec.dashboard,
dashboardTitle: dashboardWithRootFolder.status.dashboardTitle,
items: [dashboardWithRootFolder, alternativeDashboardWithRootFolder],
},
[dashboardWithoutFolder.spec.dashboard]: {
dashboard: dashboardWithoutFolder.spec.dashboard,
dashboardTitle: dashboardWithoutFolder.status.dashboardTitle,
items: [dashboardWithoutFolder],
},
},
folders: {
'Folder 1': {
dashboards: {
[dashboardWithOneFolder.spec.dashboard]: {
dashboard: dashboardWithOneFolder.spec.dashboard,
dashboardTitle: dashboardWithOneFolder.status.dashboardTitle,
items: [dashboardWithOneFolder],
},
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders, alternativeDashboardWithTwoFolders],
},
},
folders: {},
isExpanded: false,
title: 'Folder 1',
},
'Folder 2': {
dashboards: {
[dashboardWithTwoFolders.spec.dashboard]: {
dashboard: dashboardWithTwoFolders.spec.dashboard,
dashboardTitle: dashboardWithTwoFolders.status.dashboardTitle,
items: [dashboardWithTwoFolders, alternativeDashboardWithTwoFolders],
},
},
folders: {},
isExpanded: false,
title: 'Folder 2',
},
'Folder 3': {
dashboards: {
[dashboardWithRootFolderAndOtherFolder.spec.dashboard]: {
dashboard: dashboardWithRootFolderAndOtherFolder.spec.dashboard,
dashboardTitle: dashboardWithRootFolderAndOtherFolder.status.dashboardTitle,
items: [dashboardWithRootFolderAndOtherFolder],
},
},
folders: {},
isExpanded: false,
title: 'Folder 3',
},
},
isExpanded: true,
title: '',
},
});
});
});
describe('filterFolders', () => {
it('Shows folders matching criteria', () => {
expect(
filterFolders(
{
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: false,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
'Folder 2': {
title: 'Folder 2',
isExpanded: true,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
},
'Folder'
)
).toEqual({
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: true,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
'Folder 2': {
title: 'Folder 2',
isExpanded: true,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
},
dashboards: {},
},
});
});
it('Shows dashboards matching criteria', () => {
expect(
filterFolders(
{
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: false,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
'Folder 2': {
title: 'Folder 2',
isExpanded: true,
folders: {},
dashboards: {
'Random ID': {
dashboard: 'Random ID',
dashboardTitle: 'Random Title',
items: [],
},
},
},
},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
'Random ID': {
dashboard: 'Random ID',
dashboardTitle: 'Random Title',
items: [],
},
},
},
},
'dash'
)
).toEqual({
'': {
title: '',
isExpanded: true,
folders: {
'Folder 1': {
title: 'Folder 1',
isExpanded: true,
folders: {},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
},
dashboards: {
'Dashboard ID': {
dashboard: 'Dashboard ID',
dashboardTitle: 'Dashboard Title',
items: [],
},
},
},
});
});
});
});