Przeglądaj źródła

added reducers tests

Torkel Ödegaard 7 lat temu
rodzic
commit
2eca4caa5d

+ 52 - 2
public/app/features/dashboard/state/reducers.test.ts

@@ -1,6 +1,13 @@
-import { loadDashboardPermissions } from './actions';
-import { OrgRole, PermissionLevel, DashboardState } from 'app/types';
+import {
+  loadDashboardPermissions,
+  dashboardInitFetching,
+  dashboardInitCompleted,
+  dashboardInitFailed,
+  dashboardInitSlow,
+} from './actions';
+import { OrgRole, PermissionLevel, DashboardState, DashboardInitPhase } from 'app/types';
 import { initialState, dashboardReducer } from './reducers';
+import { DashboardModel } from './DashboardModel';
 
 describe('dashboard reducer', () => {
   describe('loadDashboardPermissions', () => {
@@ -18,4 +25,47 @@ describe('dashboard reducer', () => {
       expect(state.permissions.length).toBe(2);
     });
   });
+
+  describe('dashboardInitCompleted', () => {
+    let state: DashboardState;
+
+    beforeEach(() => {
+      state = dashboardReducer(initialState, dashboardInitFetching());
+      state = dashboardReducer(state, dashboardInitSlow());
+      state = dashboardReducer(state, dashboardInitCompleted(new DashboardModel({ title: 'My dashboard' })));
+    });
+
+    it('should set model', async () => {
+      expect(state.model.title).toBe('My dashboard');
+    });
+
+    it('should set reset isInitSlow', async () => {
+      expect(state.isInitSlow).toBe(false);
+    });
+  });
+
+  describe('dashboardInitFailed', () => {
+    let state: DashboardState;
+
+    beforeEach(() => {
+      state = dashboardReducer(initialState, dashboardInitFetching());
+      state = dashboardReducer(state, dashboardInitFailed({message: 'Oh no', error: 'sad'}));
+    });
+
+    it('should set model', async () => {
+      expect(state.model.title).toBe('Dashboard init failed');
+    });
+
+    it('should set reset isInitSlow', async () => {
+      expect(state.isInitSlow).toBe(false);
+    });
+
+    it('should set initError', async () => {
+      expect(state.initError.message).toBe('Oh no');
+    });
+
+    it('should set phase failed', async () => {
+      expect(state.initPhase).toBe(DashboardInitPhase.Failed);
+    });
+  });
 });

+ 2 - 1
public/app/types/dashboard.ts

@@ -1,6 +1,7 @@
 import { DashboardAcl } from './acl';
 
 export interface MutableDashboard {
+  title: string;
   meta: DashboardMeta;
   destroy: () => void;
 }
@@ -27,7 +28,7 @@ export interface DashboardMeta {
   focusPanelId?: boolean;
   isStarred?: boolean;
   showSettings?: boolean;
-  expires: string;
+  expires?: string;
   isSnapshot?: boolean;
   folderTitle?: string;
   folderUrl?: string;