From 6dca9da8b03d2f4871469a49503a6ee542901f8c Mon Sep 17 00:00:00 2001 From: Rafael Reggiani Manzo Date: Sat, 9 Nov 2013 09:30:05 -0200 Subject: [PATCH] Methods to help on listing user projects --- app/models/project_ownership.rb | 4 ++++ app/models/user.rb | 5 +++++ spec/models/project_ownership_spec.rb | 15 +++++++++++++++ spec/models/user_spec.rb | 17 +++++++++++++++++ 4 files changed, 41 insertions(+), 0 deletions(-) diff --git a/app/models/project_ownership.rb b/app/models/project_ownership.rb index cad2218..74357c0 100644 --- a/app/models/project_ownership.rb +++ b/app/models/project_ownership.rb @@ -1,4 +1,8 @@ class ProjectOwnership < ActiveRecord::Base belongs_to :user validates :project_id, presence: true + + def project + Project.find(project_id) + end end diff --git a/app/models/user.rb b/app/models/user.rb index 1995bb0..f217cb5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,4 +10,9 @@ class User < ActiveRecord::Base has_many :project_ownerships # Alert: when adding new parameters to this model, they should also be added to registrations_controller + + def projects + #raise project_ownerships.inspect + project_ownerships.map { |project_ownership| project_ownership.project } + end end diff --git a/spec/models/project_ownership_spec.rb b/spec/models/project_ownership_spec.rb index 8224c34..7343d18 100644 --- a/spec/models/project_ownership_spec.rb +++ b/spec/models/project_ownership_spec.rb @@ -4,4 +4,19 @@ describe ProjectOwnership do describe 'associations' do it { should belong_to(:user) } end + + describe 'methods' do + describe 'project' do + subject {FactoryGirl.build(:project_ownership)} + let(:project) {FactoryGirl.build(:project)} + + before :each do + Project.expects(:find).with(subject.project_id).returns(project) + end + + it 'should return the project' do + subject.project.should eq(project) + end + end + end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index bf53bb2..ac649e0 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -12,4 +12,21 @@ describe User do describe 'associations' do it { should have_many(:project_ownerships) } end + + describe 'methods' do + describe 'projects' do + subject { FactoryGirl.build(:user) } + let(:project) {FactoryGirl.build(:project)} + let(:project_ownership) {FactoryGirl.build(:project_ownership)} + + before :each do + project_ownership.expects(:project).returns(project) + subject.expects(:project_ownerships).returns([project_ownership]) + end + + it 'should return a list of projects owned by the user' do + subject.projects.should eq([project]) + end + end + end end -- libgit2 0.21.2