From d1d5161e3bad5b762a1b6e1d1b0bbabb3e69a72a Mon Sep 17 00:00:00 2001 From: Erik Clarizio Date: Mon, 5 Feb 2018 18:48:24 -0800 Subject: [PATCH] Use correct value for force_single_value when serializing TagControl https://bugzilla.redhat.com/show_bug.cgi?id=1540273 --- app/models/dialog_field_serializer.rb | 5 ++++- spec/models/dialog_field_serializer_spec.rb | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/models/dialog_field_serializer.rb b/app/models/dialog_field_serializer.rb index a1f9b62c907..6374a7a9b8b 100644 --- a/app/models/dialog_field_serializer.rb +++ b/app/models/dialog_field_serializer.rb @@ -23,7 +23,10 @@ def serialize(dialog_field, all_attributes = false) if dialog_field.type == "DialogFieldTagControl" category = Category.find_by(:id => dialog_field.category) - dialog_field.options.merge!(:category_name => category.name, :category_description => category.description) if category + if category + dialog_field.options.merge!(:category_name => category.name, :category_description => category.description) + dialog_field.options[:force_single_value] = dialog_field.options[:force_single_value] || category.single_value + end end included_attributes(dialog_field.as_json(:methods => [:type, :values]), all_attributes).merge(extra_attributes) end diff --git a/spec/models/dialog_field_serializer_spec.rb b/spec/models/dialog_field_serializer_spec.rb index 4db55b43b17..3ac470fcecb 100644 --- a/spec/models/dialog_field_serializer_spec.rb +++ b/spec/models/dialog_field_serializer_spec.rb @@ -125,13 +125,18 @@ context "when the dialog_field is a tag control type" do let(:dialog_field) do - DialogFieldTagControl.new(expected_serialized_values.merge(:resource_action => resource_action, :dialog_field_responders => dialog_field_responders)) + DialogFieldTagControl.new(expected_serialized_values.merge( + :resource_action => resource_action, + :dialog_field_responders => dialog_field_responders + )) end let(:type) { "DialogFieldTagControl" } - let(:options) { {:category_id => "123"} } + let(:options) { {:category_id => "123", :force_single_value => false} } let(:dynamic) { false } - let(:category) { double("Category", :name => "best category ever", :description => "best category ever") } + let(:category) do + double("Category", :name => "best category ever", :description => "best category ever", :single_value => true) + end before do allow(Category).to receive(:find_by).with(:id => "123").and_return(category) @@ -149,7 +154,8 @@ "options" => { :category_id => "123", :category_name => "best category ever", - :category_description => "best category ever" + :category_description => "best category ever", + :force_single_value => true }, "default_value" => "[\"one\", \"two\"]" ))