jira-term
Version:
CLI for Jira based on jira-cli
192 lines (144 loc) • 7.13 kB
text/coffeescript
fs = require 'fs'
path = require 'path'
colors = require 'colors'
jira = require '../src/jira-cli.coffee'
# These seem to be a bit silly, gets me more familiar with spies though, so I
# guess that's a good thing.
describe "JiraCli", ->
beforeEach ->
config =
host: 'localhost'
port: 80
user: 'test'
password: 'test'
@jiraCli = new jira.JiraHelper config
@cb = jasmine.createSpy 'callback'
spyOn @jiraCli.pp, 'prettyPrintIssue'
spyOn @jiraCli.pp, 'prettyPrintLog'
spyOn @jiraCli.pp, 'prettyPrintSuccess'
spyOn @jiraCli.pp, 'prettyPrintError'
spyOn @jiraCli.pp, 'prettyPrintList'
spyOn @jiraCli, 'dieWithFire'
it "Gets the requested issue", ->
spyOn @jiraCli.jira, 'findIssue'
@jiraCli.getIssue 1, false
expect(@jiraCli.jira.findIssue)
.toHaveBeenCalledWith 1, jasmine.any Function
@jiraCli.jira.findIssue.mostRecentCall.args[1] null, "response"
expect(@jiraCli.pp.prettyPrintIssue)
.toHaveBeenCalledWith "response", false
@jiraCli.jira.findIssue.mostRecentCall.args[1] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error finding issue: error"
it "Gets the issue types", ->
spyOn @jiraCli.jira, 'listIssueTypes'
@jiraCli.getIssueTypes @cb
@jiraCli.jira.listIssueTypes.mostRecentCall.args[0] null, "response"
expect(@cb).toHaveBeenCalledWith "response"
@jiraCli.jira.listIssueTypes.mostRecentCall.args[0] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error listing issueTypes: error"
expect(@jiraCli.dieWithFire).toHaveBeenCalled()
it "Adds a new issue", ->
issue = @jiraCli.createIssueObject 'project', 'summary', 'issueType',
'description'
spyOn @jiraCli.jira, 'addNewIssue'
@jiraCli.addIssue 'summary', 'description', 'issueType', 'project'
expect(@jiraCli.jira.addNewIssue)
.toHaveBeenCalledWith issue, jasmine.any Function
@jiraCli.jira.addNewIssue.mostRecentCall.args[1] null,
key: 'response'
expect(@jiraCli.pp.prettyPrintSuccess)
.toHaveBeenCalledWith "Issue response has been created"
@jiraCli.jira.addNewIssue.mostRecentCall.args[1] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error creating issue: \"error\""
it "Deletes an Issue", ->
spyOn @jiraCli.jira, 'deleteIssue'
@jiraCli.deleteIssue 1
expect(@jiraCli.jira.deleteIssue)
.toHaveBeenCalledWith 1, jasmine.any Function
@jiraCli.jira.deleteIssue.mostRecentCall.args[1] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error deleting issue: error"
@jiraCli.jira.deleteIssue.mostRecentCall.args[1] null, "success"
expect(@jiraCli.pp.prettyPrintSuccess)
.toHaveBeenCalledWith "Issue 1 was deleted"
it "Adds a worklog", ->
worklog =
comment: 'comment'
timeSpent: 'timeSpent'
spyOn @jiraCli.jira, 'addWorklog'
@jiraCli.addWorklog 1, 'comment', 'timeSpent', true
expect(@jiraCli.jira.addWorklog)
.toHaveBeenCalledWith 1, worklog, jasmine.any Function
@jiraCli.jira.addWorklog.mostRecentCall.args[2] null, "response"
expect(@jiraCli.pp.prettyPrintSuccess)
.toHaveBeenCalledWith "Worklog was added"
@jiraCli.jira.addWorklog.mostRecentCall.args[2] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error adding worklog: error"
expect(@jiraCli.dieWithFire).toHaveBeenCalled()
it "Adds a worklog, but doesn't quit", ->
spyOn @jiraCli.jira, 'addWorklog'
@jiraCli.addWorklog 1, 'comment', 'timeSpent', false
@jiraCli.jira.addWorklog.mostRecentCall.args[2] null, "response"
expect(@jiraCli.dieWithFire).not.toHaveBeenCalled()
it "Lists transitions", ->
spyOn @jiraCli.jira, 'listTransitions'
@jiraCli.listTransitions 1, @cb
expect(@jiraCli.jira.listTransitions)
.toHaveBeenCalledWith 1, jasmine.any Function
@jiraCli.jira.listTransitions.mostRecentCall.args[1] null, "transitions"
expect(@cb).toHaveBeenCalledWith "transitions"
@jiraCli.jira.listTransitions.mostRecentCall.args[1] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error getting transitions: error"
expect(@jiraCli.dieWithFire).toHaveBeenCalled()
it "Transitions an Issue", ->
issueUpdate =
transition:
id: 'transition'
spyOn @jiraCli.jira, 'transitionIssue'
@jiraCli.transitionIssue 1, 'transition'
expect(@jiraCli.jira.transitionIssue)
.toHaveBeenCalledWith 1, issueUpdate, jasmine.any Function
@jiraCli.jira.transitionIssue.mostRecentCall.args[2] null, "response"
expect(@jiraCli.pp.prettyPrintLog)
.toHaveBeenCalledWith "Issue 1 was transitioned" # #{color "transitioned", 'green'}"
@jiraCli.jira.transitionIssue.mostRecentCall.args[2] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error transitioning issue: error"
expect(@jiraCli.dieWithFire).toHaveBeenCalled()
it "Searches Jira", ->
fields = ["summary", "status", "assignee"]
spyOn @jiraCli.jira, 'searchJira'
@jiraCli.searchJira 'query', true
expect(@jiraCli.jira.searchJira)
.toHaveBeenCalledWith 'query', fields, jasmine.any Function
expect(@jiraCli.jira.searchJira.mostRecentCall.args[1])
.toEqual fields
@jiraCli.jira.searchJira.mostRecentCall.args[2] null, issues: [1]
expect(@jiraCli.pp.prettyPrintList).toHaveBeenCalledWith 1, true
@jiraCli.jira.searchJira.mostRecentCall.args[2] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error retreiving issues list: error"
it "Gets the user's OPEN issues", ->
jql = "assignee = \"test\" AND resolution = unresolved"
spyOn @jiraCli, 'searchJira'
@jiraCli.getMyIssues true, true
expect(@jiraCli.searchJira).toHaveBeenCalledWith jql, true
it "Gets ALL the user's issues", ->
jql = "assignee = \"test\""
spyOn @jiraCli, 'searchJira'
@jiraCli.getMyIssues false, true
expect(@jiraCli.searchJira).toHaveBeenCalledWith jql, true
it "Gets the user's projects", ->
spyOn @jiraCli.jira, 'listProjects'
@jiraCli.getMyProjects @cb
@jiraCli.jira.listProjects.mostRecentCall.args[0] null, "list"
expect(@cb).toHaveBeenCalledWith "list"
@jiraCli.jira.listProjects.mostRecentCall.args[0] "error"
expect(@jiraCli.pp.prettyPrintError)
.toHaveBeenCalledWith "Error listing projects: error"
expect(@jiraCli.dieWithFire).toHaveBeenCalled()