Commit eaaa3696d6620e5c105b2f629ddb1de7499d0845
1 parent
37be920a
Exists in
master
and in
1 other branch
Add more tests to create_issue action
Showing
2 changed files
with
27 additions
and
12 deletions
Show diff stats
spec/controllers/problems_controller_spec.rb
| @@ -257,35 +257,50 @@ describe ProblemsController do | @@ -257,35 +257,50 @@ describe ProblemsController do | ||
| 257 | end | 257 | end |
| 258 | 258 | ||
| 259 | describe "POST /apps/:app_id/problems/:id/create_issue" do | 259 | describe "POST /apps/:app_id/problems/:id/create_issue" do |
| 260 | + before { sign_in admin } | ||
| 260 | 261 | ||
| 261 | - before(:each) do | ||
| 262 | - sign_in admin | ||
| 263 | - end | ||
| 264 | - | ||
| 265 | - context "successful issue creation" do | 262 | + context "when app has a issue tracker" do |
| 266 | let(:notice) { Fabricate :notice } | 263 | let(:notice) { Fabricate :notice } |
| 267 | let(:problem) { notice.problem } | 264 | let(:problem) { notice.problem } |
| 268 | - let(:issue_tracker) { Fabricate(:issue_tracker) } | 265 | + let(:issue_tracker) do |
| 266 | + Fabricate(:issue_tracker).tap do |t| | ||
| 267 | + t.instance_variable_set(:@tracker, ErrbitPlugin::MockIssueTracker.new(t.options)) | ||
| 268 | + end | ||
| 269 | + end | ||
| 269 | 270 | ||
| 270 | before do | 271 | before do |
| 271 | problem.app.issue_tracker = issue_tracker | 272 | problem.app.issue_tracker = issue_tracker |
| 272 | - problem.app.save! | 273 | + controller.stub(:problem).and_return(problem) |
| 273 | controller.stub(:current_user).and_return(admin) | 274 | controller.stub(:current_user).and_return(admin) |
| 274 | - post :create_issue, app_id: problem.app.id, id: problem.id | ||
| 275 | end | 275 | end |
| 276 | 276 | ||
| 277 | it "should redirect to problem page" do | 277 | it "should redirect to problem page" do |
| 278 | + post :create_issue, app_id: problem.app.id, id: problem.id | ||
| 278 | expect(response).to redirect_to(app_problem_path(problem.app, problem)) | 279 | expect(response).to redirect_to(app_problem_path(problem.app, problem)) |
| 279 | expect(flash[:error]).to be_blank | 280 | expect(flash[:error]).to be_blank |
| 280 | end | 281 | end |
| 281 | - end | ||
| 282 | 282 | ||
| 283 | - context "error during request to a tracker" do | ||
| 284 | - before do | 283 | + it "should save the right title" do |
| 284 | + post :create_issue, app_id: problem.app.id, id: problem.id | ||
| 285 | + title = "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}" | ||
| 286 | + line = issue_tracker.tracker.output.shift | ||
| 287 | + expect(line[0]).to eq(title) | ||
| 288 | + end | ||
| 289 | + | ||
| 290 | + it "should save the right body" do | ||
| 291 | + pending | ||
| 292 | + end | ||
| 293 | + | ||
| 294 | + it "should update the problem" do | ||
| 285 | post :create_issue, app_id: problem.app.id, id: problem.id | 295 | post :create_issue, app_id: problem.app.id, id: problem.id |
| 296 | + expect(problem.issue_link).to eq("http://example.com/mock-errbit") | ||
| 297 | + expect(problem.issue_type).to eq("mock") | ||
| 286 | end | 298 | end |
| 299 | + end | ||
| 287 | 300 | ||
| 301 | + context "when app has no issue tracker" do | ||
| 288 | it "should redirect to problem page" do | 302 | it "should redirect to problem page" do |
| 303 | + post :create_issue, app_id: problem.app.id, id: problem.id | ||
| 289 | expect(response).to redirect_to( app_problem_path(problem.app, problem) ) | 304 | expect(response).to redirect_to( app_problem_path(problem.app, problem) ) |
| 290 | expect(flash[:error]).to eql "This app has no issue tracker setup." | 305 | expect(flash[:error]).to eql "This app has no issue tracker setup." |
| 291 | end | 306 | end |
spec/errbit_plugin/mock_issue_tracker.rb
| @@ -35,7 +35,7 @@ module ErrbitPlugin | @@ -35,7 +35,7 @@ module ErrbitPlugin | ||
| 35 | 35 | ||
| 36 | def create_issue(title, body, user) | 36 | def create_issue(title, body, user) |
| 37 | @output << [title, body, user] | 37 | @output << [title, body, user] |
| 38 | - true | 38 | + "http://example.com/mock-errbit" |
| 39 | end | 39 | end |
| 40 | 40 | ||
| 41 | def url; ''; end | 41 | def url; ''; end |