class Danger::JIRA::Resource::Issue

This class extends (aka monkey patch) the `JIRA::Resource::Issue` class with straightforward methods to easily transition and update issues.

Public Instance Methods

get_transition_id(name) click to toggle source

Retrieve the ID of the transition matching the given name.

@param [String] name

@return [Integer] the ID of the transition, or -1 if no match was found

# File lib/yajp/issue.rb, line 62
def get_transition_id(name)
  transitions.all.each do |transition|
    return transition.id if transition.name.casecmp?(name)
  end

  return -1
end
transition(transition_id, **fields) click to toggle source

Transition the issue using the ID or name of the transition. Transition IDs can be found in Jira under Project Workflow > Edit Workflow in Text Mode. The transition name is the text that appears on the issue screen to transition it. The fields that can be updated with this method are only the fields available in the transition screen of the transition. Otherwise use `transition_and_update`.

@example Transition the issue and set the fields `assignee` and `customfield_11005` available on the transition screens

jira.transition(my_issue, 10, assignee: { name: 'username' }, customfield_11005: 'example')

@param [Integer, String] transition_id ID or name of the transition @param [Hash] fields Fields that can be updated on the transition screen

@return [Boolean] `true` if the issue was transitioned successfully, `false` otherwise.

# File lib/yajp/issue.rb, line 44
def transition(transition_id, **fields)
  if transition_id.kind_of?(String)
    transition_id = get_transition_id(transition_id)

    return false if transition_id == -1
  end
  data = { transition: { id: transition_id.to_s } }
  data[:fields] = fields unless fields.empty?

  transitions.build.save(data)
end
update(**fields) click to toggle source

Update the issue.

@example Update the fields `assignee` and `customfield_11005`

issue.update(assignee: { name: 'username' }, customfield_11005: 'example')

@param [Hash] fields Fields to update

@return [Boolean] `true` if the issue was updated successfully, `false` otherwise.

# File lib/yajp/issue.rb, line 26
def update(**fields)
  return if fields.empty?

  save({ fields: fields })
end