diff options
Diffstat (limited to 'spec/support/helpers/sorting_helper.rb')
-rw-r--r-- | spec/support/helpers/sorting_helper.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/spec/support/helpers/sorting_helper.rb b/spec/support/helpers/sorting_helper.rb index 3801d25fb63..f19f8c12928 100644 --- a/spec/support/helpers/sorting_helper.rb +++ b/spec/support/helpers/sorting_helper.rb @@ -17,4 +17,35 @@ module SortingHelper click_link value end end + + def nils_last(value) + NilsLast.new(value) + end + + class NilsLast + include Comparable + + attr_reader :value + delegate :==, :eql?, :hash, to: :value + + def initialize(value) + @value = value + @reverse = false + end + + def <=>(other) + return unless other.is_a?(self.class) + return 0 if value.nil? && other.value.nil? + return 1 if value.nil? + return -1 if other.value.nil? + + int = value <=> other.value + @reverse ? -int : int + end + + def -@ + @reverse = true + self + end + end end |