Skip to content

Instantly share code, notes, and snippets.

@rewinfrey
Last active August 29, 2015 13:57
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/9542340 to your computer and use it in GitHub Desktop.
Save rewinfrey/9542340 to your computer and use it in GitHub Desktop.
Large test example
shared_examples_for 'a user search engine' do
let(:payment_service) { service_factory.create(:payment) }
let(:db) { search_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
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment