Commit 888cde93
Changed files (2)
app
models
user
spec
models
user
app/models/user/repository.rb
@@ -1,6 +1,7 @@
class User
+ include Queryable
scope :artists, ->{ where('creations_count > 0').order(creations_count: :desc) }
- scope :search_by, ->(query) { query.blank? ? self.all : where('name like :query or email like :query', query: "#{query}%") }
+ scope :search_by, ->(query) { query.blank? ? self.all : where('users.name like :query or users.email like :query', query: "#{query}%") }
class Repository < SimpleDelegator
def initialize(connection = User)
@@ -17,11 +18,18 @@ class User
end
def search_with(params)
- artists
+ all_matching(search_filters_for(params))
end
private
attr_reader :connection
+
+ def search_filters_for(params)
+ [
+ ->(users){ users.artists },
+ ->(users){ params[:q].blank? ? users.all : users.search_by(params[:q]) },
+ ]
+ end
end
end
spec/models/user/repository_spec.rb
@@ -42,4 +42,15 @@ describe User::Repository do
expect(results).to_not include(mo)
end
end
+
+ describe "#search_with" do
+ let!(:mo) { create(:user, creations_count: 1) }
+ let!(:bob) { create(:user, creations_count: 1) }
+
+ it 'returns all artists with the matching name' do
+ results = subject.search_with(q: bob.name)
+ expect(results).to include(bob)
+ expect(results).to_not include(mo)
+ end
+ end
end