Skip to content
This repository was archived by the owner on Jun 16, 2021. It is now read-only.

Commit f5ff78b

Browse files
committed
test: 💍 add tests for formatMessage() function
1 parent 828e43b commit f5ff78b

File tree

3 files changed

+165
-0
lines changed

3 files changed

+165
-0
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"@semantic-release/npm": "5.3.5",
3535
"any-shell-escape": "0.1.1",
3636
"browserify": "16.5.0",
37+
"chai": "^4.2.0",
3738
"chalk": "2.4.2",
3839
"commitizen": "2.10.1",
3940
"eslint": "4.19.1",
@@ -45,6 +46,7 @@
4546
"mocha": "6.2.2",
4647
"pkg": "4.4.2",
4748
"rimraf": "3.0.0",
49+
"semantic-release": "15.13.31",
4850
"signale": "1.4.0",
4951
"word-wrap": "1.2.3"
5052
},

test/formatCommitMessage.test.js

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/* eslint-disable sort-keys */
2+
const {expect} = require('chai');
3+
const formatCommitMessage = require('../lib/formatCommitMessage');
4+
5+
const defaultConfig = {
6+
disableEmoji: false,
7+
breakingChangePrefix: '🧨 ',
8+
closedIssuePrefix: '✅ ',
9+
commitMessageFormat: '<type><(scope)>: <emoji><subject>',
10+
list: [
11+
'test',
12+
'feat',
13+
'fix',
14+
'chore',
15+
'docs',
16+
'refactor',
17+
'style',
18+
'ci',
19+
'perf'
20+
],
21+
maxMessageLength: 64,
22+
minMessageLength: 3,
23+
questions: [
24+
'type',
25+
'scope',
26+
'subject',
27+
'body',
28+
'breaking',
29+
'issues',
30+
'lerna'
31+
],
32+
scopes: [],
33+
types: {
34+
chore: {
35+
description: 'Build process or auxiliary tool changes',
36+
emoji: '🤖',
37+
value: 'chore'
38+
},
39+
ci: {
40+
description: 'CI related changes',
41+
emoji: '🎡',
42+
value: 'ci'
43+
},
44+
docs: {
45+
description: 'Documentation only changes',
46+
emoji: '✏️',
47+
value: 'docs'
48+
},
49+
feat: {
50+
description: 'A new feature',
51+
emoji: '🎸',
52+
value: 'feat'
53+
},
54+
fix: {
55+
description: 'A bug fix',
56+
emoji: '🐛',
57+
value: 'fix'
58+
},
59+
perf: {
60+
description: 'A code change that improves performance',
61+
emoji: '⚡️',
62+
value: 'perf'
63+
},
64+
refactor: {
65+
description: 'A code change that neither fixes a bug or adds a feature',
66+
emoji: '💡',
67+
value: 'refactor'
68+
},
69+
release: {
70+
description: 'Create a release commit',
71+
emoji: '🏹',
72+
value: 'release'
73+
},
74+
style: {
75+
description: 'Markup, white-space, formatting, missing semi-colons...',
76+
emoji: '💄',
77+
value: 'style'
78+
},
79+
test: {
80+
description: 'Adding missing tests',
81+
emoji: '💍',
82+
value: 'test'
83+
}
84+
}
85+
};
86+
87+
const defaultState = {
88+
answers: {
89+
body: '',
90+
breaking: '',
91+
issues: '',
92+
lerna: '',
93+
scope: '',
94+
subject: 'First commit',
95+
type: 'feat'
96+
},
97+
config: defaultConfig,
98+
root: '/Users/vad/dev/git-cz'
99+
};
100+
101+
describe('formatCommitMessage()', () => {
102+
it('formats correctly a basic message ("feat" type, emoji, and message)', () => {
103+
const message = formatCommitMessage({...defaultState});
104+
105+
expect(message).to.equal('feat: 🎸 First commit');
106+
});
107+
108+
it('does not include emoji, if emojis disabled in config', () => {
109+
const message = formatCommitMessage({
110+
...defaultState,
111+
config: {
112+
...defaultConfig,
113+
disableEmoji: true
114+
}
115+
});
116+
117+
expect(message).to.equal('feat: First commit');
118+
});
119+
});

yarn.lock

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,11 @@ assert@^1.1.1, assert@^1.4.0:
683683
dependencies:
684684
util "0.10.3"
685685

686+
assertion-error@^1.1.0:
687+
version "1.1.0"
688+
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
689+
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
690+
686691
assign-symbols@^1.0.0:
687692
version "1.0.0"
688693
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
@@ -1194,6 +1199,18 @@ caseless@~0.12.0:
11941199
version "0.12.0"
11951200
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
11961201

1202+
chai@^4.2.0:
1203+
version "4.2.0"
1204+
resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5"
1205+
integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==
1206+
dependencies:
1207+
assertion-error "^1.1.0"
1208+
check-error "^1.0.2"
1209+
deep-eql "^3.0.1"
1210+
get-func-name "^2.0.0"
1211+
pathval "^1.1.0"
1212+
type-detect "^4.0.5"
1213+
11971214
chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.3:
11981215
version "1.1.3"
11991216
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1235,6 +1252,11 @@ chardet@^0.7.0:
12351252
version "0.7.0"
12361253
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
12371254

1255+
check-error@^1.0.2:
1256+
version "1.0.2"
1257+
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
1258+
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
1259+
12381260
chownr@^1.0.1, chownr@^1.1.1:
12391261
version "1.1.1"
12401262
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
@@ -1783,6 +1805,13 @@ dedent@0.6.0:
17831805
version "0.6.0"
17841806
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb"
17851807

1808+
deep-eql@^3.0.1:
1809+
version "3.0.1"
1810+
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
1811+
integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
1812+
dependencies:
1813+
type-detect "^4.0.0"
1814+
17861815
deep-extend@^0.6.0:
17871816
version "0.6.0"
17881817
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@@ -2921,6 +2950,11 @@ get-caller-file@^2.0.1:
29212950
version "2.0.5"
29222951
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
29232952

2953+
get-func-name@^2.0.0:
2954+
version "2.0.0"
2955+
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
2956+
integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
2957+
29242958
get-set-props@^0.1.0:
29252959
version "0.1.0"
29262960
resolved "https://registry.yarnpkg.com/get-set-props/-/get-set-props-0.1.0.tgz#998475c178445686d0b32246da5df8dbcfbe8ea3"
@@ -6076,6 +6110,11 @@ path-type@^4.0.0:
60766110
version "4.0.0"
60776111
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
60786112

6113+
pathval@^1.1.0:
6114+
version "1.1.0"
6115+
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
6116+
integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
6117+
60796118
pbkdf2@^3.0.3:
60806119
version "3.0.16"
60816120
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c"
@@ -7663,6 +7702,11 @@ type-check@~0.3.2:
76637702
dependencies:
76647703
prelude-ls "~1.1.2"
76657704

7705+
type-detect@^4.0.0, type-detect@^4.0.5:
7706+
version "4.0.8"
7707+
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
7708+
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
7709+
76667710
type-fest@^0.3.1:
76677711
version "0.3.1"
76687712
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"

0 commit comments

Comments
 (0)