aboutsummaryrefslogtreecommitdiffstats
path: root/validate-commit-msg.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'validate-commit-msg.spec.js')
-rw-r--r--validate-commit-msg.spec.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/validate-commit-msg.spec.js b/validate-commit-msg.spec.js
new file mode 100644
index 00000000..8eb4f3bd
--- /dev/null
+++ b/validate-commit-msg.spec.js
@@ -0,0 +1,73 @@
+describe('validate-commit-msg.js', function() {
+ var m = require('./validate-commit-msg');
+ var errors = [];
+ var logs = [];
+
+ var VALID = true;
+ var INVALID = false;
+
+ beforeEach(function() {
+ errors.length = 0;
+ logs.length = 0;
+
+ spyOn(console, 'error').andCallFake(function(msg) {
+ errors.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor
+ });
+
+ spyOn(console, 'log').andCallFake(function(msg) {
+ logs.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor
+ });
+ });
+
+ describe('validateMessage', function() {
+
+ it('should be valid', function() {
+ expect(m.validateMessage('fix($compile): something')).toBe(VALID);
+ expect(m.validateMessage('feat($location): something')).toBe(VALID);
+ expect(m.validateMessage('docs($filter): something')).toBe(VALID);
+ expect(m.validateMessage('style($http): something')).toBe(VALID);
+ expect(m.validateMessage('refactor($httpBackend): something')).toBe(VALID);
+ expect(m.validateMessage('test($resource): something')).toBe(VALID);
+ expect(m.validateMessage('chore($controller): something')).toBe(VALID);
+ expect(errors).toEqual([]);
+ });
+
+
+ it('should validate 70 characters length', function() {
+ var msg = 'fix($compile): something super mega extra giga tera long, maybe even longer... ' +
+ 'way over 80 characters';
+
+ expect(m.validateMessage(msg)).toBe(INVALID);
+ expect(errors).toEqual(['INVALID COMMIT MSG: is longer than 70 characters !']);
+ });
+
+
+ it('should validate "<type>(<scope>): <subject>" format', function() {
+ var msg = 'not correct format';
+
+ expect(m.validateMessage(msg)).toBe(INVALID);
+ expect(errors).toEqual(['INVALID COMMIT MSG: does not match "<type>(<scope>): <subject>" !']);
+ });
+
+
+ it('should validate type', function() {
+ expect(m.validateMessage('weird($filter): something')).toBe(INVALID);
+ expect(errors).toEqual(['INVALID COMMIT MSG: "weird" is not allowed type !']);
+ });
+
+
+ it('should allow empty scope', function() {
+ expect(m.validateMessage('fix: blablabla')).toBe(VALID);
+ });
+
+
+ it('should allow dot in scope', function() {
+ expect(m.validateMessage('chore(mocks.$httpBackend): something')).toBe(VALID);
+ });
+
+
+ it('should ignore msg prefixed with "WIP: "', function() {
+ expect(m.validateMessage('WIP: bullshit')).toBe(VALID);
+ });
+ });
+});