Skip to content

Instantly share code, notes, and snippets.

@BenEddy
Created August 27, 2013 00:19
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 BenEddy/6348297 to your computer and use it in GitHub Desktop.
Save BenEddy/6348297 to your computer and use it in GitHub Desktop.
describe UserSearch do
describe "#results" do
it "returns all Users" do
user = User.create!
expect(described_class.new.results).to eq([user])
end
context "a :name option is provided" do
it "returns Users with a matching first name" do
user = User.create!(first_name: "William")
search = described_class.new(name: "wi")
expect(search.results).to eq([user])
end
it "returns Users with a matching last name" do
user = User.create!(last_name: "Adama")
search = described_class.new(name: "ad")
expect(search.results).to eq([user])
end
it "excludes Users lacking a matching name" do
user = User.create!(last_name: "Thrace")
search = described_class.new(name: "ad")
expect(search.results).to be_empty
end
end
context "an :email option is provided" do
it "returns Users with a matching email" do
user = User.create!(email: "adama@gmail.com")
search = described_class.new(email: "aDaMa@gMaIl")
expect(search.results).to eq([user])
end
it "excludes Users lacking a matching email" do
user = User.create!(email: "thrace@hotmail.com")
search = described_class.new(email: "adama@gmail")
expect(search.results).to be_empty
end
end
it "combines scopes" do
user_1 = User.create!(first_name: "Starbuck", email: "thrace@hotmail.com")
user_2 = User.create!(first_name: "Kara", email: "thrace@hotmail.com")
user_3 = User.create!(first_name: "Kara", email: "thrace-22@msn.com")
search = described_class.new(name: "Kara", email: "thrace@hotmail.com")
expect(search.results).to eq([user_2])
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment