2017-12-20 12:33:33 +01:00
|
|
|
import { SearchCtrl } from '../components/search/search';
|
|
|
|
|
import { SearchSrv } from '../services/search_srv';
|
2017-12-06 20:34:41 +01:00
|
|
|
|
2018-02-12 17:11:41 +01:00
|
|
|
jest.mock('app/core/services/context_srv', () => ({
|
|
|
|
|
contextSrv: {
|
|
|
|
|
user: { orgId: 1 },
|
|
|
|
|
},
|
|
|
|
|
}));
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('SearchCtrl', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
const searchSrvStub = {
|
|
|
|
|
search: (options: any) => {},
|
2017-12-20 12:33:33 +01:00
|
|
|
getDashboardTags: () => {},
|
2017-12-06 23:51:39 +01:00
|
|
|
};
|
2018-09-03 11:30:44 +02:00
|
|
|
const ctrl = new SearchCtrl({ $on: () => {} }, {}, {}, searchSrvStub as SearchSrv);
|
2017-12-19 16:06:54 +01:00
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('Given an empty result', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.results = [];
|
2017-12-06 20:34:41 +01:00
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should not navigate', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.selectedIndex).toBe(0);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should not navigate', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.selectedIndex).toBe(0);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('Given a result of one selected collapsed folder with no dashboards and a root folder with 2 dashboards', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.results = [
|
|
|
|
|
{
|
|
|
|
|
id: 1,
|
2017-12-20 12:33:33 +01:00
|
|
|
title: 'folder',
|
2017-12-06 23:51:39 +01:00
|
|
|
items: [],
|
|
|
|
|
selected: true,
|
|
|
|
|
expanded: false,
|
2017-12-20 12:33:33 +01:00
|
|
|
toggle: i => (i.expanded = !i.expanded),
|
2017-12-06 23:51:39 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 0,
|
2018-02-02 10:33:31 +01:00
|
|
|
title: 'General',
|
2017-12-19 16:06:54 +01:00
|
|
|
items: [{ id: 3, selected: false }, { id: 5, selected: false }],
|
2017-12-06 23:51:39 +01:00
|
|
|
selected: false,
|
|
|
|
|
expanded: true,
|
2017-12-20 12:33:33 +01:00
|
|
|
toggle: i => (i.expanded = !i.expanded),
|
|
|
|
|
},
|
2017-12-06 23:51:39 +01:00
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down three steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('Given a result of one selected collapsed folder with 2 dashboards and a root folder with 2 dashboards', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.results = [
|
|
|
|
|
{
|
|
|
|
|
id: 1,
|
2017-12-20 12:33:33 +01:00
|
|
|
title: 'folder',
|
2017-12-19 16:06:54 +01:00
|
|
|
items: [{ id: 2, selected: false }, { id: 4, selected: false }],
|
2017-12-06 23:51:39 +01:00
|
|
|
selected: true,
|
|
|
|
|
expanded: false,
|
2017-12-20 12:33:33 +01:00
|
|
|
toggle: i => (i.expanded = !i.expanded),
|
2017-12-06 23:51:39 +01:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 0,
|
2018-02-02 10:33:31 +01:00
|
|
|
title: 'General',
|
2017-12-19 16:06:54 +01:00
|
|
|
items: [{ id: 3, selected: false }, { id: 5, selected: false }],
|
2017-12-06 23:51:39 +01:00
|
|
|
selected: false,
|
|
|
|
|
expanded: true,
|
2017-12-20 12:33:33 +01:00
|
|
|
toggle: i => (i.expanded = !i.expanded),
|
|
|
|
|
},
|
2017-12-06 23:51:39 +01:00
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down three steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 0;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard in root folder', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[1].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[1].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('Given a result of a search with 2 dashboards where the first is selected', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.results = [
|
|
|
|
|
{
|
|
|
|
|
hideHeader: true,
|
2017-12-19 16:06:54 +01:00
|
|
|
items: [{ id: 3, selected: true }, { id: 5, selected: false }],
|
2017-12-06 23:51:39 +01:00
|
|
|
selected: false,
|
|
|
|
|
expanded: true,
|
2017-12-20 12:33:33 +01:00
|
|
|
toggle: i => (i.expanded = !i.expanded),
|
|
|
|
|
},
|
2017-12-06 23:51:39 +01:00
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 1;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 1;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating down three steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 1;
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
ctrl.moveSelection(1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
2017-12-06 20:34:41 +01:00
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up one step', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 1;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select last dashboard', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeTruthy();
|
|
|
|
|
});
|
2017-12-06 20:34:41 +01:00
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
describe('When navigating up two steps', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
beforeEach(() => {
|
|
|
|
|
ctrl.selectedIndex = 1;
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
ctrl.moveSelection(-1);
|
|
|
|
|
});
|
|
|
|
|
|
2017-12-20 12:33:33 +01:00
|
|
|
it('should select first dashboard', () => {
|
2017-12-06 23:51:39 +01:00
|
|
|
expect(ctrl.results[0].selected).toBeFalsy();
|
|
|
|
|
expect(ctrl.results[0].items[0].selected).toBeTruthy();
|
|
|
|
|
expect(ctrl.results[0].items[1].selected).toBeFalsy();
|
|
|
|
|
});
|
2017-12-06 20:34:41 +01:00
|
|
|
});
|
2017-12-06 23:51:39 +01:00
|
|
|
});
|
2017-12-06 20:34:41 +01:00
|
|
|
});
|