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