diff options
| author | mo khan <mo@mokhan.ca> | 2014-10-16 19:50:19 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2014-10-16 19:50:19 -0600 |
| commit | 850ea762d0c35cd0c4c2c8fe9f685c375c67f097 (patch) | |
| tree | 5d04a4501a7396e4268f23433713d7fe5528265b | |
| parent | f074930fa38a3a7eab617aa128225cb97df27666 (diff) | |
move user repository to user/repository and add scopes to User model.
| -rw-r--r-- | app/controllers/profiles_controller.rb | 2 | ||||
| -rw-r--r-- | app/models/user/repository.rb | 24 | ||||
| -rw-r--r-- | app/models/user_repository.rb | 24 | ||||
| -rw-r--r-- | config/initializers/container.rb | 2 | ||||
| -rw-r--r-- | spec/controllers/profiles_controller_spec.rb | 37 | ||||
| -rw-r--r-- | spec/models/user/repository_spec.rb (renamed from spec/models/user_repository_spec.rb) | 4 |
6 files changed, 46 insertions, 47 deletions
diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index ac80edb4..158dc12f 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -1,6 +1,4 @@ class ProfilesController < ApplicationController - before_action :authenticate!, :except => [:index, :show] - def initialize(repository = Spank::IOC.resolve(:users)) @repository = repository super() diff --git a/app/models/user/repository.rb b/app/models/user/repository.rb new file mode 100644 index 00000000..e59c9fde --- /dev/null +++ b/app/models/user/repository.rb @@ -0,0 +1,24 @@ +class User + scope :artists, ->{ where('creations_count > 0').order(creations_count: :desc) } + scope :search_by, ->(query) { query.blank? ? self.scoped : where('name like :query or email like :query', query: "#{query}%") } + + class Repository + def initialize(connection = User) + @connection = connection + end + + delegate :all, :includes, :find, :search_by, to: :connection + + def ordered + connection.order(creations_count: :desc) + end + + def artists + connection.includes(:avatar).artists + end + + private + + attr_reader :connection + end +end diff --git a/app/models/user_repository.rb b/app/models/user_repository.rb deleted file mode 100644 index 2c14c09d..00000000 --- a/app/models/user_repository.rb +++ /dev/null @@ -1,24 +0,0 @@ -class UserRepository - def initialize(connection = User) - @connection = connection - end - - delegate :all, :includes, :find, to: :connection - - def ordered - connection.order(creations_count: :desc) - end - - def artists - connection.includes(:avatar).where('creations_count > 0').order(creations_count: :desc) - end - - def search_by(query) - return connection.all if query.blank? - connection.where('name like :query or email like :query', query: "#{query}%") - end - - private - - attr_reader :connection -end diff --git a/config/initializers/container.rb b/config/initializers/container.rb index 629a2e3c..550cb028 100644 --- a/config/initializers/container.rb +++ b/config/initializers/container.rb @@ -18,7 +18,7 @@ class ConfigureContainerCommand # repositories container.register(:cakes) { |builder| Creation } container.register(:photos) { |builder| Photo } - container.register(:users) { |builder| UserRepository.new }.as_singleton + container.register(:users) { |builder| User::Repository.new }.as_singleton end end diff --git a/spec/controllers/profiles_controller_spec.rb b/spec/controllers/profiles_controller_spec.rb index 4c1519c0..83851499 100644 --- a/spec/controllers/profiles_controller_spec.rb +++ b/spec/controllers/profiles_controller_spec.rb @@ -1,33 +1,34 @@ require 'rails_helper' describe ProfilesController do - let(:user) { create(:user) } - let!(:creation) { create(:creation, user: user) } + describe "#index" do + let!(:user) { create(:user, creations_count: 1) } - before { http_login(user) } - - describe "GET 'index'" do - before :each do - get 'index' + it "includes each user" do + get :index + expect(assigns(:profiles)).to match_array(user) + expect(response).to be_success end + end + + describe "#show" do + let(:user) { create(:user) } + let(:creation) { create(:creation, user: user) } - it "should be successful" do - response.should be_success + before :each do + get :show, id: user.id end - it "should include each user" do - assigns(:profiles).should include(user) + it "returns a successful response" do + expect(response).to be_success end - end - describe "GET 'show'" do - before :each do - User.stub(:find).with(user.id.to_s){ user } - get :show, :id => user.id + it 'returns the user' do + expect(assigns(:user)).to eql(user) end - it "should be successful" do - response.should be_success + it 'returns the users cakes' do + expect(assigns(:creations)).to match_array(user.creations) end end end diff --git a/spec/models/user_repository_spec.rb b/spec/models/user/repository_spec.rb index 2cfa5395..d748733a 100644 --- a/spec/models/user_repository_spec.rb +++ b/spec/models/user/repository_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' -describe UserRepository do - subject { UserRepository.new } +describe User::Repository do + subject { User::Repository.new } describe "#all" do let!(:user) { create(:user) } |
