Sha256: b8c508e8470157bd8cd3ad0cbb4c109c712399abdf1082435d453b29f0b77888

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

RSpec.describe ROM::Relation, '#order' do
  subject(:relation) { relations[:users] }

  include_context 'users and tasks'

  before do
    relation.insert(id: 3, name: 'Jade')
  end

  with_adapters do
    it 'orders by provided attribute names' do
      ordered = relation.order(:name, :id)

      expect(ordered.to_a).
        to eql([{ id: 3, name: 'Jade' }, { id: 1, name: 'Jane' }, { id: 2, name: 'Joe' }])
    end

    it 'orders by provided attribute using a block' do
      ordered = relation.
                  qualified.
                  select(:id, :name).
                  left_join(:tasks, user_id: :id).
                  order { name.qualified.desc }

      expect(ordered.to_a).
        to eql([{ id: 2, name: 'Joe' }, { id: 1, name: 'Jane' }, { id: 3, name: 'Jade' }])
    end

    it 'orders by provided attributes using a block' do
      ordered = relation.
                  qualified.
                  select(:id, :name).
                  left_join(:tasks, user_id: :id).
                  order { [name.qualified.desc, id.qualified.desc] }

      expect(ordered.to_a).
        to eql([{ id: 2, name: 'Joe' }, { id: 1, name: 'Jane' }, { id: 3, name: 'Jade' }])
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rom-sql-1.0.0.rc2 spec/unit/relation/order_spec.rb
rom-sql-1.0.0.rc1 spec/unit/relation/order_spec.rb
rom-sql-1.0.0.beta3 spec/unit/relation/order_spec.rb
rom-sql-1.0.0.beta2 spec/unit/relation/order_spec.rb
rom-sql-1.0.0.beta1 spec/unit/relation/order_spec.rb