aboutsummaryrefslogtreecommitdiff
path: root/test/git.unit.js
blob: e5603befdfb0c21646c5337de51b58eccc11e6fc (plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
if (typeof module !== 'undefined') {
  var assert = require('assert');
  var sinon = require('sinon');
  var faker = require('../lib').faker;
}

describe('git.js', function () {
  describe('branch()', function () {
    beforeEach(function () {
      sinon.spy(faker.hacker, 'noun');
      sinon.spy(faker.hacker, 'verb');
    });

    afterEach(function () {
      faker.hacker.noun.restore();
      faker.hacker.verb.restore();
    });

    it('returns a branch with hacker noun and verb', function () {
      faker.git.branch();

      assert.ok(faker.hacker.noun.calledOnce);
      assert.ok(faker.hacker.verb.calledOnce);
    });
  });

  describe('commitEntry()', function () {
    beforeEach(function () {
      sinon.spy(faker.git, 'commitMessage');
      sinon.spy(faker.git, 'commitSha');
      sinon.spy(faker.internet, 'email');
      sinon.spy(faker.name, 'firstName');
      sinon.spy(faker.name, 'lastName');
      sinon.spy(faker.datatype, 'number');
    });

    afterEach(function () {
      faker.git.commitMessage.restore();
      faker.git.commitSha.restore();
      faker.internet.email.restore();
      faker.name.firstName.restore();
      faker.name.lastName.restore();
      faker.datatype.number.restore();
    });

    it('returns merge entry at random', function () {
      faker.git.commitEntry();

      assert.ok(faker.datatype.number.called);
    });

    it('returns a commit entry with git commit message and sha', function () {
      faker.git.commitEntry();

      assert.ok(faker.git.commitMessage.calledOnce);
      assert.ok(faker.git.commitSha.calledOnce);
    });

    it('returns a commit entry with internet email', function () {
      faker.git.commitEntry();

      assert.ok(faker.internet.email.calledOnce);
    });

    it('returns a commit entry with name first and last', function () {
      faker.git.commitEntry();

      assert.ok(faker.name.firstName.calledTwice);
      assert.ok(faker.name.lastName.calledTwice);
    });

    context("with options['merge'] equal to true", function () {
      beforeEach(function () {
        sinon.spy(faker.git, 'shortSha');
      });

      afterEach(function () {
        faker.git.shortSha.restore();
      });

      it('returns a commit entry with merge details', function () {
        faker.git.commitEntry({ merge: true });

        assert.ok(faker.git.shortSha.calledTwice);
      });
    });
  });

  describe('commitMessage()', function () {
    beforeEach(function () {
      sinon.spy(faker.hacker, 'verb');
      sinon.spy(faker.hacker, 'adjective');
      sinon.spy(faker.hacker, 'noun');
    });

    afterEach(function () {
      faker.hacker.verb.restore();
      faker.hacker.adjective.restore();
      faker.hacker.noun.restore();
    });

    it('returns a commit message with hacker noun, adj and verb', function () {
      faker.git.commitMessage();

      assert.ok(faker.hacker.verb.calledOnce);
      assert.ok(faker.hacker.adjective.calledOnce);
      assert.ok(faker.hacker.noun.calledOnce);
    });
  });

  describe('commitSha()', function () {
    it('returns a random commit SHA', function () {
      var commitSha = faker.git.commitSha();
      assert.ok(commitSha.match(/^[a-f0-9]{40}$/));
    });
  });

  describe('shortSha()', function () {
    it('returns a random short SHA', function () {
      var shortSha = faker.git.shortSha();
      assert.ok(shortSha.match(/^[a-f0-9]{7}$/));
    });
  });
});