Sha256: 4659d58d72ef559b1d77c1545ead6fd1674b10161f1baf15db17bb219be05eef

Contents?: true

Size: 1.49 KB

Versions: 18

Compression:

Stored size: 1.49 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

  with_adapters :postgres, :mysql do
    it 'orders by virtual attributes' do
      ordered = relation.
                  select { string::concat(id, '-', name).as(:uid) }.
                  order(:uid)

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

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
rom-sql-1.3.5 spec/unit/relation/order_spec.rb
rom-sql-1.3.4 spec/unit/relation/order_spec.rb
rom-sql-2.0.0.beta2 spec/unit/relation/order_spec.rb
rom-sql-2.0.0.beta1 spec/unit/relation/order_spec.rb
rom-sql-1.3.3 spec/unit/relation/order_spec.rb
rom-sql-1.3.2 spec/unit/relation/order_spec.rb
rom-sql-1.3.1 spec/unit/relation/order_spec.rb
rom-sql-1.3.0 spec/unit/relation/order_spec.rb
rom-sql-1.2.2 spec/unit/relation/order_spec.rb
rom-sql-1.2.1 spec/unit/relation/order_spec.rb
rom-sql-1.2.0 spec/unit/relation/order_spec.rb
rom-sql-1.1.2 spec/unit/relation/order_spec.rb
rom-sql-1.1.1 spec/unit/relation/order_spec.rb
rom-sql-1.1.0 spec/unit/relation/order_spec.rb
rom-sql-1.0.3 spec/unit/relation/order_spec.rb
rom-sql-1.0.2 spec/unit/relation/order_spec.rb
rom-sql-1.0.1 spec/unit/relation/order_spec.rb
rom-sql-1.0.0 spec/unit/relation/order_spec.rb