Skip to content

Instantly share code, notes, and snippets.

@rewinfrey
Created March 14, 2014 05:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rewinfrey/9542596 to your computer and use it in GitHub Desktop.
Save rewinfrey/9542596 to your computer and use it in GitHub Desktop.
Updated large spec
shared_examples_for 'a user search engine' do
let(:payment_service) { service_factory.create(:payment) }
let(:db) { search_memory_repository }
def ids(users)
users.map { |user| user[:id] }
end
def user_search(options)
Acme::Users::Search.new(db).search(options)
end
def user_search_count(options)
Acme::Users::Search.new(db).count(options)
end
it 'sorts by last_logged_in_at' do
user1 = create_user!(last_logged_in_at: imprecise_time(1.day.ago))
user2 = create_user!(last_logged_in_at: imprecise_time(2.days.ago))
ids(user_search(sort: :last_logged_in_at, direction: :desc)).should == ids([user1, user2])
ids(user_search(sort: :last_logged_in_at, direction: :asc)).should == ids([user2, user1])
user_search_count(sort: :last_logged_in_at, direction: :asc).should == 2
end
it 'sorts by created_at' do
user1 = create_user!(created_at: imprecise_time(1.day.ago))
user2 = create_user!(created_at: imprecise_time(2.days.ago))
ids(user_search(sort: :created_at, direction: :desc)).should == ids([user1, user2])
ids(user_search(sort: :created_at, direction: :asc)).should == ids([user2, user1])
user_search_count(sort: :created_at, direction: :asc).should == 2
end
it 'sorts by account_confirmed' do
user1 = create_user!(account_confirmed: false)
user2 = create_user!(account_confirmed: true)
ids(user_search(sort: :account_confirmed, direction: :asc)).should == ids([user1, user2])
ids(user_search(sort: :account_confirmed, direction: :desc)).should == ids([user2, user1])
end
it 'sorts by account_confirmed' do
user2 = create_user!(account_confirmed: true)
user1 = create_user!(account_confirmed: false)
ids(user_search(sort: :account_confirmed, direction: :asc)).should == ids([user1, user2])
ids(user_search(sort: :account_confirmed, direction: :desc)).should == ids([user2, user1])
end
...
# 1000+ lines
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment