* 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
67 lines
2.5 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|