hubot-github-event-announcer
Version:
Announces GitHub webhook events
144 lines (109 loc) • 3.6 kB
text/coffeescript
faker = require 'faker'
formatter = require '../../src/formatters/pull-request'
{githubRepo} = require '../helpers'
describe 'Pull Request Formatter', ->
[event, label, name, number, otherName, repo, title, url] = []
beforeEach ->
label = faker.lorem.words(1)
name = faker.internet.userName()
number = faker.helpers.randomNumber()
otherName = faker.internet.userName()
repo = githubRepo()
title = faker.lorem.sentence()
url = faker.internet.avatar()
event =
type: 'pull_request'
data:
action: 'opened'
number: number
pull_request:
title: title
html_url: url
repository:
full_name: repo
sender:
login: name
it 'formats an open pull request event', ->
event.data.action = 'opened'
expect(formatter(event)).toEqual """
#{name} opened Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats a close without merging pull request event', ->
event.data.action = 'closed'
event.data.pull_request.merged = false
expect(formatter(event)).toEqual """
#{name} closed Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats a merge pull request event', ->
event.data.action = 'closed'
event.data.pull_request.merged = true
expect(formatter(event)).toEqual """
#{name} merged Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats a reopen pull request event', ->
event.data.action = 'reopened'
expect(formatter(event)).toEqual """
#{name} reopened Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats an assign pull request event', ->
event.data.action = 'assigned'
event.data.assignee =
login: otherName
expect(formatter(event)).toEqual """
#{name} assigned #{otherName} to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats an assign pull request event when the assigner and assignee are the same person', ->
event.data.action = 'assigned'
event.data.assignee =
login: name
expect(formatter(event)).toEqual """
#{name} assigned themselves to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats an unassign pull request event', ->
event.data.action = 'unassigned'
event.data.assignee =
login: otherName
expect(formatter(event)).toEqual """
#{name} unassigned #{otherName} to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats an unassign pull request event when the assigner and assignee are the same person', ->
event.data.action = 'unassigned'
event.data.assignee =
login: name
expect(formatter(event)).toEqual """
#{name} unassigned themselves to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats a label pull request event', ->
event.data.action = 'labeled'
event.data.label =
name: label
expect(formatter(event)).toEqual """
#{name} added the label #{label} to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""
it 'formats an unlabel pull request event', ->
event.data.action = 'unlabeled'
event.data.label =
name: label
expect(formatter(event)).toEqual """
#{name} removed the label #{label} to Pull Request ##{number} on #{repo}
Title: #{title}
#{url}
"""