module MR::JsonField::TestHelpers::InstanceMethods

Public Instance Methods

assert_json_field(subject, field_name, options = nil) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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