Skip to content

Commit f230ad7

Browse files
author
Walker Leite
committed
test(server): add create-loopback util
1 parent 50f8b4f commit f230ad7

File tree

3 files changed

+73
-10
lines changed

3 files changed

+73
-10
lines changed

template/test/server/boot.spec.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
/* eslint-disable arrow-body-style */
2-
import loopback from 'loopback';
3-
import boot from 'loopback-boot';
4-
import path from 'path';
2+
import createLoopback from './utils/create-loopback';
53
import request from 'supertest';
64
{{#extended}}
75
import initialAccount from '../../server/initial-data/maintenance-account.json';
86
{{/extended}}
97

108
describe('boot process', () => {
119
let server;
12-
const options = {
13-
appRootDir: path.resolve(__dirname, '../../server'),
14-
scriptExtensions: ['.js', '.json', '.node', '.ejs'],
15-
};
16-
beforeEach((done) => {
17-
server = loopback();
18-
boot(server, options, done);
10+
11+
beforeEach(() => {
12+
return createLoopback().then((s) => {
13+
server = s;
14+
});
1915
});
2016

2117
afterEach((done) => {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import path from 'path';
2+
import loopback from 'loopback';
3+
import boot from 'loopback-boot';
4+
5+
export default function(options) {
6+
const defaultOptions = {
7+
appRootDir: path.resolve(__dirname, '../../../server'),
8+
scriptExtensions: ['.js', '.json', '.node', '.ejs'],
9+
};
10+
11+
return new Promise((resolve) => {
12+
const server = loopback();
13+
boot(
14+
server,
15+
Object.assign(defaultOptions, options),
16+
() => resolve(server)
17+
);
18+
});
19+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import createLoopback from './create-loopback';
2+
import loopback from 'loopback';
3+
import boot from 'loopback-boot';
4+
5+
jest.mock('loopback');
6+
jest.mock('loopback-boot');
7+
8+
describe('createLoopback dev util', () => {
9+
it('exports a promise', () => {
10+
expect(createLoopback()).toBeInstanceOf(Promise);
11+
});
12+
13+
it('calls loopback-boot with default options', () => {
14+
const mockServer = {};
15+
const optsMatcher = {
16+
appRootDir: expect.any(String),
17+
scriptExtensions: expect.any(Array),
18+
};
19+
loopback.mockReturnValue(mockServer);
20+
createLoopback()
21+
expect(boot).toBeCalledWith(
22+
mockServer,
23+
expect.objectContaining(optsMatcher),
24+
expect.any(Function),
25+
);
26+
});
27+
28+
it('calls loopback-boot with custom options', () => {
29+
const mockServer = {};
30+
const myOpts = {myOpt: true};
31+
loopback.mockReturnValue(mockServer);
32+
createLoopback(myOpts)
33+
expect(boot).toBeCalledWith(
34+
mockServer,
35+
expect.objectContaining(myOpts),
36+
expect.any(Function),
37+
);
38+
});
39+
40+
it('resolves with loopback server', async () => {
41+
const mockServer = {};
42+
loopback.mockReturnValue(mockServer);
43+
// just call callback fn
44+
boot.mockImplementation((s, o, r) => r());
45+
const server = await createLoopback();
46+
expect(server).toEqual(mockServer);
47+
});
48+
})

0 commit comments

Comments
 (0)