@@ -435,6 +435,28 JSON | |||||
435 | assert_equal ["V1", "V3"], issue.custom_field_value(field).sort |
|
435 | assert_equal ["V1", "V3"], issue.custom_field_value(field).sort | |
436 | end |
|
436 | end | |
437 |
|
437 | |||
|
438 | test "POST /issues.json with omitted custom field should set default value" do | |||
|
439 | field = IssueCustomField.generate!(:default_value => "Default") | |||
|
440 | ||||
|
441 | issue = new_record(Issue) do | |||
|
442 | post '/issues.json', | |||
|
443 | {:issue => {:project_id => 1, :subject => 'API', :custom_field_values => {}}}, | |||
|
444 | credentials('jsmith') | |||
|
445 | end | |||
|
446 | assert_equal "Default", issue.custom_field_value(field) | |||
|
447 | end | |||
|
448 | ||||
|
449 | test "POST /issues.json with custom field set to blank should not set default value" do | |||
|
450 | field = IssueCustomField.generate!(:default_value => "Default") | |||
|
451 | ||||
|
452 | issue = new_record(Issue) do | |||
|
453 | post '/issues.json', | |||
|
454 | {:issue => {:project_id => 1, :subject => 'API', :custom_field_values => {field.id.to_s => ""}}}, | |||
|
455 | credentials('jsmith') | |||
|
456 | end | |||
|
457 | assert_equal "", issue.custom_field_value(field) | |||
|
458 | end | |||
|
459 | ||||
438 | test "POST /issues.json with failure should return errors" do |
|
460 | test "POST /issues.json with failure should return errors" do | |
439 | assert_no_difference('Issue.count') do |
|
461 | assert_no_difference('Issue.count') do | |
440 | post '/issues.json', {:issue => {:project_id => 1}}, credentials('jsmith') |
|
462 | post '/issues.json', {:issue => {:project_id => 1}}, credentials('jsmith') | |
@@ -512,6 +534,62 JSON | |||||
512 | assert_equal "Notes only", journal.notes |
|
534 | assert_equal "Notes only", journal.notes | |
513 | end |
|
535 | end | |
514 |
|
536 | |||
|
537 | test "PUT /issues/:id.json with omitted custom field should not change blank value to default value" do | |||
|
538 | field = IssueCustomField.generate!(:default_value => "Default") | |||
|
539 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id.to_s => ""}) | |||
|
540 | assert_equal "", issue.reload.custom_field_value(field) | |||
|
541 | ||||
|
542 | assert_difference('Journal.count') do | |||
|
543 | put "/issues/#{issue.id}.json", | |||
|
544 | {:issue => {:custom_field_values => {}, :notes => 'API'}}, | |||
|
545 | credentials('jsmith') | |||
|
546 | end | |||
|
547 | ||||
|
548 | assert_equal "", issue.reload.custom_field_value(field) | |||
|
549 | end | |||
|
550 | ||||
|
551 | test "PUT /issues/:id.json with custom field set to blank should not change blank value to default value" do | |||
|
552 | field = IssueCustomField.generate!(:default_value => "Default") | |||
|
553 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id.to_s => ""}) | |||
|
554 | assert_equal "", issue.reload.custom_field_value(field) | |||
|
555 | ||||
|
556 | assert_difference('Journal.count') do | |||
|
557 | put "/issues/#{issue.id}.json", | |||
|
558 | {:issue => {:custom_field_values => {field.id.to_s => ""}, :notes => 'API'}}, | |||
|
559 | credentials('jsmith') | |||
|
560 | end | |||
|
561 | ||||
|
562 | assert_equal "", issue.reload.custom_field_value(field) | |||
|
563 | end | |||
|
564 | ||||
|
565 | test "PUT /issues/:id.json with tracker change and omitted custom field specific to that tracker does not set default value" do | |||
|
566 | field = IssueCustomField.generate!(:default_value => "Default", :tracker_ids => [2]) | |||
|
567 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1) | |||
|
568 | ||||
|
569 | assert_difference('Journal.count') do | |||
|
570 | put "/issues/#{issue.id}.json", | |||
|
571 | {:issue => {:tracker_id => 2, :custom_field_values => {}, :notes => 'API'}}, | |||
|
572 | credentials('jsmith') | |||
|
573 | end | |||
|
574 | ||||
|
575 | assert_equal 2, issue.reload.tracker_id | |||
|
576 | assert_nil issue.reload.custom_field_value(field) | |||
|
577 | end | |||
|
578 | ||||
|
579 | test "PUT /issues/:id.json with tracker change and custom field specific to that tracker set to blank should not set default value" do | |||
|
580 | field = IssueCustomField.generate!(:default_value => "Default", :tracker_ids => [2]) | |||
|
581 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1) | |||
|
582 | ||||
|
583 | assert_difference('Journal.count') do | |||
|
584 | put "/issues/#{issue.id}.json", | |||
|
585 | {:issue => {:tracker_id => 2, :custom_field_values => {field.id.to_s => ""}, :notes => 'API'}}, | |||
|
586 | credentials('jsmith') | |||
|
587 | end | |||
|
588 | ||||
|
589 | assert_equal 2, issue.reload.tracker_id | |||
|
590 | assert_equal "", issue.reload.custom_field_value(field) | |||
|
591 | end | |||
|
592 | ||||
515 | test "PUT /issues/:id.xml with failed update" do |
|
593 | test "PUT /issues/:id.xml with failed update" do | |
516 | put '/issues/6.xml', {:issue => {:subject => ''}}, credentials('jsmith') |
|
594 | put '/issues/6.xml', {:issue => {:subject => ''}}, credentials('jsmith') | |
517 |
|
595 |
@@ -190,6 +190,13 module ObjectHelpers | |||||
190 | field |
|
190 | field | |
191 | end |
|
191 | end | |
192 |
|
192 | |||
|
193 | def IssueCustomField.generate!(attributes={}) | |||
|
194 | super do |field| | |||
|
195 | field.is_for_all = true unless attributes.key?(:is_for_all) | |||
|
196 | field.tracker_ids = Tracker.all.ids unless attributes.key?(:tracker_ids) || attributes.key?(:trackers) | |||
|
197 | end | |||
|
198 | end | |||
|
199 | ||||
193 | def Changeset.generate!(attributes={}) |
|
200 | def Changeset.generate!(attributes={}) | |
194 | @generated_changeset_rev ||= '123456' |
|
201 | @generated_changeset_rev ||= '123456' | |
195 | @generated_changeset_rev.succ! |
|
202 | @generated_changeset_rev.succ! |
General Comments 0
You need to be logged in to leave comments.
Login now