Added annother initDashboard test

This commit is contained in:
Torkel Ödegaard 2019-02-07 11:17:31 +01:00
parent 8b080f0511
commit 5f808ddf22
2 changed files with 44 additions and 6 deletions

View File

@ -0,0 +1,14 @@
const backendSrv = {
get: jest.fn(),
getDashboard: jest.fn(),
getDashboardByUid: jest.fn(),
getFolderByUid: jest.fn(),
post: jest.fn(),
};
export function getBackendSrv() {
return backendSrv;
}

View File

@ -2,6 +2,14 @@ import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk'; import thunk from 'redux-thunk';
import { initDashboard, InitDashboardArgs } from './initDashboard'; import { initDashboard, InitDashboardArgs } from './initDashboard';
import { DashboardRouteInfo } from 'app/types'; import { DashboardRouteInfo } from 'app/types';
import { getBackendSrv } from 'app/core/services/backend_srv';
import {
dashboardInitFetching,
dashboardInitCompleted,
dashboardInitServices,
} from './actions';
jest.mock('app/core/services/backend_srv');
const mockStore = configureMockStore([thunk]); const mockStore = configureMockStore([thunk]);
@ -13,6 +21,7 @@ interface ScenarioContext {
variableSrv: any; variableSrv: any;
dashboardSrv: any; dashboardSrv: any;
keybindingSrv: any; keybindingSrv: any;
backendSrv: any;
setup: (fn: () => void) => void; setup: (fn: () => void) => void;
actions: any[]; actions: any[];
storeState: any; storeState: any;
@ -59,6 +68,7 @@ function describeInitScenario(description: string, scenarioFn: ScenarioFn) {
fixUrl: false, fixUrl: false,
routeInfo: DashboardRouteInfo.Normal, routeInfo: DashboardRouteInfo.Normal,
}, },
backendSrv: getBackendSrv(),
timeSrv, timeSrv,
annotationsSrv, annotationsSrv,
unsavedChangesSrv, unsavedChangesSrv,
@ -97,12 +107,12 @@ describeInitScenario('Initializing new dashboard', ctx => {
ctx.args.routeInfo = DashboardRouteInfo.New; ctx.args.routeInfo = DashboardRouteInfo.New;
}); });
it('Should send action to set loading state to fetching', () => { it('Should send action dashboardInitFetching', () => {
expect(ctx.actions[0].type).toBe('DASHBOARD_INIT_FETCHING'); expect(ctx.actions[0].type).toBe(dashboardInitFetching.type);
}); });
it('Should send action to set loading state to Initializing', () => { it('Should send action dashboardInitServices ', () => {
expect(ctx.actions[1].type).toBe('DASHBOARD_INIT_SERVICES'); expect(ctx.actions[1].type).toBe(dashboardInitServices.type);
}); });
it('Should update location with orgId query param', () => { it('Should update location with orgId query param', () => {
@ -110,8 +120,8 @@ describeInitScenario('Initializing new dashboard', ctx => {
expect(ctx.actions[2].payload.query.orgId).toBe(12); expect(ctx.actions[2].payload.query.orgId).toBe(12);
}); });
it('Should send action to set dashboard model', () => { it('Should send action dashboardInitCompleted', () => {
expect(ctx.actions[3].type).toBe('DASHBOARD_INIT_COMLETED'); expect(ctx.actions[3].type).toBe(dashboardInitCompleted.type);
expect(ctx.actions[3].payload.title).toBe('New dashboard'); expect(ctx.actions[3].payload.title).toBe('New dashboard');
}); });
@ -125,4 +135,18 @@ describeInitScenario('Initializing new dashboard', ctx => {
}); });
}); });
describeInitScenario('Initializing home dashboard', ctx => {
ctx.setup(() => {
ctx.args.routeInfo = DashboardRouteInfo.Home;
ctx.backendSrv.get.mockReturnValue(Promise.resolve({
redirectUri: '/u/123/my-home'
}));
});
it('Should redirect to custom home dashboard', () => {
expect(ctx.actions[1].type).toBe('UPDATE_LOCATION');
expect(ctx.actions[1].payload.path).toBe('/u/123/my-home');
});
});