github-bot/test/modules/issues/autoAssign.js
前端小武 9ff0a52c34 feat: add test cases (#46)
* feat: add test command

* feat: add a test case

* feat: add coverage report

* docs: add coverage badge

* fix: 优化代码

* test: 添加单元测试

* test: 修复测试用命代码格式

* fix: eslint errors

* fix: disable camelcase

* fix: disable camelcase for src/github.js
2018-01-15 11:14:04 +08:00

87 lines
1.9 KiB
JavaScript

/**
* @file modules/issues/autoAssign.js test case
* @author xuexb <fe.xiaowu@gmail.com>
*/
const expect = require('chai').expect
const mock = require('mock-require')
mock.stopAll()
const clean = require('../../utils/clean')
describe('modules/issues/autoAssign.js', () => {
beforeEach('clear node cache', () => {
clean('src/github')
clean('src/utils')
clean('src/modules/issues/autoAssign')
mock('../../../src/utils', {
getPkgConfig() {
return {}
}
})
mock('../../../src/github', {
addAssigneesToIssue() {
}
})
})
it('event name', () => {
const autoAssign = require('../../../src/modules/issues/autoAssign')
autoAssign(name => {
expect(name).to.equal('issues_labeled')
})
})
describe('set label', () => {
it('is ok', (done) => {
mock('../../../src/utils', {
getPkgConfig() {
return {
labelToAuthor: {
autoAssign: 'github-bot'
}
}
}
})
mock('../../../src/github', {
addAssigneesToIssue(payload, label) {
expect(payload).to.be.a('object').and.not.empty
expect(label).to.equal('github-bot')
done()
}
})
const autoAssign = require('../../../src/modules/issues/autoAssign')
autoAssign(function (name, callback) {
callback({
payload: {
label: {
name: 'autoAssign'
}
}
})
})
})
it('is false', (done) => {
mock('../../../src/github', {
addAssigneesToIssue() {
done('error')
}
})
const autoAssign = require('../../../src/modules/issues/autoAssign')
autoAssign(function (name, callback) {
callback({
payload: {
label: {
name: 'error'
}
}
})
})
setTimeout(done)
})
})
})