kibana/x-pack/plugins/global_search/common/utils.test.ts
Pierre Gayvallet 29c0acfb2f
Add globalSearch x-pack plugin (#66293) (#68259)
* add skeleton for global_search plugin

* base implementation of the server-side service

* add utils tests

* add server-side mocks

* move take_in_array to common folder

* implements base of client-side plugin

* add tests for server-side service

* fix server plugin tests

* implement `navigateToUrl` core API

* extract processResults for the client-side

* fetch server results from the client side

* factorize process_results

* fix plugin start params

* move things around

* move all server types to single file

* fix types imports

* add basic FTR tests

* add client-side service tests

* add tests for addNavigate

* add getDefaultPreference & tests

* use optional for RequestHandlerContext

* add registerRoutes test

* add base test for context

* resolve TODO

* common nits/doc

* common nits/doc on public

* update CODEOWNERS

* add import for declare statement

* add license check on the server-side

* add license check on the client-side

* eslint

* address some review comments

* use properly typed errors for obs

* add integration tests for the find endpoint

* fix unit tests

* use licensing start contract

* translate the error message

* fix eslint rule for test_utils

* fix test_utils imports

* remove NavigableGlobalSearchResult, use `application.navigateToUrl` instead.

* use coreProvider plugin in FTR tests

* nits

* fix service start params

* fix service start params, bis

* I really need to fix this typecheck oom error

* add README, update missing jsdoc

* nits on doc
# Conflicts:
#	.github/CODEOWNERS
#	rfcs/text/0011_global_search.md
2020-06-04 19:12:06 +02:00

67 lines
2.5 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { convertResultUrl } from './utils';
const createBasePath = () => ({
prepend: jest.fn(),
});
describe('convertResultUrl', () => {
let basePath: ReturnType<typeof createBasePath>;
beforeEach(() => {
basePath = createBasePath();
basePath.prepend.mockImplementation((path) => `/base-path${path}`);
});
describe('when the url is a string', () => {
it('does not convert absolute urls', () => {
expect(convertResultUrl('http://kibana:8080/foo/bar', basePath)).toEqual(
'http://kibana:8080/foo/bar'
);
expect(convertResultUrl('https://localhost/path/to/thing', basePath)).toEqual(
'https://localhost/path/to/thing'
);
expect(basePath.prepend).toHaveBeenCalledTimes(0);
});
it('prepends the base path to relative urls', () => {
expect(convertResultUrl('/app/my-app/foo', basePath)).toEqual('/base-path/app/my-app/foo');
expect(basePath.prepend).toHaveBeenCalledTimes(1);
expect(basePath.prepend).toHaveBeenCalledWith('/app/my-app/foo');
expect(convertResultUrl('/some-path', basePath)).toEqual('/base-path/some-path');
expect(basePath.prepend).toHaveBeenCalledTimes(2);
expect(basePath.prepend).toHaveBeenCalledWith('/some-path');
});
});
describe('when the url is an object', () => {
it('converts the path if `prependBasePath` is true', () => {
expect(convertResultUrl({ path: '/app/my-app', prependBasePath: true }, basePath)).toEqual(
'/base-path/app/my-app'
);
expect(basePath.prepend).toHaveBeenCalledTimes(1);
expect(basePath.prepend).toHaveBeenCalledWith('/app/my-app');
expect(convertResultUrl({ path: '/some-path', prependBasePath: true }, basePath)).toEqual(
'/base-path/some-path'
);
expect(basePath.prepend).toHaveBeenCalledTimes(2);
expect(basePath.prepend).toHaveBeenCalledWith('/some-path');
});
it('does not convert the path if `prependBasePath` is false', () => {
expect(convertResultUrl({ path: '/app/my-app', prependBasePath: false }, basePath)).toEqual(
'/app/my-app'
);
expect(convertResultUrl({ path: '/some-path', prependBasePath: false }, basePath)).toEqual(
'/some-path'
);
expect(basePath.prepend).toHaveBeenCalledTimes(0);
});
});
});