Commit 850ea762
Changed files (6)
app
controllers
models
config
initializers
spec
controllers
models
user
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()
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
app/models/user_repository.rb
@@ -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
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
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
spec/models/user_repository_spec.rb → 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) }