diff --git a/test/mocks/git-head.js b/test/mocks/git-head.js new file mode 100644 index 00000000..bff8eebf --- /dev/null +++ b/test/mocks/git-head.js @@ -0,0 +1,3 @@ +module.exports = function (cb) { + cb(null, 'bar') +} diff --git a/test/mocks/github.js b/test/mocks/github.js new file mode 100644 index 00000000..a23ba987 --- /dev/null +++ b/test/mocks/github.js @@ -0,0 +1,6 @@ +module.exports = () => ({ + authenticate: () => true, + releases: { + createRelease: (release, cb) => cb(null) + } +}) diff --git a/test/specs/post.js b/test/specs/post.js new file mode 100644 index 00000000..887dfffb --- /dev/null +++ b/test/specs/post.js @@ -0,0 +1,60 @@ +const { defaults } = require('lodash') +const test = require('tap').test +const proxyquire = require('proxyquire') + +const post = proxyquire('../../dist/post', { + 'git-head': require('../mocks/git-head'), + github: require('../mocks/github') +}) + +const pkg = { + version: '1.0.0', + repository: { + url: 'http://github.com/whats/up.git' + } +} + +const plugins = { + generateNotes: (pkg, cb) => cb(null, 'the log') +} + +const defaultRelease = { + owner: 'whats', + repo: 'up', + name: 'v1.0.0', + tag_name: 'v1.0.0', + target_commitish: 'bar', + body: 'the log' +} + +test('full post run', (t) => { + t.test('in debug mode w/o token', (tt) => { + post(pkg, {debug: true}, plugins, (err, published, release) => { + tt.error(err) + tt.is(published, false) + tt.match(release, defaults({draft: true}, defaultRelease)) + + tt.end() + }) + }) + + t.test('in debug mode w token', (tt) => { + post(pkg, {debug: true, 'github-token': 'yo'}, plugins, (err, published, release) => { + tt.error(err) + tt.is(published, true) + tt.match(release, defaults({draft: true}, defaultRelease)) + + tt.end() + }) + }) + + t.test('production', (tt) => { + post(pkg, {'github-token': 'yo'}, plugins, (err, published, release) => { + tt.error(err) + tt.is(published, true) + tt.match(release, defaultRelease) + + tt.end() + }) + }) +})