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)
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')