From 1790ece4d5f7421b381efc6fcbf543cec4cb2ba6 Mon Sep 17 00:00:00 2001 From: Alex Khomenko Date: Thu, 4 Jun 2020 16:28:50 +0300 Subject: [PATCH] Search: Only move dashboards into expanded folders UI-wise (#25363) * Search: Ony move dashboards into expanded folders UI-wise * Search: Add tests --- .../search/reducers/manageDashboards.test.ts | 10 +++++++++- .../app/features/search/reducers/manageDashboards.ts | 12 +++++++----- public/app/features/search/testData.ts | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/public/app/features/search/reducers/manageDashboards.test.ts b/public/app/features/search/reducers/manageDashboards.test.ts index 3f4cff7fd1b..077e0b05182 100644 --- a/public/app/features/search/reducers/manageDashboards.test.ts +++ b/public/app/features/search/reducers/manageDashboards.test.ts @@ -1,7 +1,7 @@ import { TOGGLE_ALL_CHECKED, TOGGLE_CHECKED, DELETE_ITEMS, MOVE_ITEMS } from './actionTypes'; import { manageDashboardsReducer as reducer, manageDashboardsState as state } from './manageDashboards'; import { sections } from '../testData'; -import { UidsToDelete } from '../types'; +import { DashboardSection, UidsToDelete } from '../types'; // Remove Recent and Starred sections as they're not used in manage dashboards const results = sections.slice(2); @@ -84,4 +84,12 @@ describe('Manage dashboards reducer', () => { expect(newState.results[3].items).toHaveLength(1); expect(newState.results[3].items[0].uid).toEqual('LCFWfl9Zz'); }); + + it('should not display dashboards in a non-expanded folder', () => { + const general = results.find(res => res.id === 0); + const toMove = { dashboards: general.items, folder: { id: 4074 } }; + const newState = reducer({ ...state, results }, { type: MOVE_ITEMS, payload: toMove }); + expect(newState.results.find((res: DashboardSection) => res.id === 4074).items).toHaveLength(0); + expect(newState.results.find((res: DashboardSection) => res.id === 0).items).toHaveLength(0); + }); }); diff --git a/public/app/features/search/reducers/manageDashboards.ts b/public/app/features/search/reducers/manageDashboards.ts index 0434c439411..6005ba614be 100644 --- a/public/app/features/search/reducers/manageDashboards.ts +++ b/public/app/features/search/reducers/manageDashboards.ts @@ -53,11 +53,13 @@ const reducer = (state: ManageDashboardsState, action: SearchAction) => { ...state, results: state.results.map(result => { if (folder.id === result.id) { - return { - ...result, - items: [...result.items, ...dashboards.map(db => ({ ...db, checked: false }))], - checked: false, - }; + return result.expanded + ? { + ...result, + items: [...result.items, ...dashboards.map(db => ({ ...db, checked: false }))], + checked: false, + } + : result; } else { return { ...result, items: result.items.filter(item => !uids.includes(item.uid)) }; } diff --git a/public/app/features/search/testData.ts b/public/app/features/search/testData.ts index 3d7a144fad0..e92779b9df2 100644 --- a/public/app/features/search/testData.ts +++ b/public/app/features/search/testData.ts @@ -107,7 +107,7 @@ export const sections = [ id: 2, uid: 'JB_zdOUWk', title: 'gdev dashboards', - expanded: false, + expanded: true, url: '/dashboards/f/JB_zdOUWk/gdev-dashboards', icon: 'folder', score: 2,