Commit 84b33b28

mo <mokha@cisco.com>
2017-05-06 15:42:16
use query builder.
1 parent 8459091
Changed files (3)
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) }