gitlab_issues_tracker_spec.rb 1.74 KB
require 'spec_helper'

describe IssueTrackers::GitlabTracker do
  it "should create an issue on Gitlab with problem params" do
    notice = Fabricate :notice
    tracker = Fabricate :gitlab_tracker, :app => notice.app
    problem = notice.problem

    issue_id = 5
    note_id = 10
    issue_body = {:id => issue_id, :title => "[production][foo#bar] FooError: Too Much Bar", :description => "[See this exception on Errbit]"}.to_json
    note_body = {:id => note_id, :body => "Example note body"}.to_json

    stub_request(:post, "#{tracker.account}/api/v3/projects/#{tracker.project_id}/issues?private_token=#{tracker.api_token}").
      with(:body => /.+/, :headers => {'Accept'=>'application/json'}).
      to_return(:status => 200, :body => issue_body, :headers => {'Accept'=>'application/json'})

    stub_request(:post, "#{tracker.account}/api/v3/projects/#{tracker.project_id}/issues/#{issue_id}/notes?private_token=#{tracker.api_token}").
      with(:body => /.+/, :headers => {'Accept'=>'application/json'}).
      to_return(:status => 200, :body => note_body, :headers => {'Accept'=>'application/json'})

    problem.app.issue_tracker.create_issue(problem)
    problem.reload

    requested_issue = have_requested(:post, "#{tracker.account}/api/v3/projects/#{tracker.project_id}/issues?private_token=#{tracker.api_token}").with(:body => /.+/, :headers => {'Accept'=>'application/json'})
    requested_note = have_requested(:post, "#{tracker.account}/api/v3/projects/#{tracker.project_id}/issues/#{issue_id}/notes?private_token=#{tracker.api_token}")
    WebMock.should requested_issue.with(:body => /%5Bproduction%5D%5Bfoo%23bar%5D%20FooError%3A%20Too%20Much%20Bar/)
    WebMock.should requested_issue.with(:body => /See%20this%20exception%20on%20Errbit/)

  end
end