mirror of https://github.com/grafana/grafana.git
chore: Cleaning up implicit anys in manage_dashboard.ts and manage_dashboard.test.ts
progress: #14714
This commit is contained in:
parent
aa4b593dfa
commit
96af051cb2
|
|
@ -1,7 +1,30 @@
|
||||||
|
// @ts-ignore
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import coreModule from 'app/core/core_module';
|
import coreModule from 'app/core/core_module';
|
||||||
import appEvents from 'app/core/app_events';
|
import appEvents from 'app/core/app_events';
|
||||||
import { SearchSrv } from 'app/core/services/search_srv';
|
import { SearchSrv } from 'app/core/services/search_srv';
|
||||||
|
import { BackendSrv } from 'app/core/services/backend_srv';
|
||||||
|
import { NavModelSrv } from 'app/core/nav_model_srv';
|
||||||
|
import { ContextSrv } from 'app/core/services/context_srv';
|
||||||
|
|
||||||
|
export interface Section {
|
||||||
|
id: number;
|
||||||
|
uid: string;
|
||||||
|
title: string;
|
||||||
|
expanded: false;
|
||||||
|
items: any[];
|
||||||
|
url: string;
|
||||||
|
icon: string;
|
||||||
|
score: number;
|
||||||
|
checked: boolean;
|
||||||
|
hideHeader: boolean;
|
||||||
|
toggle: Function;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface FoldersAndDashboardUids {
|
||||||
|
folderUids: string[];
|
||||||
|
dashboardUids: string[];
|
||||||
|
}
|
||||||
|
|
||||||
class Query {
|
class Query {
|
||||||
query: string;
|
query: string;
|
||||||
|
|
@ -14,7 +37,7 @@ class Query {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ManageDashboardsCtrl {
|
export class ManageDashboardsCtrl {
|
||||||
sections: any[];
|
sections: Section[];
|
||||||
|
|
||||||
query: Query;
|
query: Query;
|
||||||
navModel: any;
|
navModel: any;
|
||||||
|
|
@ -45,7 +68,12 @@ export class ManageDashboardsCtrl {
|
||||||
hasEditPermissionInFolders: boolean;
|
hasEditPermissionInFolders: boolean;
|
||||||
|
|
||||||
/** @ngInject */
|
/** @ngInject */
|
||||||
constructor(private backendSrv, navModelSrv, private searchSrv: SearchSrv, private contextSrv) {
|
constructor(
|
||||||
|
private backendSrv: BackendSrv,
|
||||||
|
navModelSrv: NavModelSrv,
|
||||||
|
private searchSrv: SearchSrv,
|
||||||
|
private contextSrv: ContextSrv
|
||||||
|
) {
|
||||||
this.isEditor = this.contextSrv.isEditor;
|
this.isEditor = this.contextSrv.isEditor;
|
||||||
this.hasEditPermissionInFolders = this.contextSrv.hasEditPermissionInFolders;
|
this.hasEditPermissionInFolders = this.contextSrv.hasEditPermissionInFolders;
|
||||||
|
|
||||||
|
|
@ -73,7 +101,7 @@ export class ManageDashboardsCtrl {
|
||||||
refreshList() {
|
refreshList() {
|
||||||
return this.searchSrv
|
return this.searchSrv
|
||||||
.search(this.query)
|
.search(this.query)
|
||||||
.then(result => {
|
.then((result: Section[]) => {
|
||||||
return this.initDashboardList(result);
|
return this.initDashboardList(result);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|
@ -81,7 +109,7 @@ export class ManageDashboardsCtrl {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.backendSrv.getFolderByUid(this.folderUid).then(folder => {
|
return this.backendSrv.getFolderByUid(this.folderUid).then((folder: any) => {
|
||||||
this.canSave = folder.canSave;
|
this.canSave = folder.canSave;
|
||||||
if (!this.canSave) {
|
if (!this.canSave) {
|
||||||
this.hasEditPermissionInFolders = false;
|
this.hasEditPermissionInFolders = false;
|
||||||
|
|
@ -90,7 +118,7 @@ export class ManageDashboardsCtrl {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
initDashboardList(result: any) {
|
initDashboardList(result: Section[]) {
|
||||||
this.canMove = false;
|
this.canMove = false;
|
||||||
this.canDelete = false;
|
this.canDelete = false;
|
||||||
this.selectAllChecked = false;
|
this.selectAllChecked = false;
|
||||||
|
|
@ -128,25 +156,25 @@ export class ManageDashboardsCtrl {
|
||||||
this.canDelete = selectedDashboards > 0 || selectedFolders > 0;
|
this.canDelete = selectedDashboards > 0 || selectedFolders > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getFoldersAndDashboardsToDelete() {
|
getFoldersAndDashboardsToDelete(): FoldersAndDashboardUids {
|
||||||
const selectedDashboards = {
|
const selectedDashboards: FoldersAndDashboardUids = {
|
||||||
folders: [],
|
folderUids: [],
|
||||||
dashboards: [],
|
dashboardUids: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const section of this.sections) {
|
for (const section of this.sections) {
|
||||||
if (section.checked && section.id !== 0) {
|
if (section.checked && section.id !== 0) {
|
||||||
selectedDashboards.folders.push(section.uid);
|
selectedDashboards.folderUids.push(section.uid);
|
||||||
} else {
|
} else {
|
||||||
const selected = _.filter(section.items, { checked: true });
|
const selected = _.filter(section.items, { checked: true });
|
||||||
selectedDashboards.dashboards.push(..._.map(selected, 'uid'));
|
selectedDashboards.dashboardUids.push(..._.map(selected, 'uid'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return selectedDashboards;
|
return selectedDashboards;
|
||||||
}
|
}
|
||||||
|
|
||||||
getFolderIds(sections) {
|
getFolderIds(sections: Section[]) {
|
||||||
const ids = [];
|
const ids = [];
|
||||||
for (const s of sections) {
|
for (const s of sections) {
|
||||||
if (s.checked) {
|
if (s.checked) {
|
||||||
|
|
@ -158,8 +186,8 @@ export class ManageDashboardsCtrl {
|
||||||
|
|
||||||
delete() {
|
delete() {
|
||||||
const data = this.getFoldersAndDashboardsToDelete();
|
const data = this.getFoldersAndDashboardsToDelete();
|
||||||
const folderCount = data.folders.length;
|
const folderCount = data.folderUids.length;
|
||||||
const dashCount = data.dashboards.length;
|
const dashCount = data.dashboardUids.length;
|
||||||
let text = 'Do you want to delete the ';
|
let text = 'Do you want to delete the ';
|
||||||
let text2;
|
let text2;
|
||||||
|
|
||||||
|
|
@ -179,12 +207,12 @@ export class ManageDashboardsCtrl {
|
||||||
icon: 'fa-trash',
|
icon: 'fa-trash',
|
||||||
yesText: 'Delete',
|
yesText: 'Delete',
|
||||||
onConfirm: () => {
|
onConfirm: () => {
|
||||||
this.deleteFoldersAndDashboards(data.folders, data.dashboards);
|
this.deleteFoldersAndDashboards(data.folderUids, data.dashboardUids);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private deleteFoldersAndDashboards(folderUids, dashboardUids) {
|
private deleteFoldersAndDashboards(folderUids: string[], dashboardUids: string[]) {
|
||||||
this.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(() => {
|
this.backendSrv.deleteFoldersAndDashboards(folderUids, dashboardUids).then(() => {
|
||||||
this.refreshList();
|
this.refreshList();
|
||||||
});
|
});
|
||||||
|
|
@ -219,13 +247,13 @@ export class ManageDashboardsCtrl {
|
||||||
}
|
}
|
||||||
|
|
||||||
initTagFilter() {
|
initTagFilter() {
|
||||||
return this.searchSrv.getDashboardTags().then(results => {
|
return this.searchSrv.getDashboardTags().then((results: any) => {
|
||||||
this.tagFilterOptions = [{ term: 'Filter By Tag', disabled: true }].concat(results);
|
this.tagFilterOptions = [{ term: 'Filter By Tag', disabled: true }].concat(results);
|
||||||
this.selectedTagFilter = this.tagFilterOptions[0];
|
this.selectedTagFilter = this.tagFilterOptions[0];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
filterByTag(tag) {
|
filterByTag(tag: any) {
|
||||||
if (_.indexOf(this.query.tag, tag) === -1) {
|
if (_.indexOf(this.query.tag, tag) === -1) {
|
||||||
this.query.tag.push(tag);
|
this.query.tag.push(tag);
|
||||||
}
|
}
|
||||||
|
|
@ -243,7 +271,7 @@ export class ManageDashboardsCtrl {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
removeTag(tag, evt) {
|
removeTag(tag: any, evt: Event) {
|
||||||
this.query.tag = _.without(this.query.tag, tag);
|
this.query.tag = _.without(this.query.tag, tag);
|
||||||
this.refreshList();
|
this.refreshList();
|
||||||
if (evt) {
|
if (evt) {
|
||||||
|
|
@ -269,7 +297,7 @@ export class ManageDashboardsCtrl {
|
||||||
section.checked = this.selectAllChecked;
|
section.checked = this.selectAllChecked;
|
||||||
}
|
}
|
||||||
|
|
||||||
section.items = _.map(section.items, item => {
|
section.items = _.map(section.items, (item: any) => {
|
||||||
item.checked = this.selectAllChecked;
|
item.checked = this.selectAllChecked;
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,39 @@
|
||||||
import { ManageDashboardsCtrl } from 'app/core/components/manage_dashboards/manage_dashboards';
|
// @ts-ignore
|
||||||
import { SearchSrv } from 'app/core/services/search_srv';
|
|
||||||
import q from 'q';
|
import q from 'q';
|
||||||
|
import {
|
||||||
|
ManageDashboardsCtrl,
|
||||||
|
Section,
|
||||||
|
FoldersAndDashboardUids,
|
||||||
|
} from 'app/core/components/manage_dashboards/manage_dashboards';
|
||||||
|
import { SearchSrv } from 'app/core/services/search_srv';
|
||||||
|
import { BackendSrv } from '../services/backend_srv';
|
||||||
|
import { NavModelSrv } from '../nav_model_srv';
|
||||||
|
import { ContextSrv } from '../services/context_srv';
|
||||||
|
|
||||||
|
const mockSection = (overides?: object): Section => {
|
||||||
|
const defaultSection: Section = {
|
||||||
|
id: 0,
|
||||||
|
items: [],
|
||||||
|
checked: false,
|
||||||
|
expanded: false,
|
||||||
|
hideHeader: false,
|
||||||
|
icon: '',
|
||||||
|
score: 0,
|
||||||
|
title: 'Some Section',
|
||||||
|
toggle: jest.fn(),
|
||||||
|
uid: 'someuid',
|
||||||
|
url: '/some/url/',
|
||||||
|
};
|
||||||
|
|
||||||
|
return { ...defaultSection, ...overides };
|
||||||
|
};
|
||||||
|
|
||||||
describe('ManageDashboards', () => {
|
describe('ManageDashboards', () => {
|
||||||
let ctrl;
|
let ctrl: ManageDashboardsCtrl;
|
||||||
|
|
||||||
describe('when browsing dashboards', () => {
|
describe('when browsing dashboards', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
const tags: any[] = [];
|
||||||
const response = [
|
const response = [
|
||||||
{
|
{
|
||||||
id: 410,
|
id: 410,
|
||||||
|
|
@ -18,11 +45,11 @@ describe('ManageDashboards', () => {
|
||||||
title: 'Dashboard Test',
|
title: 'Dashboard Test',
|
||||||
url: 'dashboard/db/dashboard-test',
|
url: 'dashboard/db/dashboard-test',
|
||||||
icon: 'fa fa-folder',
|
icon: 'fa fa-folder',
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -37,11 +64,11 @@ describe('ManageDashboards', () => {
|
||||||
title: 'Dashboard Test',
|
title: 'Dashboard Test',
|
||||||
url: 'dashboard/db/dashboard-test',
|
url: 'dashboard/db/dashboard-test',
|
||||||
icon: 'fa fa-folder',
|
icon: 'fa fa-folder',
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
@ -61,6 +88,7 @@ describe('ManageDashboards', () => {
|
||||||
|
|
||||||
describe('when browsing dashboards for a folder', () => {
|
describe('when browsing dashboards for a folder', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
const tags: any[] = [];
|
||||||
const response = [
|
const response = [
|
||||||
{
|
{
|
||||||
id: 410,
|
id: 410,
|
||||||
|
|
@ -72,11 +100,11 @@ describe('ManageDashboards', () => {
|
||||||
title: 'Dashboard Test',
|
title: 'Dashboard Test',
|
||||||
url: 'dashboard/db/dashboard-test',
|
url: 'dashboard/db/dashboard-test',
|
||||||
icon: 'fa fa-folder',
|
icon: 'fa fa-folder',
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
@ -92,6 +120,7 @@ describe('ManageDashboards', () => {
|
||||||
|
|
||||||
describe('when searching dashboards', () => {
|
describe('when searching dashboards', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
const tags: any[] = [];
|
||||||
const response = [
|
const response = [
|
||||||
{
|
{
|
||||||
checked: false,
|
checked: false,
|
||||||
|
|
@ -103,7 +132,7 @@ describe('ManageDashboards', () => {
|
||||||
title: 'Dashboard Test',
|
title: 'Dashboard Test',
|
||||||
url: 'dashboard/db/dashboard-test',
|
url: 'dashboard/db/dashboard-test',
|
||||||
icon: 'fa fa-folder',
|
icon: 'fa fa-folder',
|
||||||
tags: [],
|
tags,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
folderId: 410,
|
folderId: 410,
|
||||||
folderUid: 'uid',
|
folderUid: 'uid',
|
||||||
|
|
@ -115,7 +144,7 @@ describe('ManageDashboards', () => {
|
||||||
title: 'Dashboard Test',
|
title: 'Dashboard Test',
|
||||||
url: 'dashboard/db/dashboard-test',
|
url: 'dashboard/db/dashboard-test',
|
||||||
icon: 'fa fa-folder',
|
icon: 'fa fa-folder',
|
||||||
tags: [],
|
tags,
|
||||||
folderId: 499,
|
folderId: 499,
|
||||||
isStarred: false,
|
isStarred: false,
|
||||||
},
|
},
|
||||||
|
|
@ -245,7 +274,7 @@ describe('ManageDashboards', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when selecting dashboards', () => {
|
describe('when selecting dashboards', () => {
|
||||||
let ctrl;
|
let ctrl: ManageDashboardsCtrl;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl = createCtrlWithStubs([]);
|
ctrl = createCtrlWithStubs([]);
|
||||||
|
|
@ -254,16 +283,16 @@ describe('ManageDashboards', () => {
|
||||||
describe('and no dashboards are selected', () => {
|
describe('and no dashboards are selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
items: [{ id: 2, checked: false }],
|
items: [{ id: 2, checked: false }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
items: [{ id: 3, checked: false }],
|
items: [{ id: 3, checked: false }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
});
|
});
|
||||||
|
|
@ -302,16 +331,16 @@ describe('ManageDashboards', () => {
|
||||||
describe('and all folders and dashboards are selected', () => {
|
describe('and all folders and dashboards are selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
items: [{ id: 2, checked: true }],
|
items: [{ id: 2, checked: true }],
|
||||||
checked: true,
|
checked: true,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
items: [{ id: 3, checked: true }],
|
items: [{ id: 3, checked: true }],
|
||||||
checked: true,
|
checked: true,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
});
|
});
|
||||||
|
|
@ -350,18 +379,18 @@ describe('ManageDashboards', () => {
|
||||||
describe('and one dashboard in root is selected', () => {
|
describe('and one dashboard in root is selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: false }],
|
items: [{ id: 2, checked: false }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: true }],
|
items: [{ id: 3, checked: true }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
});
|
});
|
||||||
|
|
@ -378,18 +407,18 @@ describe('ManageDashboards', () => {
|
||||||
describe('and one child dashboard is selected', () => {
|
describe('and one child dashboard is selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: true }],
|
items: [{ id: 2, checked: true }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: false }],
|
items: [{ id: 3, checked: false }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
|
|
@ -407,18 +436,18 @@ describe('ManageDashboards', () => {
|
||||||
describe('and one child dashboard and one dashboard is selected', () => {
|
describe('and one child dashboard and one dashboard is selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: true }],
|
items: [{ id: 2, checked: true }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: true }],
|
items: [{ id: 3, checked: true }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
|
|
@ -436,24 +465,24 @@ describe('ManageDashboards', () => {
|
||||||
describe('and one child dashboard and one folder is selected', () => {
|
describe('and one child dashboard and one folder is selected', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: false }],
|
items: [{ id: 2, checked: false }],
|
||||||
checked: true,
|
checked: true,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 3,
|
id: 3,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 4, checked: true }],
|
items: [{ id: 4, checked: true }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: false }],
|
items: [{ id: 3, checked: false }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
ctrl.selectionChanged();
|
ctrl.selectionChanged();
|
||||||
|
|
@ -470,55 +499,55 @@ describe('ManageDashboards', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when deleting dashboards', () => {
|
describe('when deleting dashboards', () => {
|
||||||
let toBeDeleted: any;
|
let toBeDeleted: FoldersAndDashboardUids;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
ctrl = createCtrlWithStubs([]);
|
ctrl = createCtrlWithStubs([]);
|
||||||
|
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
uid: 'folder',
|
uid: 'folder',
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: true, uid: 'folder-dash' }],
|
items: [{ id: 2, checked: true, uid: 'folder-dash' }],
|
||||||
checked: true,
|
checked: true,
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 3,
|
id: 3,
|
||||||
title: 'folder-2',
|
title: 'folder-2',
|
||||||
items: [{ id: 3, checked: true, uid: 'folder-2-dash' }],
|
items: [{ id: 3, checked: true, uid: 'folder-2-dash' }],
|
||||||
checked: false,
|
checked: false,
|
||||||
uid: 'folder-2',
|
uid: 'folder-2',
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: true, uid: 'root-dash' }],
|
items: [{ id: 3, checked: true, uid: 'root-dash' }],
|
||||||
checked: true,
|
checked: true,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
toBeDeleted = ctrl.getFoldersAndDashboardsToDelete();
|
toBeDeleted = ctrl.getFoldersAndDashboardsToDelete();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 1 folder', () => {
|
it('should return 1 folder', () => {
|
||||||
expect(toBeDeleted.folders.length).toEqual(1);
|
expect(toBeDeleted.folderUids.length).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return 2 dashboards', () => {
|
it('should return 2 dashboards', () => {
|
||||||
expect(toBeDeleted.dashboards.length).toEqual(2);
|
expect(toBeDeleted.dashboardUids.length).toEqual(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should filter out children if parent is checked', () => {
|
it('should filter out children if parent is checked', () => {
|
||||||
expect(toBeDeleted.folders[0]).toEqual('folder');
|
expect(toBeDeleted.folderUids[0]).toEqual('folder');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not filter out children if parent not is checked', () => {
|
it('should not filter out children if parent not is checked', () => {
|
||||||
expect(toBeDeleted.dashboards[0]).toEqual('folder-2-dash');
|
expect(toBeDeleted.dashboardUids[0]).toEqual('folder-2-dash');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not filter out children if parent is checked and root', () => {
|
it('should not filter out children if parent is checked and root', () => {
|
||||||
expect(toBeDeleted.dashboards[1]).toEqual('root-dash');
|
expect(toBeDeleted.dashboardUids[1]).toEqual('root-dash');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -527,19 +556,19 @@ describe('ManageDashboards', () => {
|
||||||
ctrl = createCtrlWithStubs([]);
|
ctrl = createCtrlWithStubs([]);
|
||||||
|
|
||||||
ctrl.sections = [
|
ctrl.sections = [
|
||||||
{
|
mockSection({
|
||||||
id: 1,
|
id: 1,
|
||||||
title: 'folder',
|
title: 'folder',
|
||||||
items: [{ id: 2, checked: true, uid: 'dash' }],
|
items: [{ id: 2, checked: true, uid: 'dash' }],
|
||||||
checked: false,
|
checked: false,
|
||||||
uid: 'folder',
|
uid: 'folder',
|
||||||
},
|
}),
|
||||||
{
|
mockSection({
|
||||||
id: 0,
|
id: 0,
|
||||||
title: 'General',
|
title: 'General',
|
||||||
items: [{ id: 3, checked: true, uid: 'dash-2' }],
|
items: [{ id: 3, checked: true, uid: 'dash-2' }],
|
||||||
checked: false,
|
checked: false,
|
||||||
},
|
}),
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -562,5 +591,10 @@ function createCtrlWithStubs(searchResponse: any, tags?: any) {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return new ManageDashboardsCtrl({}, { getNav: () => {} }, searchSrvStub as SearchSrv, { isEditor: true });
|
return new ManageDashboardsCtrl(
|
||||||
|
{} as BackendSrv,
|
||||||
|
{ getNav: () => {} } as NavModelSrv,
|
||||||
|
searchSrvStub as SearchSrv,
|
||||||
|
{ isEditor: true } as ContextSrv
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue