forked from hash-gaming/robotk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
We'd like to go forward with the confidence of application keep on working. Ideal situation would be to hold a set of tests, covering each line of code in our system. This however proves to be difficult for different reasons. For instance, I'd like to test that `lit` command when successful would create a message in a separate channel. Sounds simple, yet the hubot testing helper does not support the functionality of multiple rooms. This issue has already been raised with upstream [1] and needs yet to be resolved. In order to keep hubot happy, I had to separate the script tests into a separate directory. In fact, two of them, as I've separated the response messages from script file, to be DRY about it when using in tests. The `.messages.js` file is obsolete and _should_ be removed once we come out with ideal configuration system. I took the lousy approach of implementing tests for the other functions. I'm sorry. [1] mtsmfm/hubot-test-helper#32
- Loading branch information
Showing
6 changed files
with
140 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
const Helper = require('hubot-test-helper'); | ||
const co = require('co'); | ||
const { expect } = require('chai'); | ||
|
||
const helper = new Helper('../'); | ||
|
||
describe('robotk general', () => { | ||
beforeEach(() => { | ||
this.room = helper.createRoom(); | ||
}); | ||
|
||
afterEach(() => { | ||
this.room.destroy(); | ||
}); | ||
|
||
context('user calls robotk by the wrong name', () => { | ||
beforeEach(() => co(function* () { | ||
yield this.room.user.say('alice', "randbot: i don't even know who you are any more"); | ||
}.bind(this))); | ||
|
||
it('should reply to the user with touching story', () => { | ||
expect(this.room.messages.length).to.equal(2); | ||
expect(this.room.messages[1][1]).to.contain([ | ||
'That was my old form.', | ||
'I have become perfect.', | ||
'I am become RoboTK.', | ||
'You shall address me as such.' | ||
].join(' ')); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
const Helper = require('hubot-test-helper'); | ||
const co = require('co'); | ||
const { expect } = require('chai'); | ||
|
||
const helper = new Helper('../'); | ||
const { failureMessages, successMessages } = require('../utils/lit.messages'); | ||
|
||
describe('robotk lit', () => { | ||
beforeEach(() => { | ||
this.room = helper.createRoom(); | ||
}); | ||
|
||
afterEach(() => { | ||
this.room.destroy(); | ||
}); | ||
|
||
context('user requires robotk to lit invalid content', () => { | ||
beforeEach(() => co(function* () { | ||
yield this.room.user.say('alice', '@hubot lit that'); | ||
}.bind(this))); | ||
|
||
it('should fail to lit message due to incorrect syntax', () => { | ||
expect(this.room.messages.length).to.equal(2); | ||
expect(this.room.messages[1][1]).to.be.oneOf(failureMessages.all()); | ||
}); | ||
}); | ||
|
||
context('user requires robotk to lit url', () => { | ||
const url = 'https://hashtaggaming.slack.com/archives/test'; | ||
|
||
beforeEach(() => co(function* () { | ||
yield this.room.user.say('alice', `@hubot lit ${url}`); | ||
}.bind(this))); | ||
|
||
it('should lit message successfully', () => { | ||
expect(this.room.messages.length).to.equal(3); | ||
expect(this.room.messages[2][1]).to.be.oneOf(successMessages.all()); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
const Helper = require('hubot-test-helper'); | ||
const co = require('co'); | ||
const { expect } = require('chai'); | ||
|
||
const helper = new Helper('../'); | ||
|
||
describe('robotk pugme', () => { | ||
beforeEach(() => { | ||
this.room = helper.createRoom(); | ||
}); | ||
|
||
afterEach(() => { | ||
this.room.destroy(); | ||
}); | ||
|
||
context('user requests to pug them', () => { | ||
beforeEach(() => co(function* () { | ||
yield this.room.user.say('alice', '@hubot pug me'); | ||
yield new Promise(resolve => setTimeout(resolve, 1000)); // Damn it yash. | ||
}.bind(this))); | ||
|
||
it('should reply to the user with a pug pic', () => { | ||
expect(this.room.messages.length).to.equal(2); | ||
expect(this.room.messages[1][1]).to.contain('media.tumblr.com'); | ||
}); | ||
}); | ||
|
||
context('user requests to pug bomb them', () => { | ||
beforeEach(() => co(function* () { | ||
yield this.room.user.say('alice', '@hubot pug bomb 3'); | ||
yield new Promise(resolve => setTimeout(resolve, 1000)); // Damn it yash. | ||
}.bind(this))); | ||
|
||
it('should reply to the user with a wave of pug pics', () => { | ||
expect(this.room.messages.length).to.equal(4); | ||
expect(this.room.messages[3][1]).to.contain('You dun goofed now!'); | ||
}); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
// FIXME: This file is completely obsolete. Ideally, we'd be holding these | ||
// responses in a configuration file somewhere and load them into a Response | ||
// class on request. | ||
|
||
const Response = require('../../lib/response'); | ||
|
||
const failureMessages = new Response([ | ||
"The fuck you talking 'bout fam?", | ||
'You kiss your mother with hat mouth?', | ||
'Who do you think you are...', | ||
'Arse biscuits.', | ||
"nah, i'll pass :troll:" | ||
]); | ||
|
||
const successMessages = new Response([ | ||
'I gotchu fam', | ||
"You're the boss! :+1:", | ||
'Thought you may ask for that. I liked that too.', | ||
'really? you seriously think that deserves fam? gee...', | ||
'got your back, jack' | ||
]); | ||
|
||
module.exports = { | ||
failureMessages, | ||
successMessages | ||
}; |