Commit b483a6af718d06009d47dc88e7226d6520420a1e
1 parent
7f0137d2
Exists in
master
and in
1 other branch
Now that's what I call a refactor, Vol 2. Glad I'm not getting paid per LOC. Wai…
…t, I'm not getting paid at all!
Showing
1 changed file
with
18 additions
and
147 deletions
Show diff stats
spec/controllers/apps_controller_spec.rb
| @@ -273,163 +273,34 @@ describe AppsController do | @@ -273,163 +273,34 @@ describe AppsController do | ||
| 273 | end | 273 | end |
| 274 | end | 274 | end |
| 275 | 275 | ||
| 276 | - context "lighthouseapp" do | ||
| 277 | - it "should save tracker params" do | ||
| 278 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 279 | - :type => 'LighthouseTracker', :project_id => '1234', :api_token => '123123', :account => 'myapp' | ||
| 280 | - } } | ||
| 281 | - @app.reload | ||
| 282 | - | ||
| 283 | - tracker = @app.issue_tracker | ||
| 284 | - tracker.should be_a(LighthouseTracker) | ||
| 285 | - tracker.project_id.should == '1234' | ||
| 286 | - tracker.api_token.should == '123123' | ||
| 287 | - tracker.account.should == 'myapp' | ||
| 288 | - end | ||
| 289 | - | ||
| 290 | - it "should show validation notice when sufficient params are not present" do | ||
| 291 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 292 | - :type => 'LighthouseTracker', :project_id => '1234', :api_token => '123123' | ||
| 293 | - } } | ||
| 294 | - @app.reload | ||
| 295 | - | ||
| 296 | - @app.issue_tracker_configured?.should == false | ||
| 297 | - response.body.should match(/You must specify your Lighthouseapp account, API token and Project ID/) | ||
| 298 | - end | ||
| 299 | - end | ||
| 300 | - | ||
| 301 | - context "redmine" do | ||
| 302 | - it "should save tracker params" do | ||
| 303 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 304 | - :type => 'RedmineTracker', :project_id => '1234', :api_token => '123123', :account => 'http://myapp.com' | ||
| 305 | - } } | ||
| 306 | - @app.reload | ||
| 307 | - | ||
| 308 | - tracker = @app.issue_tracker | ||
| 309 | - tracker.should be_a(RedmineTracker) | ||
| 310 | - tracker.project_id.should == '1234' | ||
| 311 | - tracker.api_token.should == '123123' | ||
| 312 | - tracker.account.should == 'http://myapp.com' | ||
| 313 | - end | ||
| 314 | - | ||
| 315 | - it "should show validation notice when sufficient params are not present" do | ||
| 316 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 317 | - :type => 'RedmineTracker', :project_id => '1234', :api_token => '123123' | ||
| 318 | - } } | ||
| 319 | - @app.reload | ||
| 320 | - | ||
| 321 | - @app.issue_tracker_configured?.should == false | ||
| 322 | - response.body.should match(/You must specify your Redmine URL, API token and Project ID/) | ||
| 323 | - end | ||
| 324 | - end | ||
| 325 | - | ||
| 326 | - context "pivotal" do | ||
| 327 | - it "should save tracker params" do | ||
| 328 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 329 | - :type => 'PivotalLabsTracker', :project_id => '1234', :api_token => '123123' } } | ||
| 330 | - @app.reload | ||
| 331 | - | ||
| 332 | - tracker = @app.issue_tracker | ||
| 333 | - tracker.should be_a(PivotalLabsTracker) | ||
| 334 | - tracker.project_id.should == '1234' | ||
| 335 | - tracker.api_token.should == '123123' | ||
| 336 | - end | ||
| 337 | - | ||
| 338 | - it "should show validation notice when sufficient params are not present" do | ||
| 339 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 340 | - :type => 'PivotalLabsTracker', :project_id => '1234' } } | ||
| 341 | - @app.reload | ||
| 342 | - | ||
| 343 | - @app.issue_tracker_configured?.should == false | ||
| 344 | - response.body.should match(/You must specify your Pivotal Tracker API token and Project ID/) | ||
| 345 | - end | ||
| 346 | - end | 276 | + IssueTracker.subclasses.each do |tracker_klass| |
| 277 | + context tracker_klass do | ||
| 278 | + it "should save tracker params" do | ||
| 279 | + params = tracker_klass::RequiredFields.inject({}){|hash,f| hash[f] = "test_value"; hash } | ||
| 280 | + params['ticket_properties'] = "card_type = defect" if tracker_klass == MingleTracker | ||
| 281 | + params['type'] = tracker_klass.to_s | ||
| 282 | + put :update, :id => @app.id, :app => {:issue_tracker_attributes => params} | ||
| 347 | 283 | ||
| 348 | - context "fogbugz" do | ||
| 349 | - context 'with correct params' do | ||
| 350 | - before do | ||
| 351 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 352 | - :type => 'FogbugzTracker', :account => 'abc', :project_id => 'Service - Peon', :username => '1234', :password => '123123' } } | ||
| 353 | @app.reload | 284 | @app.reload |
| 285 | + tracker = @app.issue_tracker | ||
| 286 | + tracker.should be_a(tracker_klass) | ||
| 287 | + tracker_klass::RequiredFields.each do |required| | ||
| 288 | + tracker.send(required.to_sym).should == 'test_value' | ||
| 289 | + end | ||
| 354 | end | 290 | end |
| 355 | 291 | ||
| 356 | - subject {@app.issue_tracker} | ||
| 357 | - its(:type) {should == "FogbugzTracker"} | ||
| 358 | - its(:account) {should == 'abc'} | ||
| 359 | - its(:project_id) {should == 'Service - Peon'} | ||
| 360 | - its(:username) {should == '1234'} | ||
| 361 | - its(:password) {should == '123123'} | ||
| 362 | - end | 292 | + it "should show validation notice when sufficient params are not present" do |
| 293 | + # Leave out one required param | ||
| 294 | + params = tracker_klass::RequiredFields[1..-1].inject({}){|hash,f| hash[f] = "test_value"; hash } | ||
| 295 | + params['type'] = tracker_klass.to_s | ||
| 296 | + put :update, :id => @app.id, :app => {:issue_tracker_attributes => params} | ||
| 363 | 297 | ||
| 364 | - context 'insufficient params' do | ||
| 365 | - it 'shows validation notice' do | ||
| 366 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 367 | - :type => 'FogbugzTracker', :project_id => '1234' } } | ||
| 368 | @app.reload | 298 | @app.reload |
| 369 | - | ||
| 370 | @app.issue_tracker_configured?.should == false | 299 | @app.issue_tracker_configured?.should == false |
| 371 | - response.body.should match(/You must specify your FogBugz Area Name, FogBugz URL, Username, and Password/) | ||
| 372 | - end | ||
| 373 | - end | ||
| 374 | - end | ||
| 375 | - | ||
| 376 | - context "mingle" do | ||
| 377 | - context 'with correct params' do | ||
| 378 | - before do | ||
| 379 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 380 | - :type => 'MingleTracker', :project_id => 'test', :account => 'http://mingle.example.com', | ||
| 381 | - :username => '1234', :password => '123123', :ticket_properties => "card_type = Defect" | ||
| 382 | - } } | ||
| 383 | - @app.reload | ||
| 384 | - end | ||
| 385 | - | ||
| 386 | - subject {@app.issue_tracker} | ||
| 387 | - its(:type) {should == "MingleTracker"} | ||
| 388 | - its(:project_id) {should == 'test'} | ||
| 389 | - its(:username) {should == '1234'} | ||
| 390 | - its(:password) {should == '123123'} | ||
| 391 | - end | ||
| 392 | - | ||
| 393 | - it "should show validation notice when sufficient params are not present" do | ||
| 394 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 395 | - :type => 'MingleTracker', :project_id => 'test', :account => 'http://mingle.example.com', | ||
| 396 | - :username => '1234', :password => '1234', :ticket_properties => "cards_type = Defect" | ||
| 397 | - } } | ||
| 398 | - @app.reload | ||
| 399 | - | ||
| 400 | - @app.issue_tracker_configured?.should == false | ||
| 401 | - response.body.should match(/You must specify your Mingle URL, Project ID, Card Type \(in default card properties\), Sign-in name, and Password/) | ||
| 402 | - end | ||
| 403 | - end | ||
| 404 | - | ||
| 405 | - context "github issues" do | ||
| 406 | - context 'with correct params' do | ||
| 407 | - before do | ||
| 408 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 409 | - :type => 'GithubTracker', :project_id => 'test', :username => 'user', | ||
| 410 | - :api_token => '123123' | ||
| 411 | - } } | ||
| 412 | - @app.reload | 300 | + response.body.should match(/You must specify your/) |
| 413 | end | 301 | end |
| 414 | - | ||
| 415 | - subject {@app.issue_tracker} | ||
| 416 | - its(:type) {should == "GithubTracker"} | ||
| 417 | - its(:project_id) {should == 'test'} | ||
| 418 | - its(:username) {should == 'user'} | ||
| 419 | - its(:api_token) {should == '123123'} | ||
| 420 | - end | ||
| 421 | - | ||
| 422 | - it "should show validation notice when sufficient params are not present" do | ||
| 423 | - put :update, :id => @app.id, :app => { :issue_tracker_attributes => { | ||
| 424 | - :type => 'GithubTracker', :project_id => 'test', :username => 'user' | ||
| 425 | - } } | ||
| 426 | - @app.reload | ||
| 427 | - | ||
| 428 | - @app.issue_tracker_configured?.should == false | ||
| 429 | - response.body.should match(/You must specify your Github repository, username and API token/) | ||
| 430 | end | 302 | end |
| 431 | end | 303 | end |
| 432 | - | ||
| 433 | end | 304 | end |
| 434 | end | 305 | end |
| 435 | 306 |