Sha256: a0acc8fe602b51bd3b3d45f0842947d42db5abece703b42a7915beacb8daea39

Contents?: true

Size: 1.84 KB

Versions: 3

Compression:

Stored size: 1.84 KB

Contents

require File.dirname(__FILE__) + '/spec_helper'

def expect_order(test, control)
  test.map { |t| [t.first_name, t.last_name] }.should == control.map { |c| [c[:first_name], c[:last_name]] }
end

describe OrderFu do
  it 'orders by "attr ASC"' do
    expect_order(
      OrderFuControl.find(:all, :order => :last_name.asc),
      ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
    )
  end

  it 'orders by "attr DESC"' do
    expect_order(
      OrderFuControl.find(:all, :order => :last_name.desc),
      ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
    )
  end

  it 'orders by "attr ASC, attr DESC"' do
    expect_order(OrderFuControl.find(:all, :order => [:first_name.asc, :last_name.desc]), [
      {:first_name => 'Adam', :last_name => 'Zentowski' },
      {:first_name => 'Adam', :last_name => 'Yevgevi'   },
      {:first_name => 'Bert', :last_name => 'Xander'    },
      {:first_name => 'Clif', :last_name => 'Walters'   },
    ])
  end

  it 'orders by "attr DESC, attr ASC"' do
    expect_order(OrderFuControl.find(:all, :order => [:first_name.desc, :last_name.asc]), [
      {:first_name => 'Adam', :last_name => 'Zentowski' },
      {:first_name => 'Adam', :last_name => 'Yevgevi'   },
      {:first_name => 'Bert', :last_name => 'Xander'    },
      {:first_name => 'Clif', :last_name => 'Walters'   },
    ].reverse)
  end

  it 'orders from symbol without interference'do
    expect_order(
      OrderFuControl.find(:all, :order => :last_name),
      ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
    )
  end

  it 'orders from string without interference'do
    expect_order(
      OrderFuControl.find(:all, :order => 'last_name'),
      ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
    )

    expect_order(
      OrderFuControl.find(:all, :order => 'last_name DESC'),
      ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
    )
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sprsquish-order_fu-0.1.0 spec/order_fu_spec.rb
sprsquish-order_fu-0.1.2 spec/order_fu_spec.rb
sprsquish-order_fu-0.2.0 spec/order_fu_spec.rb