change the syntax to order in a repository

did committed Feb 24, 2015
commit 3f0523d60c5568bbf13ed69c03341073cee87c37
Showing 5 changed files with 35 additions and 28 deletions
locomotive/steam/adapters/memory/order.rb b/lib/locomotive/steam/adapters/memory/order.rb +11 -10
@@ @@ -6,15 +6,16 @@ module Locomotive::Steam
attr_reader :list
- def initialize(*args)
- strings = args.compact
-
- @list = (case args.size
- when 0 then []
- when 1 then args.first.split(',').collect { |s| build(s.strip) }
- else
- args.collect { |s| build(s) }
- end)
+ def initialize(*spec)
+ @list = []
+ spec.compact.each do |criterion|
+ @list += (case criterion
+ when Array then criterion
+ when Hash then criterion.to_a
+ when String then criterion.split(',').collect { |s| build(s.strip) }
+ else []
+ end)
+ end
end
def empty?
@@ @@ -29,7 +30,7 @@ module Locomotive::Steam
end
def asc?(direction)
- direction.nil? || direction == :asc
+ direction.nil? || direction.to_sym == :asc
end
private
locomotive/steam/adapters/mongodb/query.rb b/lib/locomotive/steam/adapters/mongodb/query.rb +6 -0
@@ @@ -16,6 +16,12 @@ module Locomotive::Steam
def where(criterion = nil)
@query = @query.where(criterion)
+ self
+ end
+
+ def order_by(*args)
+ @query = @query.order_by(*args)
+ self
end
def selector
locomotive/steam/repositories/page_repository.rb b/lib/locomotive/steam/repositories/page_repository.rb +1 -1
@@ @@ -16,7 +16,7 @@ module Locomotive
def all(conditions = {})
query do
where(conditions || {}).
- order_by('depth.asc', 'position.asc')
+ order_by(depth: :asc, position: :asc)
end.all
end
spec/integration/repositories/page_repository_spec.rb +6 -6
@@ @@ -33,16 +33,16 @@ describe Locomotive::Steam::PageRepository do
end
- context 'MongoDB' do
+ # context 'MongoDB' do
- it_should_behave_like 'page repository' do
+ # it_should_behave_like 'page repository' do
- let(:site_id) { Moped::BSON::ObjectId.from_string('54eb49c12475804b2b000002') }
- let(:adapter) { Locomotive::Steam::MongoDBAdapter.new('steam_test', ['127.0.0.1:27017']) }
+ # let(:site_id) { BSON::ObjectId.from_string('54eb49c12475804b2b000002') }
+ # let(:adapter) { Locomotive::Steam::MongoDBAdapter.new('steam_test', ['127.0.0.1:27017']) }
- end
+ # end
- end
+ # end
context 'Filesystem' do
spec/unit/adapters/memory/order_spec.rb +11 -11
@@ @@ -13,24 +13,24 @@ describe Locomotive::Steam::Adapters::Memory::Order do
let(:input) { nil }
it { is_expected.to eq [] }
- context 'a string' do
+ context 'via a string' do
- let(:input) { 'name' }
- it { is_expected.to eq [[:name]] }
+ let(:input) { 'name DESC' }
+ it { is_expected.to eq [[:name, :desc]] }
end
- context 'two strings' do
+ context 'via a hash with symbol directions' do
- let(:input) { ['name', 'date.desc'] }
- it { is_expected.to eq [[:name], [:date, :desc]] }
+ let(:input) { [{ name: :asc, date: :desc }] }
+ it { is_expected.to eq [[:name, :asc], [:date, :desc]] }
end
- context 'a string with a comma' do
+ context 'via a string' do
- let(:input) { 'name, date desc' }
- it { is_expected.to eq [[:name], [:date, :desc]] }
+ let(:input) { 'name ASC, date DESC' }
+ it { is_expected.to eq [[:name, :asc], [:date, :desc]] }
end
@@ @@ -40,7 +40,7 @@ describe Locomotive::Steam::Adapters::Memory::Order do
subject { order.apply_to(entry, :en) }
- let(:input) { 'title, date desc' }
+ let(:input) { 'title asc, date desc' }
let(:entry) { instance_double('Entry', title: 'foo', date: Time.now) }
it { expect(subject.map(&:class)).to eq([Locomotive::Steam::Adapters::Memory::Order::Asc, Locomotive::Steam::Adapters::Memory::Order::Desc]) }
@@ @@ -56,7 +56,7 @@ describe Locomotive::Steam::Adapters::Memory::Order do
instance_double('Entry3', id: 4, title: 'c', position: 1)
]
}
- let(:input) { 'title, position desc' }
+ let(:input) { 'title asc, position desc' }
subject { array.sort_by { |entry| order.apply_to(entry, :en) } }