summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-03-14 15:03:58 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-03-14 15:03:58 +0000
commitb956621b013b75d51a00da39993b1fe463291d57 (patch)
tree169099705b4fd501de42fd65f2f5420ef070f35c
parent97fc28da3a563501e6e0d777a1a01d9b93486196 (diff)
downloadredmine-b956621b013b75d51a00da39993b1fe463291d57.tar.gz
redmine-b956621b013b75d51a00da39993b1fe463291d57.zip
Merged r14083 (#19368).
git-svn-id: http://svn.redmine.org/redmine/branches/3.0-stable@14095 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/issue.rb5
-rw-r--r--test/integration/api_test/issues_test.rb29
2 files changed, 34 insertions, 0 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 8777a11f4..eb1e22d6d 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -447,6 +447,11 @@ class Issue < ActiveRecord::Base
if (t = attrs.delete('tracker_id')) && safe_attribute?('tracker_id')
self.tracker_id = t
end
+ if project
+ # Set the default tracker to accept custom field values
+ # even if tracker is not specified
+ self.tracker ||= project.trackers.first
+ end
if (s = attrs.delete('status_id')) && safe_attribute?('status_id')
if new_statuses_allowed_to(user).collect(&:id).include?(s.to_i)
diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb
index b71b268b8..1825beb2c 100644
--- a/test/integration/api_test/issues_test.rb
+++ b/test/integration/api_test/issues_test.rb
@@ -406,6 +406,35 @@ JSON
assert_equal 'API test', issue.subject
end
+ test "POST /issues.json without tracker_id should accept custom fields" do
+ field = IssueCustomField.generate!(
+ :field_format => 'list',
+ :multiple => true,
+ :possible_values => ["V1", "V2", "V3"],
+ :default_value => "V2",
+ :is_for_all => true,
+ :trackers => Tracker.all.to_a
+ )
+
+payload = <<-JSON
+{
+ "issue": {
+ "project_id": "1",
+ "subject": "Multivalued custom field",
+ "custom_field_values":{"#{field.id}":["V1","V3"]}
+ }
+}
+JSON
+
+ assert_difference('Issue.count') do
+ post '/issues.json', payload, {"CONTENT_TYPE" => 'application/json'}.merge(credentials('jsmith'))
+ end
+
+ assert_response :created
+ issue = Issue.order('id DESC').first
+ assert_equal ["V1", "V3"], issue.custom_field_value(field)
+ end
+
test "POST /issues.json with failure should return errors" do
assert_no_difference('Issue.count') do
post '/issues.json', {:issue => {:project_id => 1}}, credentials('jsmith')