Module: Shoulda::Matchers::Util
- Defined in:
- lib/shoulda/matchers/util.rb
Constant Summary collapse
- MAXIMUM_LENGTH_OF_VALUE_TO_DISPLAY =
500
Class Method Summary collapse
- .a_or_an(next_word) ⇒ Object
- .deconstantize(path) ⇒ Object
- .dummy_value_for(column_type, array: false) ⇒ Object
- .indent(string, width) ⇒ Object
- .inspect_hash(hash) ⇒ Object
- .inspect_range(range) ⇒ Object
- .inspect_value(value) ⇒ Object
- .inspect_values(values) ⇒ Object
- .safe_constantize(camel_cased_word) ⇒ Object
Class Method Details
.a_or_an(next_word) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/shoulda/matchers/util.rb', line 40 def self.a_or_an(next_word) if next_word =~ /\A[aeiou]/i && next_word != 'unique' "an #{next_word}" else "a #{next_word}" end end |
.deconstantize(path) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/shoulda/matchers/util.rb', line 9 def self.deconstantize(path) if defined?(ActiveSupport::Inflector) && ActiveSupport::Inflector.respond_to?(:deconstantize) ActiveSupport::Inflector.deconstantize(path) else path.to_s[0...(path.to_s.rindex('::') || 0)] end end |
.dummy_value_for(column_type, array: false) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/shoulda/matchers/util.rb', line 86 def self.dummy_value_for(column_type, array: false) if array [dummy_value_for(column_type, array: false)] else case column_type when :integer 0 when :date Date.new(2100, 1, 1) when :datetime, :timestamp, :timestamptz DateTime.new(2100, 1, 1) when :time Time.new(2000, 1, 1) when :uuid SecureRandom.uuid when :boolean true else 'dummy value' end end end |
.indent(string, width) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/shoulda/matchers/util.rb', line 33 def self.indent(string, width) return if !string indentation = ' ' * width string.split(/[\n\r]/).map { |line| indentation + line }.join("\n") end |
.inspect_hash(hash) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/shoulda/matchers/util.rb', line 72 def self.inspect_hash(hash) String.new('‹{').tap do |output| output << hash.map { |key, value| if key.is_a?(Symbol) "#{key}: #{value.inspect}" else "#{key.inspect} => #{value.inspect}" end }.join(', ') output << '}›' end end |
.inspect_range(range) ⇒ Object
68 69 70 |
# File 'lib/shoulda/matchers/util.rb', line 68 def self.inspect_range(range) "#{inspect_value(range.begin)} to #{inspect_value(range.end)}" end |
.inspect_value(value) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/shoulda/matchers/util.rb', line 48 def self.inspect_value(value) case value when Hash inspect_hash(value) when Range inspect_range(value) else inspected_value = value.inspect if inspected_value.length > MAXIMUM_LENGTH_OF_VALUE_TO_DISPLAY "‹#{inspected_value[0, MAXIMUM_LENGTH_OF_VALUE_TO_DISPLAY]}...›" else "‹#{inspected_value}›" end end end |
.inspect_values(values) ⇒ Object
64 65 66 |
# File 'lib/shoulda/matchers/util.rb', line 64 def self.inspect_values(values) values.map { |value| inspect_value(value) } end |
.safe_constantize(camel_cased_word) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/shoulda/matchers/util.rb', line 19 def self.safe_constantize(camel_cased_word) if defined?(ActiveSupport::Inflector) && ActiveSupport::Inflector.respond_to?(:safe_constantize) ActiveSupport::Inflector.safe_constantize(camel_cased_word) else begin camel_cased_word.constantize rescue NameError nil end end end |