Commit 84b33b28
Changed files (3)
app
models
user
spec
controllers
models
app/models/user/repository.rb
@@ -17,7 +17,7 @@ class User
end
def search_with(params)
- all_matching(search_filters_for(params))
+ filter_by(search_filters_for(params))
end
private
@@ -25,21 +25,23 @@ class User
attr_reader :connection
def search_filters_for(params)
- [
- ->(users){ params[:artists].present? ? users.artists : all },
- ->(users){ users.search_by(params[:q]) },
- sort_using(params[:sort])
- ]
- end
-
- def sort_using(sort_by)
- case sort_by.try(:downcase)
- when 'oldest'
- ->(users) { users.oldest }
- when 'newest'
- ->(users) { users.newest }
- else
- ->(users) { users.by_cakes }
+ query_builder_for(params) do |builder|
+ builder.if_present(:artists) do |relation, _|
+ relation.artists
+ end
+ builder.if_present(:q) do |relation, search_term|
+ relation.search_by(search_term)
+ end
+ builder.if_present(:sort) do |relation, direction|
+ case direction.try(:downcase)
+ when 'oldest'
+ relation.oldest
+ when 'newest'
+ relation.newest
+ else
+ relation.by_cakes
+ end
+ end
end
end
end
spec/controllers/cakes_controller_spec.rb
@@ -3,11 +3,6 @@ require 'rails_helper'
describe CakesController do
let(:user) { create(:user) }
- before :each do
- #photo = 'spec/fixtures/images/example.png'
- #cake.photos.create(image: photo)
- end
-
describe "#index" do
let!(:cakes) { create(:category, slug: "cakes") }
let!(:cookies) { create(:category, slug: "cookies") }
spec/models/creation_spec.rb
@@ -12,20 +12,6 @@ describe Creation do
end
end
- describe "when loading a bunch of creations" do
- let!(:oldest) { create(:creation) }
- let!(:newest) { create(:creation) }
- let(:results) { Creation.all }
-
- it "should load the newest first" do
- expect(results.first).to eql(newest)
- end
-
- it "should load the oldest last" do
- expect(results.last).to eql(oldest)
- end
- end
-
describe "#liked_by" do
let(:user) { create(:user) }
let(:creation) { create(:creation) }