Skip to content

Commit

Permalink
Merge pull request #6097 from eclarizio/update_and_serialize_dialog_f…
Browse files Browse the repository at this point in the history
…ields_method

Add method for returning serialized attributes after dynamic updates
  • Loading branch information
gmcculloug committed Jan 14, 2016
2 parents 53929d7 + 1f950ab commit d6dfda3
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 26 deletions.
8 changes: 8 additions & 0 deletions app/models/dialog_field.rb
Expand Up @@ -104,6 +104,10 @@ def resource
self
end

def update_and_serialize_values
DialogFieldSerializer.serialize(self)
end

private

def default_resource_action
Expand All @@ -125,4 +129,8 @@ def value_from_dialog_fields(dialog_values)
def get_default_value
default_value
end

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
end
end
8 changes: 4 additions & 4 deletions app/models/dialog_field_check_box.rb
Expand Up @@ -33,13 +33,13 @@ def refresh_json_value
{:checked => checked?}
end

def trigger_automate_value_updates
values_from_automate
end

private

def required_value_error?
value != "t"
end

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
end
end
8 changes: 4 additions & 4 deletions app/models/dialog_field_date_control.rb
Expand Up @@ -45,13 +45,13 @@ def refresh_json_value
{:date => Date.parse(@value).strftime("%m/%d/%Y")}
end

def trigger_automate_value_updates
values_from_automate
end

private

def default_time
with_current_user_timezone { Time.zone.now + 1.day }.strftime("%m/%d/%Y")
end

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
end
end
8 changes: 4 additions & 4 deletions app/models/dialog_field_drop_down_list.rb
Expand Up @@ -30,6 +30,10 @@ def refresh_json_value(checked_value)
{:refreshed_values => refreshed_values, :checked_value => @value}
end

def trigger_automate_value_updates
raw_values
end

private

def load_values_on_init?
Expand All @@ -44,8 +48,4 @@ def raw_values

@raw_values
end

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
end
end
4 changes: 0 additions & 4 deletions app/models/dialog_field_radio_button.rb
Expand Up @@ -44,8 +44,4 @@ def raw_values
@raw_values = super
end
end

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
end
end
15 changes: 14 additions & 1 deletion app/models/dialog_field_serializer.rb
@@ -1,13 +1,26 @@
class DialogFieldSerializer < Serializer
EXCLUDED_ATTRIBUTES = ["created_at", "dialog_group_id", "id", "updated_at"]

def self.serialize(dialog_field)
new.serialize(dialog_field)
end

def initialize(resource_action_serializer = ResourceActionSerializer.new)
@resource_action_serializer = resource_action_serializer
end

def serialize(dialog_field)
serialized_resource_action = @resource_action_serializer.serialize(dialog_field.resource_action)

included_attributes(dialog_field.attributes).merge("resource_action" => serialized_resource_action)
extra_attributes = {
"resource_action" => serialized_resource_action
}

if dialog_field.dynamic?
dynamic_values = dialog_field.trigger_automate_value_updates
extra_attributes["values"] = dynamic_values
end

included_attributes(dialog_field.attributes).merge(extra_attributes)
end
end
4 changes: 4 additions & 0 deletions app/models/dialog_field_sorted_item.rb
Expand Up @@ -49,6 +49,10 @@ def normalize_automate_values(automate_hash)
result.blank? ? initial_values : result
end

def trigger_automate_value_updates
set_raw_values
end

private

def sort_data(data_to_sort)
Expand Down
6 changes: 2 additions & 4 deletions app/models/dialog_field_text_box.rb
Expand Up @@ -66,9 +66,7 @@ def refresh_json_value
{:text => @value}
end

private

def values_from_automate
DynamicDialogFieldValueProcessor.values_from_automate(self)
def trigger_automate_value_updates
values_from_automate
end
end
12 changes: 12 additions & 0 deletions spec/models/dialog_field_check_box_spec.rb
Expand Up @@ -193,4 +193,16 @@
expect(dialog_field.value).to eq("f")
end
end

describe "#trigger_automate_value_updates" do
let(:dialog_field) { described_class.new }

before do
allow(DynamicDialogFieldValueProcessor).to receive(:values_from_automate).with(dialog_field).and_return("f")
end

it "returns the checked value in a hash" do
expect(dialog_field.trigger_automate_value_updates).to eq("f")
end
end
end
14 changes: 14 additions & 0 deletions spec/models/dialog_field_date_control_spec.rb
Expand Up @@ -192,4 +192,18 @@
expect(subject.show_past_dates).to be_falsey
end
end

describe "#trigger_automate_value_updates" do
let(:dialog_field) { described_class.new }

before do
allow(DynamicDialogFieldValueProcessor).to receive(:values_from_automate).with(dialog_field).and_return(
"2015-01-02"
)
end

it "returns the values from the value processor" do
expect(dialog_field.trigger_automate_value_updates).to eq("2015-01-02")
end
end
end
29 changes: 24 additions & 5 deletions spec/models/dialog_field_serializer_spec.rb
Expand Up @@ -18,7 +18,7 @@
"display" => "display",
"display_method" => "display method",
"display_method_options" => {"display method options" => true},
"dynamic" => false,
"dynamic" => dynamic,
"required" => false,
"required_method" => "required method",
"required_method_options" => {"required method options" => true},
Expand All @@ -44,10 +44,29 @@
allow(resource_action_serializer).to receive(:serialize).with(resource_action).and_return("serialized resource action")
end

it "serializes the dialog_field" do
expect(dialog_field_serializer.serialize(dialog_field)).to eq(expected_serialized_values.merge(
"resource_action" => "serialized resource action"
))
context "when the dialog_field is dynamic" do
let(:dynamic) { true }

before do
allow(dialog_field).to receive(:trigger_automate_value_updates).and_return("dynamic values")
end

it "serializes the dialog_field with the correct values" do
expect(dialog_field_serializer.serialize(dialog_field)).to eq(expected_serialized_values.merge(
"resource_action" => "serialized resource action",
"values" => "dynamic values"
))
end
end

context "when the dialog_field is not dynamic" do
let(:dynamic) { false }

it "serializes the dialog_field" do
expect(dialog_field_serializer.serialize(dialog_field)).to eq(expected_serialized_values.merge(
"resource_action" => "serialized resource action"
))
end
end
end
end
13 changes: 13 additions & 0 deletions spec/models/dialog_field_spec.rb
Expand Up @@ -132,4 +132,17 @@
end
end
end

describe "#update_and_serialize_values" do
let(:dialog_field) { described_class.new }

before do
allow(DialogFieldSerializer).to receive(:serialize).with(dialog_field)
end

it "serializes the dialog field" do
expect(DialogFieldSerializer).to receive(:serialize).with(dialog_field)
dialog_field.update_and_serialize_values
end
end
end
14 changes: 14 additions & 0 deletions spec/models/dialog_field_text_box_spec.rb
Expand Up @@ -269,4 +269,18 @@
expect(dialog_field.value).to eq("processor")
end
end

describe "#trigger_automate_value_updates" do
let(:dialog_field) { described_class.new }

before do
allow(DynamicDialogFieldValueProcessor).to receive(:values_from_automate).with(dialog_field).and_return(
"processed values"
)
end

it "returns the values from automate" do
expect(dialog_field.trigger_automate_value_updates).to eq("processed values")
end
end
end

0 comments on commit d6dfda3

Please sign in to comment.