Module: MR::JsonField::TestHelpers::InstanceMethods

Defined in:
lib/mr/json_field.rb

Instance Method Summary collapse

Instance Method Details

#assert_json_field(subject, field_name, options = nil) ⇒ Object



139
140
141
142
# File 'lib/mr/json_field.rb', line 139

def assert_json_field(subject, field_name, options = nil)
  assert_json_field_reader(subject, field_name, options)
  assert_json_field_writer(subject, field_name, options)
end

#assert_json_field_reader(subject, field_name, options = nil) ⇒ Object



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/mr/json_field.rb', line 144

def assert_json_field_reader(subject, field_name, options = nil)
  options ||= {}
  source_field_name = options[:source] || "#{field_name}_json"

  # set a value to read if it's `nil`
  if subject.send(source_field_name).nil?
    encoded_value = MR::JsonField.encode({
      MR::Factory.string => MR::Factory.string
    })
    subject.send("#{source_field_name}=", encoded_value)
  end

  assert_respond_to "#{field_name}", subject
  exp = MR::JsonField.decode(subject.send"#{source_field_name}")
  assert_equal exp, subject.send("#{field_name}")
end

#assert_json_field_writer(subject, field_name, options = nil) ⇒ Object



161
162
163
164
165
166
167
168
169
170
# File 'lib/mr/json_field.rb', line 161

def assert_json_field_writer(subject, field_name, options = nil)
  options ||= {}
  source_field_name = options[:source] || "#{field_name}_json"

  assert_respond_to "#{field_name}=", subject
  new_value = { MR::Factory.string => MR::Factory.string }
  subject.send("#{field_name}=", new_value)
  exp = MR::JsonField.encode(new_value)
  assert_equal exp, subject.send("#{source_field_name}")
end