Skip to content

Commit 230ed0a

Browse files
committed
Add functions test and refactor other router tests
1 parent 073730b commit 230ed0a

File tree

9 files changed

+119
-90
lines changed

9 files changed

+119
-90
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
8+
import { httpServerMock } from 'src/core/server/mocks';
9+
import { ExpressionFunction } from 'src/plugins/expressions/common/expression_functions';
10+
import { initializeGetFunctionsRoute } from './functions';
11+
import { getMockedRouterDeps } from '../test_helpers';
12+
import { API_ROUTE_FUNCTIONS } from '../../../common/lib';
13+
import { functions } from '../../../canvas_plugin_src/functions/server';
14+
15+
const mockRouteContext = {} as RequestHandlerContext;
16+
const routePath = API_ROUTE_FUNCTIONS;
17+
18+
describe('Get list of serverside expression functions', () => {
19+
let routeHandler: RequestHandler<any, any, any>;
20+
let mockFuncs: Record<string, ExpressionFunction>;
21+
22+
beforeEach(() => {
23+
mockFuncs = {
24+
demodata: new ExpressionFunction(functions[0]()),
25+
};
26+
27+
const routerDeps = getMockedRouterDeps();
28+
29+
routerDeps.expressions.getFunctions.mockReturnValueOnce(mockFuncs);
30+
31+
initializeGetFunctionsRoute(routerDeps);
32+
33+
routeHandler = routerDeps.router.get.mock.calls[0][1];
34+
});
35+
36+
afterAll(() => {
37+
jest.restoreAllMocks();
38+
});
39+
40+
it(`returns 200 with list of functions`, async () => {
41+
const request = httpServerMock.createKibanaRequest({
42+
method: 'get',
43+
path: routePath,
44+
});
45+
46+
const response = await routeHandler(mockRouteContext, request, kibanaResponseFactory);
47+
48+
expect(response.status).toBe(200);
49+
expect(response.payload).toBe(JSON.stringify(mockFuncs));
50+
});
51+
});

x-pack/plugins/canvas/server/routes/shareables/download.test.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ jest.mock('fs');
88

99
import fs from 'fs';
1010
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
11-
import { httpServiceMock, httpServerMock, loggingSystemMock } from 'src/core/server/mocks';
11+
import { httpServerMock } from 'src/core/server/mocks';
1212
import { initializeDownloadShareableWorkpadRoute } from './download';
13+
import { getMockedRouterDeps } from '../test_helpers';
1314

1415
const mockRouteContext = {} as RequestHandlerContext;
1516
const path = `api/canvas/workpad/find`;
@@ -19,14 +20,10 @@ describe('Download Canvas shareables runtime', () => {
1920
let routeHandler: RequestHandler<any, any, any>;
2021

2122
beforeEach(() => {
22-
const httpService = httpServiceMock.createSetupContract();
23-
const router = httpService.createRouter();
24-
initializeDownloadShareableWorkpadRoute({
25-
router,
26-
logger: loggingSystemMock.create().get(),
27-
});
23+
const routerDeps = getMockedRouterDeps();
24+
initializeDownloadShareableWorkpadRoute(routerDeps);
2825

29-
routeHandler = router.get.mock.calls[0][1];
26+
routeHandler = routerDeps.router.get.mock.calls[0][1];
3027
});
3128

3229
afterAll(() => {

x-pack/plugins/canvas/server/routes/shareables/zip.test.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ jest.mock('archiver');
99
// eslint-disable-next-line @typescript-eslint/no-var-requires
1010
const archiver = require('archiver') as jest.Mock;
1111
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
12-
import { httpServiceMock, httpServerMock, loggingSystemMock } from 'src/core/server/mocks';
12+
import { httpServerMock } from 'src/core/server/mocks';
1313
import { initializeZipShareableWorkpadRoute } from './zip';
14+
import { getMockedRouterDeps } from '../test_helpers';
1415
import { API_ROUTE_SHAREABLE_ZIP } from '../../../common/lib';
1516
import {
1617
SHAREABLE_RUNTIME_FILE,
@@ -26,14 +27,9 @@ describe('Zips Canvas shareables runtime together with workpad', () => {
2627
let routeHandler: RequestHandler<any, any, any>;
2728

2829
beforeEach(() => {
29-
const httpService = httpServiceMock.createSetupContract();
30-
const router = httpService.createRouter();
31-
initializeZipShareableWorkpadRoute({
32-
router,
33-
logger: loggingSystemMock.create().get(),
34-
});
35-
36-
routeHandler = router.post.mock.calls[0][1];
30+
const routerDeps = getMockedRouterDeps();
31+
initializeZipShareableWorkpadRoute(routerDeps);
32+
routeHandler = routerDeps.router.post.mock.calls[0][1];
3733
});
3834

3935
afterAll(() => {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License;
4+
* you may not use this file except in compliance with the Elastic License.
5+
*/
6+
7+
import {
8+
httpServiceMock,
9+
loggingSystemMock,
10+
elasticsearchServiceMock,
11+
} from 'src/core/server/mocks';
12+
import { bfetchPluginMock } from '../../../../../src/plugins/bfetch/server/mocks';
13+
import { expressionsPluginMock } from '../../../../../src/plugins/expressions/server/mocks';
14+
15+
export function getMockedRouterDeps() {
16+
const httpService = httpServiceMock.createSetupContract();
17+
const elasticsearch = elasticsearchServiceMock.createSetup();
18+
const bfetch = bfetchPluginMock.createSetupContract();
19+
const expressions = expressionsPluginMock.createSetupContract();
20+
const router = httpService.createRouter();
21+
22+
return {
23+
router,
24+
expressions,
25+
elasticsearch,
26+
bfetch,
27+
logger: loggingSystemMock.create().get(),
28+
};
29+
}

x-pack/plugins/canvas/server/routes/workpad/create.test.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,11 @@
55
*/
66

77
import sinon from 'sinon';
8-
import {
9-
savedObjectsClientMock,
10-
httpServiceMock,
11-
httpServerMock,
12-
loggingSystemMock,
13-
} from 'src/core/server/mocks';
8+
import { savedObjectsClientMock, httpServerMock } from 'src/core/server/mocks';
149
import { CANVAS_TYPE } from '../../../common/lib/constants';
1510
import { initializeCreateWorkpadRoute } from './create';
1611
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
12+
import { getMockedRouterDeps } from '../test_helpers';
1713

1814
let mockRouteContext = ({
1915
core: {
@@ -44,15 +40,10 @@ describe('POST workpad', () => {
4440

4541
clock = sinon.useFakeTimers(now);
4642

47-
const httpService = httpServiceMock.createSetupContract();
43+
const routerDeps = getMockedRouterDeps();
44+
initializeCreateWorkpadRoute(routerDeps);
4845

49-
const router = httpService.createRouter();
50-
initializeCreateWorkpadRoute({
51-
router,
52-
logger: loggingSystemMock.create().get(),
53-
});
54-
55-
routeHandler = router.post.mock.calls[0][1];
46+
routeHandler = routerDeps.router.post.mock.calls[0][1];
5647
});
5748

5849
afterEach(() => {

x-pack/plugins/canvas/server/routes/workpad/delete.test.ts

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,8 @@
77
import { CANVAS_TYPE } from '../../../common/lib/constants';
88
import { initializeDeleteWorkpadRoute } from './delete';
99
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
10-
import {
11-
savedObjectsClientMock,
12-
httpServiceMock,
13-
httpServerMock,
14-
loggingSystemMock,
15-
} from 'src/core/server/mocks';
10+
import { savedObjectsClientMock, httpServerMock } from 'src/core/server/mocks';
11+
import { getMockedRouterDeps } from '../test_helpers';
1612

1713
const mockRouteContext = ({
1814
core: {
@@ -26,14 +22,10 @@ describe('DELETE workpad', () => {
2622
let routeHandler: RequestHandler<any, any, any>;
2723

2824
beforeEach(() => {
29-
const httpService = httpServiceMock.createSetupContract();
30-
const router = httpService.createRouter();
31-
initializeDeleteWorkpadRoute({
32-
router,
33-
logger: loggingSystemMock.create().get(),
34-
});
25+
const routerDeps = getMockedRouterDeps();
26+
initializeDeleteWorkpadRoute(routerDeps);
3527

36-
routeHandler = router.delete.mock.calls[0][1];
28+
routeHandler = routerDeps.router.delete.mock.calls[0][1];
3729
});
3830

3931
it(`returns 200 ok when the workpad is deleted`, async () => {

x-pack/plugins/canvas/server/routes/workpad/find.test.ts

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,8 @@
66

77
import { initializeFindWorkpadsRoute } from './find';
88
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
9-
import {
10-
savedObjectsClientMock,
11-
httpServiceMock,
12-
httpServerMock,
13-
loggingSystemMock,
14-
} from 'src/core/server/mocks';
9+
import { savedObjectsClientMock, httpServerMock } from 'src/core/server/mocks';
10+
import { getMockedRouterDeps } from '../test_helpers';
1511

1612
const mockRouteContext = ({
1713
core: {
@@ -25,14 +21,10 @@ describe('Find workpad', () => {
2521
let routeHandler: RequestHandler<any, any, any>;
2622

2723
beforeEach(() => {
28-
const httpService = httpServiceMock.createSetupContract();
29-
const router = httpService.createRouter();
30-
initializeFindWorkpadsRoute({
31-
router,
32-
logger: loggingSystemMock.create().get(),
33-
});
24+
const routerDeps = getMockedRouterDeps();
25+
initializeFindWorkpadsRoute(routerDeps);
3426

35-
routeHandler = router.get.mock.calls[0][1];
27+
routeHandler = routerDeps.router.get.mock.calls[0][1];
3628
});
3729

3830
it(`returns 200 with the found workpads`, async () => {

x-pack/plugins/canvas/server/routes/workpad/get.test.ts

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@
77
import { CANVAS_TYPE } from '../../../common/lib/constants';
88
import { initializeGetWorkpadRoute } from './get';
99
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
10-
import {
11-
savedObjectsClientMock,
12-
httpServiceMock,
13-
httpServerMock,
14-
loggingSystemMock,
15-
} from 'src/core/server/mocks';
10+
import { savedObjectsClientMock, httpServerMock } from 'src/core/server/mocks';
1611
import { workpadWithGroupAsElement } from '../../../__tests__/fixtures/workpads';
1712
import { CanvasWorkpad } from '../../../types';
13+
import { getMockedRouterDeps } from '../test_helpers';
1814

1915
const mockRouteContext = ({
2016
core: {
@@ -28,14 +24,10 @@ describe('GET workpad', () => {
2824
let routeHandler: RequestHandler<any, any, any>;
2925

3026
beforeEach(() => {
31-
const httpService = httpServiceMock.createSetupContract();
32-
const router = httpService.createRouter();
33-
initializeGetWorkpadRoute({
34-
router,
35-
logger: loggingSystemMock.create().get(),
36-
});
27+
const routerDeps = getMockedRouterDeps();
28+
initializeGetWorkpadRoute(routerDeps);
3729

38-
routeHandler = router.get.mock.calls[0][1];
30+
routeHandler = routerDeps.router.get.mock.calls[0][1];
3931
});
4032

4133
it(`returns 200 when the workpad is found`, async () => {

x-pack/plugins/canvas/server/routes/workpad/update.test.ts

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,10 @@ import sinon from 'sinon';
88
import { CANVAS_TYPE } from '../../../common/lib/constants';
99
import { initializeUpdateWorkpadRoute, initializeUpdateWorkpadAssetsRoute } from './update';
1010
import { kibanaResponseFactory, RequestHandlerContext, RequestHandler } from 'src/core/server';
11-
import {
12-
savedObjectsClientMock,
13-
httpServiceMock,
14-
httpServerMock,
15-
loggingSystemMock,
16-
} from 'src/core/server/mocks';
11+
import { savedObjectsClientMock, httpServerMock } from 'src/core/server/mocks';
1712
import { workpads } from '../../../__tests__/fixtures/workpads';
1813
import { okResponse } from '../ok_response';
14+
import { getMockedRouterDeps } from '../test_helpers';
1915

2016
const mockRouteContext = ({
2117
core: {
@@ -38,14 +34,10 @@ describe('PUT workpad', () => {
3834
beforeEach(() => {
3935
clock = sinon.useFakeTimers(now);
4036

41-
const httpService = httpServiceMock.createSetupContract();
42-
const router = httpService.createRouter();
43-
initializeUpdateWorkpadRoute({
44-
router,
45-
logger: loggingSystemMock.create().get(),
46-
});
37+
const routerDeps = getMockedRouterDeps();
38+
initializeUpdateWorkpadRoute(routerDeps);
4739

48-
routeHandler = router.put.mock.calls[0][1];
40+
routeHandler = routerDeps.router.put.mock.calls[0][1];
4941
});
5042

5143
afterEach(() => {
@@ -152,14 +144,11 @@ describe('update assets', () => {
152144

153145
beforeEach(() => {
154146
clock = sinon.useFakeTimers(now);
155-
const httpService = httpServiceMock.createSetupContract();
156-
const router = httpService.createRouter();
157-
initializeUpdateWorkpadAssetsRoute({
158-
router,
159-
logger: loggingSystemMock.create().get(),
160-
});
161147

162-
routeHandler = router.put.mock.calls[0][1];
148+
const routerDeps = getMockedRouterDeps();
149+
initializeUpdateWorkpadAssetsRoute(routerDeps);
150+
151+
routeHandler = routerDeps.router.put.mock.calls[0][1];
163152
});
164153

165154
afterEach(() => {

0 commit comments

Comments
 (0)