From 97753438079e0b27ba95e42b5e9cf69ec331a81c Mon Sep 17 00:00:00 2001 From: Christos Nasikas Date: Wed, 16 Mar 2022 18:23:14 +0200 Subject: [PATCH] Add test for useApplicationCapabilities --- .../common/lib/kibana/__mocks__/index.ts | 8 +++-- .../public/common/lib/kibana/hooks.test.tsx | 32 +++++++++++++++++++ .../cases/public/common/lib/kibana/hooks.ts | 4 +-- .../common/lib/kibana/kibana_react.mock.ts | 8 +++++ 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/cases/public/common/lib/kibana/hooks.test.tsx diff --git a/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts b/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts index d7ce7318f8724..ffd1f2bc4c8c9 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/__mocks__/index.ts @@ -17,6 +17,7 @@ export const KibanaServices = { getKibanaVersion: jest.fn(() => '8.0.0'), getConfig: jest.fn(() => null), }; + export const useKibana = jest.fn().mockReturnValue({ services: createStartServicesMock(), }); @@ -46,6 +47,9 @@ export const useNavigation = jest.fn().mockReturnValue({ navigateTo: jest.fn(), }); -export const useKibanaCapabilities = jest.fn().mockReturnValue({ - visualize: true, +export const useApplicationCapabilities = jest.fn().mockReturnValue({ + actions: { crud: true, read: true }, + generalCases: { crud: true, read: true }, + visualize: { crud: true, read: true }, + dashboard: { crud: true, read: true }, }); diff --git a/x-pack/plugins/cases/public/common/lib/kibana/hooks.test.tsx b/x-pack/plugins/cases/public/common/lib/kibana/hooks.test.tsx new file mode 100644 index 0000000000000..0f6a1e0035e5c --- /dev/null +++ b/x-pack/plugins/cases/public/common/lib/kibana/hooks.test.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { renderHook } from '@testing-library/react-hooks'; + +import { useApplicationCapabilities } from './hooks'; +import { TestProviders } from '../../mock'; + +describe('hooks', () => { + describe('useApplicationCapabilities', () => { + it('should return the correct capabilities', async () => { + const { result } = renderHook<{}, ReturnType>( + () => useApplicationCapabilities(), + { + wrapper: ({ children }) => {children}, + } + ); + + expect(result.current).toEqual({ + actions: { crud: true, read: true }, + generalCases: { crud: true, read: true }, + visualize: { crud: true, read: true }, + dashboard: { crud: true, read: true }, + }); + }); + }); +}); diff --git a/x-pack/plugins/cases/public/common/lib/kibana/hooks.ts b/x-pack/plugins/cases/public/common/lib/kibana/hooks.ts index d4ecead0eefc8..127274e5ed55f 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/hooks.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/hooks.ts @@ -189,8 +189,8 @@ export const useApplicationCapabilities = (): UseApplicationCapabilities => { }, visualize: { crud: !!capabilities.visualize?.save, read: !!capabilities.visualize?.show }, dashboard: { - crud: !!capabilities.dashboard?.show, - read: !!capabilities.dashboard?.createNew, + crud: !!capabilities.dashboard?.createNew, + read: !!capabilities.dashboard?.show, }, }), [ diff --git a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts index 05da3dd75cf60..0578836eaf25f 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/kibana_react.mock.ts @@ -38,6 +38,14 @@ export const createStartServicesMock = (): StartServices => { new Map([['testAppId', { category: { label: 'Test' } } as unknown as PublicAppInfo]]) ); + services.application.capabilities = { + ...services.application.capabilities, + actions: { save: true, show: true }, + generalCases: { crud_cases: true, read_cases: true }, + visualize: { save: true, show: true }, + dashboard: { show: true, createNew: true }, + }; + return services; };