From 40ba4090d16cfac617594062b5117fe609a1c7e6 Mon Sep 17 00:00:00 2001 From: drew uhlmann Date: Wed, 19 Jul 2017 10:15:26 -0400 Subject: [PATCH 1/2] Exports new DialogFieldAssociations data --- app/models/dialog_field_serializer.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/dialog_field_serializer.rb b/app/models/dialog_field_serializer.rb index 69dec8a62cc..d5d4e0641c7 100644 --- a/app/models/dialog_field_serializer.rb +++ b/app/models/dialog_field_serializer.rb @@ -13,7 +13,8 @@ def serialize(dialog_field, all_attributes = false) serialized_resource_action = @resource_action_serializer.serialize(dialog_field.resource_action) extra_attributes = { - "resource_action" => serialized_resource_action + "resource_action" => serialized_resource_action, + "trigger_associations" => dialog_field.trigger_associations.map(&:name) } if dialog_field.dynamic? From a3a710ab68e1917540579661e2b2201af51d5238 Mon Sep 17 00:00:00 2001 From: drew uhlmann Date: Thu, 27 Jul 2017 14:02:54 -0400 Subject: [PATCH 2/2] Tests serializer for association --- app/models/dialog_field_serializer.rb | 6 ++--- spec/models/dialog_field_serializer_spec.rb | 30 ++++++++++++++++----- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/models/dialog_field_serializer.rb b/app/models/dialog_field_serializer.rb index d5d4e0641c7..20fa7b97c1b 100644 --- a/app/models/dialog_field_serializer.rb +++ b/app/models/dialog_field_serializer.rb @@ -11,10 +11,9 @@ def initialize(resource_action_serializer = ResourceActionSerializer.new) def serialize(dialog_field, all_attributes = false) serialized_resource_action = @resource_action_serializer.serialize(dialog_field.resource_action) - extra_attributes = { - "resource_action" => serialized_resource_action, - "trigger_associations" => dialog_field.trigger_associations.map(&:name) + "resource_action" => serialized_resource_action, + "dialog_field_responders" => dialog_field.dialog_field_responders.map(&:name) } if dialog_field.dynamic? @@ -26,7 +25,6 @@ def serialize(dialog_field, all_attributes = false) category = Category.find_by(:id => dialog_field.category) dialog_field.options.merge!(:category_name => category.name, :category_description => category.description) end - included_attributes(dialog_field.as_json(:methods => [:type, :values]), all_attributes).merge(extra_attributes) end end diff --git a/spec/models/dialog_field_serializer_spec.rb b/spec/models/dialog_field_serializer_spec.rb index c090045e885..62b3a282e0d 100644 --- a/spec/models/dialog_field_serializer_spec.rb +++ b/spec/models/dialog_field_serializer_spec.rb @@ -3,9 +3,10 @@ let(:dialog_field_serializer) { described_class.new(resource_action_serializer) } describe "#serialize" do - let(:dialog_field) { DialogFieldTextBox.new(expected_serialized_values.merge(:resource_action => resource_action)) } + let(:dialog_field) { DialogFieldTextBox.new(expected_serialized_values.merge(:resource_action => resource_action, :dialog_field_responders => dialog_field_responders)) } let(:type) { "DialogFieldTextBox" } let(:resource_action) { ResourceAction.new } + let(:dialog_field_responders) { [] } let(:options) { {"options" => true} } let(:expected_serialized_values) do { @@ -59,8 +60,9 @@ it 'serializes the dialog_field with the correct attributes' do expect(dialog_field_serializer.serialize(dialog_field, all_attributes)) .to eq(expected_serialized_values.merge( - "resource_action" => "serialized resource action", - "values" => "dynamic values" + "resource_action" => "serialized resource action", + "values" => "dynamic values", + "dialog_field_responders" => dialog_field_responders )) end end @@ -88,7 +90,8 @@ it "serializes the dialog_field with the correct values" do expect(dialog_field_serializer.serialize(dialog_field, all_attributes)) .to eq(expected_serialized_values.merge( - "resource_action" => "serialized resource action" + "resource_action" => "serialized resource action", + "dialog_field_responders" => dialog_field_responders )) end end @@ -103,12 +106,24 @@ 'resource_action' => 'serialized resource action', )) end + + context 'with associations' do + let(:dialog_field_responders) { [FactoryGirl.build(:dialog_field_text_box)] } + + it 'serializes the dialog_field with all attributes and non_empty associations' do + expect(dialog_field_serializer.serialize(dialog_field, dialog_field_responders)) + .to include(expected_serialized_values.merge( + "resource_action" => "serialized resource action", + "dialog_field_responders" => ["Dialog Field"] + )) + end + end end end 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)) + DialogFieldTagControl.new(expected_serialized_values.merge(:resource_action => resource_action, :dialog_field_responders => dialog_field_responders)) end let(:type) { "DialogFieldTagControl" } @@ -124,8 +139,9 @@ it "serializes the category name and description" do expect(dialog_field_serializer.serialize(dialog_field)) .to eq(expected_serialized_values.merge( - "resource_action" => "serialized resource action", - "options" => { + "resource_action" => "serialized resource action", + "dialog_field_responders" => dialog_field_responders, + "options" => { :category_id => "123", :category_name => "best category ever", :category_description => "best category ever"