forked from nordcloud/serverless-jest-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
105 lines (100 loc) · 2.9 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
'use strict';
const BbPromise = require('bluebird');
const createFunction = require('./lib/create-function');
const createTest = require('./lib/create-test');
const runTests = require('./lib/run-tests');
class ServerlessJestPlugin {
constructor(serverless, options) {
this.serverless = serverless;
this.options = options;
this.commands = {
create: {
commands: {
test: {
usage: 'Create jest tests for service / function',
lifecycleEvents: [
'test',
],
options: {
function: {
usage: 'Name of the function',
shortcut: 'f',
required: true,
},
path: {
usage: 'Path for the tests',
shortcut: 'p',
},
},
},
function: {
usage: 'Create a function into the service',
lifecycleEvents: [
'create',
],
options: {
function: {
usage: 'Name of the function',
shortcut: 'f',
required: true,
},
handler: {
usage: 'Handler for the function (e.g. --handler my-function/index.handler)',
required: true,
},
path: {
usage: 'Path for the tests (e.g. --path tests)',
shortcut: 'p',
},
},
},
},
},
invoke: {
usage: 'Invoke jest tests for service / function',
commands: {
test: {
usage: 'Invoke test(s)',
lifecycleEvents: [
'test',
],
options: {
function: {
usage: 'Name of the function',
shortcut: 'f',
},
reporter: {
usage: 'Jest reporter to use',
shortcut: 'R',
},
'reporter-options': {
usage: 'Options for jest reporter',
shortcut: 'O',
},
path: {
usage: 'Path for the tests for running tests in other than default "test" folder',
},
},
},
},
},
};
this.hooks = {
'create:test:test': () => {
BbPromise.bind(this)
.then(() => createTest(this.serverless, this.options));
},
'invoke:test:test': () => {
BbPromise.bind(this)
.then(() => runTests(this.serverless, this.options));
},
'create:function:create': () => {
BbPromise.bind(this)
.then(() => createFunction(this.serverless, this.options))
.then(() => createTest(this.serverless, this.options));
},
};
}
}
module.exports = ServerlessJestPlugin;
module.exports.lambdaWrapper = require('lambda-wrapper');