Sha256: a30bcb1ef8ec1a01ade22ea9771b1f0cee90e95b4b4e389b7245528934b9d9bd

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

# encoding: utf-8
require 'spec_helper'
require 'ndd/rspec/matchers'
require 'ndd/rspec/matchers/shared_examples'


describe 'be sorted by', { :type => 'matcher' } do

  SORTED_ARRAY = [1, 2, 3].freeze
  UNSORTED_ARRAY = [1, 3, 2].freeze

  it_behaves_like 'an RSpec matcher',
                  :valid_value => SORTED_ARRAY,
                  :invalid_value => UNSORTED_ARRAY do
    let(:matcher) { be_sorted_by(:to_i) }
  end

  it 'matches when actual is sorted according to the given attribute' do
    expect(SORTED_ARRAY).to be_sorted_by(:to_i)
  end

  it 'does not match when actual is not sorted according to the given attribute' do
    expect(UNSORTED_ARRAY).to_not be_sorted_by(:to_i)
  end

  it 'describes itself' do
    matcher = be_sorted_by(:to_i)
    matcher.matches?(SORTED_ARRAY)
    expect(matcher.description).to eq("be sorted by 'to_i'")
  end

  it 'provides message on #failure_message' do
    matcher = be_sorted_by(:to_i)
    matcher.matches?(UNSORTED_ARRAY)

    expect(matcher.failure_message).to eq <<-MESSAGE

expected '[1, 3, 2]' to be sorted by 'to_i'
expected attributes: [1, 2, 3]
     got attributes: [1, 3, 2]

    MESSAGE
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ndd-rspec-1.0.0 spec/ndd/rspec/matchers/be_sorted_by_spec.rb