Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test adapter #714

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/adapters.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ Adapters are the interface to the service you want your hubot to run on.

## Official Adapters

Hubot includes two official adapters:
Hubot includes three official adapters:

* [Shell](adapters/shell.md), i.e. for use with development
* [Test](adapters/test.md), i.e. for use with testing
* [Campfire](adapters/campfire.md)

## Third-party Adapters
Expand Down
35 changes: 35 additions & 0 deletions docs/adapters/test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Adapters: Test

The test adapter provides a simple way to test what hubot would've responded to in your own scripts.
It can be useful for testing scripts that you distribute via npm.

## Getting Started

```coffeescript
Path = require("path")
Robot = require("hubot").Robot

pkg = require Path.join __dirname, "..", 'package.json'
testAdapter = Path.join(__dirname, "adapters")

Version = pkg.version

describe "The Hubot Script", () ->
robot = null
beforeEach () ->
robot = new Robot testAdapter, "test", false, "hubot"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is actually a lie. I don't know how to specify the path here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this only worked because hubot-deploy had this in a directory somewhere 😓

bin/hubot is the thing that actually determines this path: https://github.com/github/hubot/blob/master/bin/hubot#L73-L75

robot.loadFile Path.join(__dirname, "..", "src"), "script.coffee"
robot.run()

afterEach () ->
robot.shutdown()

it "displays the version", () ->
robot.adapter.receiveText("hubot deploy:version")
expected = "hubot-deploy v#{Version}/hubot v2.7.5/node v0.10.21"
assert.equal expected, robot.adapter.history
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

robot.adapter.history is an array, right?

```

## Configuring

This adapter doesn't require any configuration.
25 changes: 25 additions & 0 deletions src/adapters/test.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Robot = require '../robot'
Adapter = require '../adapter'
{TextMessage} = require '../message'

class Test extends Adapter
send: (envelope, strings...) ->
for str in strings
@history.push str

reply: (envelope, strings...) ->
strings = strings.map (s) -> "#{envelope.user.name}: #{s}"
@send envelope, strings...

receiveText: (input) ->
user = @robot.brain.userForId '1', name: 'test', room: 'Test'
textMessage = new TextMessage user, input, 'messageId'
@receive textMessage

run: ->
self = @
@history = [ ]
self.emit 'connected'

exports.use = (robot) ->
new Test robot
1 change: 1 addition & 0 deletions src/robot.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Response = require './response'
HUBOT_DEFAULT_ADAPTERS = [
'campfire'
'shell'
'test'
]

HUBOT_DOCUMENTATION_SECTIONS = [
Expand Down