diff options
| author | mo <mokha@cisco.com> | 2017-05-06 09:42:16 -0600 |
|---|---|---|
| committer | mo <mokha@cisco.com> | 2017-05-06 09:42:16 -0600 |
| commit | 84b33b289d9d4be0ea96e577b91adb7bf4f4016c (patch) | |
| tree | 9ebd62577cdb187ef131a9540e69c5046f7a174f | |
| parent | 845909163daeb2410099167cd289022e107be2d2 (diff) | |
use query builder.
| -rw-r--r-- | app/models/user/repository.rb | 34 | ||||
| -rw-r--r-- | spec/controllers/cakes_controller_spec.rb | 5 | ||||
| -rw-r--r-- | spec/models/creation_spec.rb | 14 |
3 files changed, 18 insertions, 35 deletions
diff --git a/app/models/user/repository.rb b/app/models/user/repository.rb index d067183b..36eacea0 100644 --- a/app/models/user/repository.rb +++ b/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 diff --git a/spec/controllers/cakes_controller_spec.rb b/spec/controllers/cakes_controller_spec.rb index b9a324eb..c1f80789 100644 --- a/spec/controllers/cakes_controller_spec.rb +++ b/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") } diff --git a/spec/models/creation_spec.rb b/spec/models/creation_spec.rb index badfb276..4a900b68 100644 --- a/spec/models/creation_spec.rb +++ b/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) } |
