Module: Resteze::Testing::RSpec::Object

Extended by:
RSpec::Matchers
Defined in:
lib/resteze/testing/rspec/object.rb

Instance Method Summary collapse

Instance Method Details

#assert_property_default(name, default) ⇒ Object



43
44
45
# File 'lib/resteze/testing/rspec/object.rb', line 43

def assert_property_default(name, default)
  expect(subject.defaults[name.to_sym]).to eq(default), "Expected #{subject} to have default for property #{name}"
end

#assert_property_required(name, required: true) ⇒ Object

rubocop:enable Metrics/AbcSize



30
31
32
33
34
35
36
# File 'lib/resteze/testing/rspec/object.rb', line 30

def assert_property_required(name, required: true)
  if required
    expect(subject.required?(name.to_sym)).to be(true), "Expected #{subject} to require property: #{name}"
  else
    expect(subject.required?(name.to_sym)).to be(false), "Expected #{subject} not to require property: #{name}"
  end
end

#assert_property_transformed(name, transformed: true) ⇒ Object

rubocop:enable Naming/PredicatePrefix



18
19
20
21
22
23
24
25
26
27
# File 'lib/resteze/testing/rspec/object.rb', line 18

def assert_property_transformed(name, transformed: true)
  translation = subject.translations_hash.dig(subject.translations.key(name.to_sym), name.to_sym)
  transformation_defined = translation.is_a?(Proc) || subject.transformation_exists?(name.to_sym)

  if transformed
    expect(transformation_defined).to be(true), "Expected #{subject} to transform property: #{name}"
  else
    expect(transformation_defined).to be(false), "Expected #{subject} not to transform property: #{name}"
  end
end

#assert_property_translation(name, from) ⇒ Object



38
39
40
41
# File 'lib/resteze/testing/rspec/object.rb', line 38

def assert_property_translation(name, from)
  expect(subject.translations.key(name.to_sym)).to eq(from.to_sym),
                                                   "Expected #{subject} to map property #{name} from #{from}"
end

#has_property(name, **options) ⇒ Object

rubocop:disable Metrics/AbcSize rubocop:disable Naming/PredicatePrefix



9
10
11
12
13
14
15
# File 'lib/resteze/testing/rspec/object.rb', line 9

def has_property(name, **options)
  expect(subject.property?(name.to_sym)).to be(true), "Expected #{subject} to have property: #{name}"
  assert_property_default(name, options[:default]) if options.key?(:default)
  assert_property_translation(name, options[:from]) if options.key?(:from)
  assert_property_transformed(name, transformed: options[:transformed]) if options.key?(:transformed)
  assert_property_required(name, required: options[:required]) if options.key?(:required)
end